Obsah:
- Krok 1: Skočme rovno dovnútra
- Krok 2: Vylepšenie kódu - pridanie funkcie
- Krok 3: Pridajte oneskorenie zaneprázdnenej slučky
- Krok 4: ARM Architecture Call Call Standard (AAPCS)
- Krok 5: Funkcia s parametrom - vnorené funkcie
- Krok 6: Vstup GPIO - pridajte prepínače
Video: ČASŤ 2 - MONTÁŽ GPIO ARM - RGB - FUNKČNÉ HOVORY - Prepínače: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
V časti 1 sme sa dozvedeli, ako prepnúť jednu červenú diódu LED na vývojovej doske MSP432 LaunchPad od spoločnosti Texas Instruments pomocou zostavy namiesto C / C ++.
V tomto návode urobíme niečo podobné - ovládame RGB LED, ktorá je tiež na tej istej doske.
Dúfame, že na tejto ceste budeme rozširovať svoje znalosti o montáži ARM, a nielen sa zabávať pri rozsvietení niektorých LED diód.
Krok 1: Skočme rovno dovnútra
Skutočne, prvé video hovorí za všetko. Nie je viac čo dodať.
Hlavným bodom je priniesť domov myšlienku, že každý I/O port na MSP432 pozostáva z bloku „registračných“adries, ktoré zase pozostávajú z niekoľkých bitov.
Ďalej sú bity zoskupené ortogonálne. To znamená, že bit 0 každej adresy registra sa vzťahuje na rovnaký externý vstupno -výstupný pin.
Zopakovali sme myšlienku, že na to, aby ste urobili niečo čo len s jedným bitom alebo pinom, potrebuje tento port niekoľko registračných adries.
Ale že v tomto prípade, pretože máme do činenia s RGB LED, musíme sa zaoberať tromi bitmi pre každú adresu registra.
Zdôraznili sme, že potrebujeme niekoľko registrov: register DIR, register SEL0, register SEL1 a register VÝSTUP. A zakaždým tri bity.
Krok 2: Vylepšenie kódu - pridanie funkcie
Ako ste videli vo vyššie uvedenom kroku, hlavná programová slučka mala veľa opakovaného kódu, konkrétne keď vypneme LED diódy.
Môžeme teda do programu pridať funkciu. Stále musíme túto funkciu volať vždy, keď chceme vypnúť LED diódy, ale spôsobí to zrútenie časti kódu do jedného príkazu.
Keby bol náš kód vypnutia LED viac zapojený do mnohých ďalších pokynov, bolo by to skutočne šetrič pamäte.
Súčasťou vstavaného programovania a mikrořadičov je oveľa lepšie si uvedomiť veľkosť programu.
Video vysvetľuje.
V zásade do nášho hlavného kódu pridáme vetviaci príkaz a máme ďalší blok kódu, ktorým je funkcia, do ktorej sa vetvíme. A potom, keď sme hotoví, alebo na konci funkcie, vetvíme sa späť k ďalšiemu príkazu v hlavnom programe.
Krok 3: Pridajte oneskorenie zaneprázdnenej slučky
V časti Deklarácie kódu pridajte konštantu, aby bolo ľahké twekovať pre požadované načasovanie:
; akékoľvek slová za bodkočiarkou (';') začínajú komentár.
; kód v tejto časti priradí hodnote hodnotu.; mohli ste použiť aj „.equ“, ale sú mierne odlišné.; „.equ“(myslím) nemožno zmeniť, zatiaľ čo „.set“znamená, že môžete; ak chcete, zmeňte hodnotu „DLYCNT“neskôr v kóde.; „DLYCNT“sa použije ako hodnota odpočítavania v podprograme oneskorenia. DLYCNT.set 0x30000
Pridajte novú funkciu oneskorenia:
oneskorenie:.asmfunc; začiatok podprogramu alebo funkcie „oneskorenie“.
MOV R5, #DLYCNT; načítajte register procesora jadra R5 s hodnotou priradenou k „DLYCNT“. dlyloop; to znamená začiatok oneskorovacej slučky. assembler určuje adresu. SUB R5, #0x1; odpočítajte 1 od aktuálnej hodnoty v registri jadra CPU R5. CMP R5, #0x0; porovnajte aktuálnu hodnotu v R5 s 0. BGT dlyloop; pobočka, ak je hodnota v R5 väčšia 0, na označenie (adresa) „dlyloop“. BX LR; ak sme sa dostali sem, znamená to, že hodnota R5 bola 0. návrat z podprogramu..endasmfunc; označuje koniec podprogramu.
Potom v hlavnom tele v rámci hlavnej slučky vyvolajte alebo zavolajte funkciu oneskorenia:
; toto je fragment kódu hlavného tela alebo hlavnej funkcie (pozri súbor 'main.asm').
; toto je slučka v „hlavnom“a ukazuje, ako túto novú funkciu „oneskorenia“nazývame alebo používame.; '#REDON' a '#GRNON' sú tiež deklarácie (konštanty) (pozri začiatok 'main.asm').; predstavujú jednoduchý spôsob nastavenia určenej farby RGB LED. slučka MOV R0, #REDON; Červená - nastavený register jadra CPU R0 s hodnotou priradenou k „REDON“. STRB R0, [R4]; register jadra R4 bol predtým nastavený s výstupnou adresou GPIO.; napíšte, čo je v R0, na adresu uvedenú v R4. BL oneskorenie; vetva na novú funkciu „oneskorenie“. BL ledsoff; vetva k už existujúcej funkcii „ledsoff“. Oneskorenie BL; rovnako MOV R0, #GRNON; Zelená - rovnako STRB R0, [R4]; a tak ďalej. BL oneskorenie BL ledsoff BL oneskorenie
Video ide do detailov.
Krok 4: ARM Architecture Call Call Standard (AAPCS)
Pravdepodobne je vhodný čas niečo predstaviť. Je to konvencia v montážnom jazyku. Tiež známy ako štandard volania procedúr pre architektúru ARM.
Je toho veľa, ale je to len štandard. Nezabráni nám to naučiť sa programovať zostavy a časti tohto štandardu si môžeme osvojiť za pochodu, akonáhle sa budeme cítiť príjemne s niektorými konceptmi, ktoré sa učíme.
V opačnom prípade by sme mohli mať pocit, že pijeme z obrovskej vodnej hadice. Príliš veľa informácií.
Základné registre
Keď sme sa oboznámili s hlavnými registrami MSP432, skúsme teraz prijať niektoré z týchto štandardov. Tomu sa prispôsobíme, keď napíšeme nasledujúcu funkciu (zapnutie / vypnutie LED).
1) Predpokladá sa, že ako parameter funkcie použijeme R0. Ak chceme do funkcie (podprogram) preniesť hodnotu, mali by sme na to použiť R0.
2) Register odkazov máme používať na určený účel - obsahuje adresu, ktorá naznačuje, kam sa vrátiť po dokončení podprogramu.
Uvidíte, ako ich uplatníme.
Krok 5: Funkcia s parametrom - vnorené funkcie
Náš kód môžeme vyčistiť a znížiť množstvo pamäte, ktorú zaberá, kombinovaním opakovaných sekcií do jednej funkcie. Jediným rozdielom v tele hlavnej slučky je to, že potrebujeme parameter, aby sme mohli odovzdať rôzne rôzne farby RGB LED, ktoré chceme vidieť.
Podrobnosti nájdete vo videu. (ospravedlňujem sa za dĺžku)
Krok 6: Vstup GPIO - pridajte prepínače
Urobme to zaujímavejším. Je načase pridať do nášho programu montáže nejaké prepínače.
Tento návod obsahuje obrázky, ktoré ukazujú, ako sú dva integrované prepínače pripojené k MSP432.
V zásade: Prepínač 1 (SW1 alebo S1) je pripojený k P1.1 a spínač 2 (SW2 alebo S2) je pripojený k P1.4.
Vďaka tomu sú veci trochu zaujímavé nielen preto, že sa zaoberáme vstupmi namiesto výstupov, ale aj tým, že tieto dva prepínače zaberajú alebo zaberajú dva bity rovnakého bloku adries registrov, ako aj jedna červená LED dióda, ktorá je výstupom.
V tomto návode sme sa zaoberali prepínaním jednej červenej LED, takže stačí pridať kód na ovládanie prepínačov.
Port 1 Register Address Block
Nezabudnite, že sme sa nimi zaoberali v predchádzajúcom Instructable, ale musíme zahrnúť nový:
- Port 1 Vstupná registračná adresa = 0x40004C00
- Adresa registra výstupu 1 portu = 0x40004C02
- Port 1 Smer registrácie Adresa = 0x40004C04
- Port 1 Resistor Enable Register address = 0x40004C06
- Port 1 Vyberte 0 Register address = 0x40004C0A
- Port 1 Vyberte 1 Registračná adresa = 0x40004C0C
Pri použití portov ako vstupov je dobré použiť interné výsuvné alebo sťahovacie odpory MSP432.
Pretože vývojová doska Launchpadu zapojila dva prepínače do zeme (LOW pri stlačení), znamená to, že by sme mali používať vyťahovacie odpory, aby sme sa uistili, že máme pevný VYSOKÝ, keď nie sú stlačené.
Vyťahovacie / sťahovacie odpory
Na prepojenie týchto prepínacích vstupov s výsuvnými odpormi sú potrebné dve rôzne adresy registra 1.
1) Pomocou registra umožňujúceho odpor 1 (0x40004C06) portu 1 označte, že chcete rezistory (pre tieto dva bity), 2) a potom pomocou výstupného registra Port 1 (0x40004C02) nastavte odpory buď ako pull-up alebo pull-down. Mohlo by sa zdať mätúce, že na vstupoch používame výstupný register. Výstupný register má takmer dvojaký účel.
Aby sme to mohli znova uviesť iným spôsobom, výstupný register môže buď poslať na výstup HIGH alebo LOW (napríklad jednu červenú diódu LED) a / alebo sa používa na nastavenie zdvíhacích alebo sťahovacích odporov pre vstupy., ALE IBA vtedy, ak bola táto funkcia povolená prostredníctvom registra povolení odporu.
Dôležité vo vyššie uvedenom-pri odosielaní/nastavovaní NÍZKEHO alebo VYSOKÉHO na akýkoľvek výstupný bit budete musieť súčasne udržiavať stav vyťahovania/sťahovania vstupných bitov.
(video sa pokúša vysvetliť)
Načítanie vstupného bitu portu
- Nastavte SEL0 / SEL1 na funkčnosť GPIO
- Nastavte register DIR ako vstup pre prepínacie bity, ale ako výstup pre LED (súčasne v rovnakom bajte)
- Povoliť odpory
- Nastavte ich ako výsuvné odpory
- Prečítajte si prístav
- Možno budete chcieť filtrovať prečítanú hodnotu, aby ste izolovali iba požadované bity (prepínač 1 a 2)
Odporúča:
Ochranná prilba Covid, časť 1: Úvod do obvodov Tinkercad!: 20 krokov (s obrázkami)
Helma Covid Časť 1: Úvod do obvodov Tinkercad !: Dobrý deň, priateľu! V tejto dvojdielnej sérii sa naučíme používať Tinkercad's Circuits - zábavný, výkonný a vzdelávací nástroj na zoznámenie sa s fungovaním obvodov! Jeden z najlepších spôsobov, ako sa učiť, je robiť. Najprv teda navrhneme náš vlastný projekt:
Raspberry PI 3 - povoľte sériovú komunikáciu v krokoch TtyAMA0 až BCM GPIO 14 a GPIO 15: 9
Raspberry PI 3 - Povoliť sériovú komunikáciu na TtyAMA0 až BCM GPIO 14 a GPIO 15: Nedávno som mal záujem povoliť UART0 na svojom Raspberry Pi (3b), aby som ho mohol pripojiť priamo k zariadeniu na úrovni signálu RS -232 pomocou štandardného 9 -pinový konektor d-sub bez toho, aby ste museli prechádzať adaptérom USB na RS-232. Časť môjho záujmu
Text na reč Kliknite na ARM základne poháňanú UChip a ďalšie ARM základne poháňané SBC: 3 kroky
Prevod textu na reč Kliknite na ARMbasic Powered UChip a ďalšie ARMbasic poháňané SBC: Úvod: Dobrý deň. Volám sa Tod. Som profesionál v oblasti letectva a obrany, ktorý je tiež trochu geek. Inšpirácia: Pochádza z éry dial-up BBS, 8-bitových mikrokontrolérov, osobných počítačov Kaypro/Commodore/Tandy/TI-994A, keď R
Časť 1 Zostava ARM TI RSLK Robotics Learning Curriculum Lab Lab 7 STM32 Nucleo: 16 Steps
Časť 1 Zostava ARM TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: Cieľom tohto Instructable je mikroovládač STM32 Nucleo. Motivácia k tomu, aby bolo možné vytvoriť montážny projekt z holých kostí. To nám pomôže preniknúť hlbšie a porozumieť projektu MSP432 Launchpad (TI-RSLK), ktorý má
Časť 3: GPIO: Zostava ARM: Nasledovník linky: TI-RSLK: 6 krokov
Časť 3: GPIO: ARM Zostava: Nasledovník linky: TI-RSLK: Dobrý deň. Toto je ďalšia časť, v ktorej naďalej používame zostavu ARM (namiesto jazyka vyššej úrovne). Inšpiráciou pre tento Instructable je Lab 6 z Texas Instruments Robotics System Learning Kit alebo TI-RSLK. Budeme používať mikrofón