Orodha ya maudhui:

Sehemu ya 3: GPIO: Mkutano wa ARM: Mfuasi wa Mstari: TI-RSLK: 6 Hatua
Sehemu ya 3: GPIO: Mkutano wa ARM: Mfuasi wa Mstari: TI-RSLK: 6 Hatua

Video: Sehemu ya 3: GPIO: Mkutano wa ARM: Mfuasi wa Mstari: TI-RSLK: 6 Hatua

Video: Sehemu ya 3: GPIO: Mkutano wa ARM: Mfuasi wa Mstari: TI-RSLK: 6 Hatua
Video: Fysetc Spider v1.1 – Основы 2024, Julai
Anonim
Image
Image
Vifaa
Vifaa

Halo. Hii ni sehemu inayofuata ambapo tunaendelea kutumia mkusanyiko wa ARM (badala ya lugha ya kiwango cha juu). Msukumo wa Agizo hili ni Lab 6 ya Chombo cha Kujifunza cha Roboti za Texas, au TI-RSLK.

Tutatumia microcontroller kutoka kwa kit, bodi ya maendeleo ya LaunchPad ya MSP432, lakini labda utapata kitu muhimu kuchukua kutoka kwa hii inayoweza kufundishwa hata ikiwa hutumii LaunchPad, au kufuata TI. mtaala.

Tulianza na Mkutano wa Kutambulisha wa ARM, mazingira ya maendeleo, na jinsi ya kufanya mradi.

Agizo linalofuata juu ya Mkutano wa ARM ulianzisha jinsi ya kuingiliana na pembejeo / pato (GPIO).

Kisha tukapanua maarifa yetu, na tukaanzisha kazi, kudhibiti LED na swichi.

Sasa na hii inayoweza kufundishwa, tunaweza kutumia kile tumejifunza kufanya kitu cha kufurahisha zaidi, muhimu zaidi: kugundua laini.

Hii inaweza kutusaidia baadaye tunapojenga roboti inayofuata mfuasi.

Katika mtaala, programu nyingi hufanywa kwa C au C ++, lakini inasaidia kupata mazoea na mkutano, kabla ya kuanza kutegemea lugha za kiwango cha juu, na maktaba.

Hatua ya 1: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa

Sitaki kukarabati vifaa kwa undani, kwani tayari kuna vyanzo, lakini tutaongeza maelezo pale inapohitajika.

Kwa hii inayoweza kufundishwa, tutatumia Sura ya Sura ya Tafakari kutoka Pololu, kwani inakuja kama sehemu ya TI-RSLK (kitanda cha roboti). Ni ile iliyotumiwa katika kozi hiyo, na kwenye Lab 6 ya mtaala.

Ikiwa huna hiyo, unaweza kutumia kigunduzi chochote cha IR (au mfululizo wao) ambayo hutoa ishara ya dijiti, JUU au CHINI, kwa uwepo na kutokuwepo.

Sensorer ya safu ni bora kwa sababu inaweza kusaidia kugundua ikiwa tuko sawa katikati ya laini, au tukiwa upande mmoja. Pamoja, kama tutakavyoona baadaye, inaweza kutusaidia kugundua pembe ya roboti kwa heshima na laini.

Safu ya kutafakari ina detectors karibu sana karibu na kila mmoja. Hiyo inamaanisha tunapaswa kupata ishara nyingi za kugundua, kulingana na unene wa laini.

Ikiwa ndivyo, basi ikiwa roboti hailingani moja kwa moja na laini, basi inapaswa kurudisha pato ambalo laini ni pana kuliko inavyopaswa kuwa (kwa sababu tuko pembe).

Kwa maelezo bora ya hapo juu, angalia hati ya Lab 6.

Kwa msaada katika wiring / kuunganisha sensorer kwa bodi ya maendeleo ya LaunchPad ya MSP432, hapa kuna maagizo ya kusaidia.

Nimeongeza pia maelekezo sawa (sawa?) Ya pdf kwa Hatua hii.

Ikiwa unasoma kwa uangalifu nyaraka za Pololu, zinaelezea sababu ya "3.3V bypass", ambayo utataka kuruka ikiwa unatumia 3.3V badala ya 5V.

Kwa kuwa bado hatujaunda roboti lakini badala yake tunajifunza tu juu ya mkusanyiko wa ARM na pia jinsi ya kuingiliana na vipande (mifumo ndogo) ya roboti, sio lazima tufuate maagizo hapo juu kwa barua.

