Sadržaj:
- Korak 1: Hajdemo odmah
- Korak 2: Poboljšajte kôd - dodajte funkciju
- Korak 3: Dodajte kašnjenje zauzetosti
- Korak 4: Standard poziva procedure arhitekture ARM -a (AAPCS)
- Korak 5: Funkcija s parametrom - ugniježđene funkcije
- Korak 6: GPIO ulaz - Dodajte prekidače
Video: DIO 2 - SKLOP GPIO ARM - RGB - FUNKCIONI POZIVI - Prekidači: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
U prvom dijelu naučili smo kako prebaciti jednu crvenu LED diodu na razvojnoj ploči MSP432 LaunchPad iz Texas Instruments, koristeći sklop umjesto C / C ++.
U ovom Instructableu ćemo učiniti nešto slično - kontrolirati RGB LED koji se nalazi i na istoj ploči.
Usput se nadamo da ćemo proširiti naše znanje o ARM montaži, a ne samo se zabaviti paljenjem nekih LED dioda.
Korak 1: Hajdemo odmah
Zaista, prvi video govori sve. Nema se šta više dodati.
Njegova glavna svrha je prenijeti ideju da se svaki I/O port na MSP432 sastoji od bloka adresa "registra", koje se zauzvrat sastoje od nekoliko bitova.
Nadalje, bitovi su grupirani na ortogonalni način. To jest, bit 0 svake adrese registra odnosi se na isti vanjski I/O pin.
Ponovili smo ideju da je potrebno nekoliko adresa registra za taj port, da bi se učinilo nešto sa samo jednim bitom ili pin -om.
Ali u ovom slučaju, budući da se radi o RGB LED, moramo se baviti s tri bita za svaku adresu registra.
Ojačali smo da nam je potrebno nekoliko registara: DIR registar, SEL0 registar, SEL1 registar i OUTPUT registar. I svaki put po tri bita.
Korak 2: Poboljšajte kôd - dodajte funkciju
Kao što ste vidjeli u prethodnom koraku, glavna programska petlja imala je mnogo ponavljanog koda, naime, kada isključimo LED diode.
Tako da programu možemo dodati funkciju. I dalje moramo pozivati tu funkciju svaki put kada želimo isključiti LED diode, ali to uzrokuje da se dio koda sruši u jednu izjavu.
Da je naš LED-off kod bio više uključen u mnogo više uputa, ovo bi zaista uštedjelo memoriju.
Dio ugrađenog programiranja i mikrokontrolera sve je svjesniji veličine programa.
Video objašnjava.
U suštini, našem glavnom kodu dodajemo naredbu o grananju i imamo još jedan blok koda koji je funkcija na koju se granamo. I onda kada završimo ili na kraju funkcije, vraćamo se na sljedeću naredbu unutar glavnog programa.
Korak 3: Dodajte kašnjenje zauzetosti
U odjeljku Deklaracije koda dodajte konstantu kako biste olakšali tweek za željeno vrijeme:
; sve riječi iza tačke sa zarezom (';') započinju komentar.
; kôd u ovom dijelu dodjeljuje ime vrijednosti.; mogli ste koristiti i '.equ', ali oni se malo razlikuju.; '.equ' (mislim) se ne može promijeniti, dok '.set' znači da možete; promijenite vrijednost 'DLYCNT' kasnije u kodu ako želite.; 'DLYCNT' će se koristiti kao vrijednost odbrojavanja u potprogramu kašnjenja. DLYCNT.set 0x30000
Dodajte novu funkciju odgode:
kašnjenje:.asmfunc; početak potprograma ili funkcije 'odgode'.
MOV R5, #DLYCNT; učitati jezgru procesora učitavanja jezgre R5 s vrijednošću dodijeljenom 'DLYCNT'. dlyloop; ovo označava početak petlje kašnjenja. asembler određuje adresu. SUB R5, #0x1; oduzeti 1 od trenutne vrijednosti u registru jezgre procesora R5. CMP R5, #0x0; uporedite trenutnu vrijednost u R5 sa 0. BGT dlyloop; granati ako je vrijednost u R5 veća 0, za označavanje (adresu) 'dlyloop'. BX LR; ako smo došli ovdje, znači da je vrijednost R5 bila 0. povratak iz potprograma..endasmfunc; označava kraj potprograma.
Zatim u glavnom tijelu, unutar glavne petlje, pozovite ili pozovite tu funkciju kašnjenja:
; ovo je fragment koda, glavnog tijela ili glavne funkcije (vidi datoteku 'main.asm').
; ovo je petlja u 'main' i pokazuje kako zovemo ili koristimo tu novu 'delay' funkciju.; '#REDON' i '#GRNON' su takođe deklaracije (konstante) (vidi vrh 'main.asm').; oni su samo jednostavan način za postavljanje određene boje RGB LED diode. petlja MOV R0, #REDON; Crveno - postavlja registar procesora jezgre R0 sa vrijednošću dodijeljenom 'REDON'. STRB R0, [R4]; registar jezgre R4 je prethodno postavljen sa izlaznom adresom GPIO.; upišite ono što je u R0, na adresu navedenu u R4. BL kašnjenje; pređite na novu funkciju 'odgode'. BL ledsoff; grana na već postojeću 'ledsoff' funkciju. BL kašnjenje; isto MOV R0, #GRNON; zeleno - isto tako STRB R0, [R4]; i tako dalje. BL kašnjenje BL LEDsoff BL kašnjenje
Videozapis ulazi u detalje.
Korak 4: Standard poziva procedure arhitekture ARM -a (AAPCS)
Vjerovatno je dobro vrijeme da nešto predstavite. To je konvencija na asemblerskom jeziku. Takođe poznat kao Standard poziva procedura za ARM arhitekturu.
Ima tu puno toga, ali to je samo standard. To nas ne sprječava u učenju programiranja montaže i možemo usvojiti dijelove tog standarda u hodu, nakon što se osjećamo ugodno s nekim konceptima koje učimo.
U suprotnom bismo se mogli osjećati kao da pijemo iz ogromnog crijeva za vodu. Previše informacija.
Osnovni registri
Pošto smo se upoznali sa osnovnim registrima MSP432, pokušajmo sada usvojiti neke od ovih standarda. Tome ćemo se prilagoditi kada napišemo sljedeću funkciju (uključivanje / isključivanje LED diode).
1) Trebali bismo koristiti R0 kao parametar funkcije. Ako želimo prenijeti vrijednost u funkciju (potprogram), za to bismo trebali koristiti R0.
2) Koristit ćemo Link Register za predviđenu svrhu - on sadrži adresu koja označava kamo se vratiti nakon što se potprogram dovrši.
Vidjet ćete kako ih primjenjujemo.
Korak 5: Funkcija s parametrom - ugniježđene funkcije
Naš kôd možemo očistiti i smanjiti količinu memorije koju zauzima kombiniranjem ponovljenih odjeljaka u jednu funkciju. Jedina razlika u tijelu glavne petlje je ta što nam je potreban parametar kako bismo mogli proslijediti različite boje koje želimo vidjeti RGB LED.
Za detalje pogledajte video. (izvini na dužini)
Korak 6: GPIO ulaz - Dodajte prekidače
Učinimo to zanimljivijim. Vrijeme je da u naš montažni program dodamo kontrolu prekidača.
Ovaj Instructable ima slike koje pokazuju kako su dva ugrađena prekidača spojena na MSP432.
U osnovi: Prekidač 1 (SW1 ili S1) spojen je na P1.1, a Prekidač 2 (SW2 ili S2) spojen je na P1.4.
Ovo čini stvari pomalo zanimljivima ne samo zato što se bavimo ulazima umjesto izlazima, već i zato što ova dva prekidača zauzimaju ili zauzimaju dva bita istog bloka adrese registra, kao i jedna crvena LED dioda koja je izlaz.
Bavili smo se prebacivanjem jedne crvene LED diode u ovom Instructable -u, pa samo trebamo dodati kôd za rukovanje prekidačima.
Blok adresa porta 1 registra
Upamtite da smo ovo pokrili u prethodnom Instructable, ali moramo uključiti novi:
- Port 1 Ulazna adresa registra = 0x40004C00
- Port 1 Izlazna adresa registra = 0x40004C02
- Port 1 Smjer Adresa registra = 0x40004C04
- Omogući otpornik priključka 1 Adresa registra = 0x40004C06
- Port 1 Odaberite 0 Adresa registra = 0x40004C0A
- Port 1 Odaberite 1 Adresa registra = 0x40004C0C
Kada koristite portove kao ulaze, dobro je koristiti unutrašnje pull-up ili pull-down otpornike MSP432.
Budući da je razvojna ploča Launchpada ožičila dva prekidača na masu (LOW kada se pritisne), to znači da bismo trebali koristiti pull UP otpornike kako bismo bili sigurni da imamo čvrstu HIGH kad nisu pritisnuti.
Povucite / povucite otpornike
Potrebne su dvije različite adrese registra 1 porta za povezivanje tih ulaza prekidača sa otpornicima.
1) Koristite Port 1 Resistor-Enable register (0x40004C06) da samo naznačite da želite otpornike (za ta dva bita), 2), a zatim pomoću izlaznog registra porta 1 (0x40004C02) postavite otpornike na povlačenje ili na povlačenje. Može izgledati zbunjujuće da koristimo izlazni registar na ulazima. Izlazni registar ima gotovo dvostruku namjenu.
Dakle, za ponovno postavljanje na drugi način, izlazni registar može ili poslati HIGH ili LOW na izlaz (poput jedne crvene LED diode), i / ili se koristi za postavljanje pull-up ili pull-down otpornika za ulaze, ALI SAMO ako je ta funkcija omogućena preko registra za omogućavanje otpornika.
Važno u gore navedenom-prilikom slanja/postavljanja LOW ili HIGH na bilo koji izlazni bit, morat ćete istovremeno održavati pull-up/pull-down stanje ulaznih bitova.
(video pokušava objasniti)
Očitavanje ulaznog bita porta
- Postavite SEL0 / SEL1 za GPIO funkcionalnost
- Postavite DIR registar kao ulaz za bitove prekidača, ali kao izlaz za LED (istovremeno u istom bajtu)
- Omogućite otpornike
- Postavite ih kao pull-up otpornike
- Pročitajte port
- Možda ćete htjeti filtrirati očitanu vrijednost kako biste izolirali samo potrebne bitove (prekidač 1 i 2)
Preporučuje se:
Raspberry PI 3 - Omogućite serijsku komunikaciju na TtyAMA0 na BCM GPIO 14 i GPIO 15: 9 koraka
Raspberry PI 3 - Omogućite serijsku komunikaciju na TtyAMA0 na BCM GPIO 14 i GPIO 15: Nedavno sam bio zainteresiran za omogućavanje UART0 na svom Raspberry Pi -u (3b) tako da ga mogu spojiti izravno na RS -232 signalni uređaj pomoću standardnih 9 -pin d-sub konektor bez potrebe da prolazite kroz USB na RS-232 adapter. Dio mog interesa
Video pozivi na Raspberry Pi 3: 9 koraka (sa slikama)
Video poziv na Raspberry Pi 3: Otkako sam napustio svoj dom prije 5 godina zbog univerzitetskih studija, shvatio sam koliko je teško biti daleko od porodice. Videopozivi su opcija za većinu ljudi, međutim, budući da moji roditelji nisu u mogućnosti naučiti koristiti računar, jedina mogućnost
Dio 1 ARM Montaža TI RSLK Robotika Nastavni plan i program Laboratorij 7 STM32 Nucleo: 16 koraka
Dio 1 ARM Montaža TI RSLK Robotika Nastavni plan i program Laboratorij 7 STM32 Nucleo: Fokus ovog instruktora je STM32 Nucleo mikrokontroler. Motivacija za ovo je da se može izraditi montažni projekat od golih kostiju. To će nam pomoći da dublje proniknemo i razumijemo projekt MSP432 Launchpad (TI-RSLK) koji ima
Mjerač koraka 1. dio: Jednobojni ekran 128x32 i Arduino: 5 koraka
Mjerač koraka 1. dio: Jednobojni ekran 128x32 i Arduino: Ovo je osnovni vodič koji podučava kako koristiti OLED ekran sa svojim Arduinom. Koristim ekran veličine 128x32, ali možete koristiti i drugačiju rezoluciju i promijeniti rezoluciju/koordinate prema potrebi. U ovom dijelu ću vam pokazati kako
ROS MoveIt Robotic Arm Dio 2: Robotski kontroler: 6 koraka
ROS MoveIt Robotic Arm Dio 2: Robot Controller: https://github.com/AIWintermuteAI/ros-moveit-arm.gitU prethodnom dijelu članka stvorili smo URDF i XACRO datoteke za našu robotsku ruku i pokrenuli RVIZ za kontrolu naše robotska ruka u simuliranom okruženju. Ovaj put ćemo to učiniti s rea