Kwa sasa, kuunganisha safu ya sensorer ya laini huchemsha / hupunguza hadi yafuatayo:

  • unganisha 3.3V na GND kutoka bodi ya MSP432 hadi safu ya sensorer.
  • unganisha pini ya bandari (ninashauri P5.3) kutoka kwa MSP432 hadi kwenye taa ya kuwezesha ya LED kwenye safu ya sensorer ya laini. Pini hiyo kwenye sensor iko kati ya 3.3V na GND.
  • unganisha pini / bits zote nane za bandari moja (Ninashauri P7.0 kupitia P7.7) kwa pini nane za safu ya sensa iliyoitwa "1" kupitia "8". Hizi ni mistari ambayo itaenda juu au chini kulingana na kile wanahisi.

Kama unavyoona kwenye picha za hatua hii, na kwenye video, sikuunganisha sensorer kwenye chasisi ya roboti, kwa sababu nilitaka urahisi wa programu, utatuzi, upimaji, ujifunzaji.

Kwa hivyo na kila kitu kimeunganishwa, tuko tayari kuingia kwenye programu.

Hatua ya 2: Kufuatia Mstari

Mstari Ufuatao
Mstari Ufuatao
Mstari Ufuatao
Mstari Ufuatao

Sensor ya safu ya kutafakari ni nzuri sana kwa sababu inaweza kusaidia angalau njia mbili.

  • Tambua roboti iliyo katikati ya laini au ikienda upande mmoja.
  • Je! Robot imewekwa katika mwelekeo wa mstari, au iko kwa pembe.

Kila kigunduzi cha safu hiyo kimsingi hutoa habari moja, iwe ya juu au ya chini.

Wazo ni kuchanganya bits hizo zote kuwa nambari moja au muundo-kidogo, na utumie muundo huo kufanya maamuzi (ili kusonga kwa usahihi).

Hatua ya 3: Kabla Hatujaanza Kweli…

.. tunahitaji kujifunza kitu kipya kuhusu programu ya mkutano wa ARM. Na simaanishi tu maagizo mengine. Hizo huwa ndogo.

Hadi sasa hatujatumia "stack" katika programu zetu.

Tumetegemea kutumia rejista nyingi za msingi za cpu ulimwenguni kote kwa njia tofauti tofauti.

Jambo moja ambalo tulifanya ni kuokoa na kurejesha anwani ya LR (rejista ya kiungo) kwa kazi moja - ile ambayo iliita kazi zingine kadhaa. (Ninatumia "kazi" na "subroutine" kwa kubadilishana hapa).

Kile tumekuwa tukifanya sio nzuri. Je! Ikiwa tunataka kuweka kazi zingine? Je! Ikiwa tuna zaidi ya kiwango kimoja cha viota?

Katika mifano iliyopita, tulichagua kutumia rejista R6 kama hifadhi ya LR au anwani ya kurudi. Lakini ikiwa tunataka kufanya kiota zaidi / kirefu, hatuwezi kuendelea kubadilisha thamani ya R6. Tutalazimika kuchukua rejista nyingine. Na mwingine. Na kisha inakuwa mzigo kuweka wimbo wa daftari gani la msingi la cpu linaloshikilia LR ipi itumie kazi ipi.

Kwa hivyo sasa tunaangalia "stack".

Hatua ya 4: Stack

Hapa kuna vifaa vya kusoma vinavyoelezea stack.

Mimi ni mtetezi mkubwa wa maoni kadhaa:

  • nadharia nyingi tu kama inavyotakiwa, nenda kwa vitendo haraka
  • jifunze inavyohitajika, zingatia kufanya kitu fulani na sio mazoezi tu au mifano isiyo na sababu.

Kuna hati nyingi za ARM na MSP432 mkondoni ambazo huzungumza juu ya mpororo, kwa hivyo haitarekebisha yote hayo. Pia nitaweka utumiaji wa stack hapa kwa kiwango cha chini - kuokoa anwani ya kurudi (Rejista ya Kiungo).

Kwa kweli, tunahitaji maagizo tu:

PUSH {orodha ya usajili}

POP {orodha ya usajili)

Au, kwa upande wetu, haswa:

PUSH {LR}

POP {LR}

Kwa hivyo, kazi ya mkutano / subroutine ingeonekana kama hivyo:

furahaLabel:.asmfunc

PUSH {LR}; hii labda inapaswa kuwa moja ya maagizo ya kwanza juu ya kuingia.; fanya nambari zaidi hapa..; blah.. blah… blah…; sawa, tumemaliza na kazi, tayari kurudi kurudi kwenye kazi ya kupiga simu POP {LR}, hii inarejesha anwani sahihi ya kurudi tena kwa kupiga simu; kazi. BX LR; kurudi.endasmfunc

Video hupitia mfano wa moja kwa moja wa kazi kadhaa za kiota.

Hatua ya 5: Programu

Faili iliyoambatishwa iliyoandikwa "MSP432_Sura…" ina habari nyingi nzuri juu ya bandari za MSP432, na kutoka kwa hati hiyo tunapata bandari zifuatazo, rejista, anwani, nk ni ya tarehe kidogo, hata hivyo. Walakini, sikuona anwani za kina zilizoorodheshwa kwa Port 5 na zaidi. (tu "kazi mbadala"). Lakini bado ni muhimu.

Tutatumia Bandari mbili. P5, P7, P1, na P2.

P5.3 (moja kidogo) pato litakuwa kudhibiti IR-kuwezesha kwenye sensorer. Tunatumia P5.3 kwa sababu ni pini iliyo wazi kwenye kichwa sawa na viunganisho vingine vya MSP432 vinaenda kwenye safu ya sensorer.

P7.0 kupitia P7.7 itakuwa pembejeo nane ambazo zinakusanya data kutoka kwa sensor; inachokiona "."

P1.0 ni LED moja nyekundu na tunaweza kutumia hiyo kutupa dalili za data.

P2.0, P2.1, P2.2 ni RGB LED na tunaweza kutumia hiyo pia, na uwezekano wake tofauti wa rangi, kutupatia dalili ya data ya sensorer.

Ikiwa umepitia Maagizo yaliyotangulia yanayohusiana na haya yote, basi tayari unajua jinsi ya kuanzisha programu.

Kuwa na sehemu ya tamko kwa bandari na bits, nk.

Utakuwa na sehemu "kuu".

Inapaswa kuwa na kitanzi, ambapo tunaendelea kusoma data kutoka kwa P7, kufanya uamuzi wa data hiyo, na kuwasha taa mbili ipasavyo.

Hapa tena kuna anwani za Usajili wa Bandari:

  • GPIO P1: 0x4000 4C00 + 0 (hata anwani)
  • GPIO P2: 0x4000 4C00 + 1 (anwani isiyo ya kawaida)
  • GPIO P3: 0x4000 4C00 + 20 (hata anwani)
  • GPIO P4: 0x4000 4C00 + 21 (anwani zisizo za kawaida)
  • GPIO P5: 0x4000 4C00 + 40 (hata anwani)
  • GPIO P6: 0x4000 4C00 + 41 (anwani isiyo ya kawaida)
  • GPIO P7: 0x4000 4C00 + 60 (hata anwani)
  • GPIO P8: 0x4000 4C00 + 61 (anwani isiyo ya kawaida)
  • GPIO P9: 0x4000 4C00 + 80 (hata anwani)
  • GPIO P10: 0x4000 4C00 + 81 (anwani isiyo ya kawaida)

Kilicho kwa herufi kubwa ndicho tutakachotumia kwa Maagizo haya.

Hatua za Programu Kusoma Vigunduzi vya IR

Ifuatayo ni nambari ya psuedo ya kuandika programu hiyo kwa C, lakini bado ni muhimu, na tutaifuata kwa karibu katika toleo la mkutano.

programu kuu0) Anzisha // bandari wakati (1) {1) Weka P5.3 juu (washa IR LED) 2) Fanya P7.0 kuwa pato, na uweke juu (kuchaji capacitor) 3) Subiri sisi 10, Clock_Delay1us (10); 4) Fanya P7.0 ingizo 5) Endesha kitanzi hiki mara 10, 000 a) Soma P7.0 (inabadilisha voltage kwenye P7.0 kuwa binary) b) Pato la binary kuwa P1.0 (hukuruhusu kuona binary katika wakati halisi 6) Weka P5.3 chini (zima LED ya IR, nguvu ya kuokoa) 7) Subiri 10 ms, Clock_Delay1ms (10); } // kurudia (kurudi kwa wakati ())

Hatua ya 6: Wacha tuboreshe Msimbo

Madhumuni au matumizi ya safu ya LED ya Pololu IR ni kugundua laini, na kujua ikiwa roboti (ya baadaye) imejikita moja kwa moja kwenye laini, au kwa upande mmoja. Pia, kwa kuwa laini ina unene fulani, ikiwa safu ya sensorer inaelekezwa moja kwa moja kwenye mstari, N idadi ya sensorer itakuwa na usomaji tofauti kuliko zingine, wakati ikiwa safu ya IR ya IR iko katika pembe fulani (sio ya kutazama), basi N + 1 au N + 2 IR LED / jozi za detector sasa zinapaswa kutoa usomaji tofauti.

Kwa hivyo, kulingana na sensorer ngapi zinaonyesha uwepo wa laini, tunapaswa kujua ikiwa tumejikita, na ikiwa tuna angled au la.

Kwa jaribio hili la mwisho, wacha tu tuone ikiwa tunaweza kupata LED nyekundu na RGB LED ili kutupa habari zaidi juu ya safu ya sensa inatuambia.

Video hiyo inaingia kwa maelezo yote. Nambari ya mwisho pia imeambatanishwa.

Hii inakamilisha safu ya Mkutano wa ARM unaohusiana na GPIO. Tunatarajia kurudi na Bunge zaidi la ARM baadaye.

Asante.

Ilipendekeza: