Sisällysluettelo:
- Vaihe 1: Hyppäämme sisään
- Vaihe 2: Paranna koodia - lisää toiminto
- Vaihe 3: Lisää varattu silmukka -viive
- Vaihe 4: ARM -arkkitehtuurimenettelyn kutsustandardi (AAPCS)
- Vaihe 5: Toiminto parametrilla - sisäkkäiset toiminnot
- Vaihe 6: GPIO -tulo - Lisää kytkimiä
Video: OSA 2 - GPIO ARM ASENNUS - RGB - TOIMINNOT - Kytkimet: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Osassa 1 opimme vaihtamaan yhden punaisen LED -valon Texas Instrumentsin MSP432 LaunchPad -kehityskortilla käyttämällä kokoonpanoa C / C ++: n sijasta.
Tässä Instructable -ohjelmassa teemme jotain vastaavaa - ohjaamme RGB -LEDiä, joka on myös samassa kortissa.
Matkan varrella toivomme, että lisätään tietämystämme ARM -kokoonpanosta emmekä vain pidä hauskaa joidenkin LED -valojen sytyttämisestä.
Vaihe 1: Hyppäämme sisään
Tosiaan, ensimmäinen video kertoo kaiken. Ei paljon lisättävää.
Pääasia on ajaa kotiin ajatus siitä, että jokainen MSP432: n I/O -portti koostuu "rekisteri" -osoitteiden lohkosta, joka puolestaan koostuu useista biteistä.
Lisäksi bitit ryhmitellään kohtisuoraan. Toisin sanoen jokaisen rekisteriosoitteen bitti 0 viittaa samaan ulkoiseen I/O -nastaan.
Toistimme ajatuksen, että portille tarvitaan useita rekisteriosoitteita tehdäkseen jotain vain yhdellä bitillä tai nastalla.
Mutta tässä tapauksessa, koska kyseessä on RGB -LED, meidän on käsiteltävä kolme bittiä kutakin rekisteriosoitetta kohden.
Vahvistimme, että tarvitsemme useita rekistereitä: DIR -rekisterin, SEL0 -rekisterin, SEL1 -rekisterin ja OUTPUT -rekisterin. Ja kolme bittiä joka kerta.
Vaihe 2: Paranna koodia - lisää toiminto
Kuten huomasit yllä olevassa vaiheessa, pääohjelmasilmukassa oli paljon toistuvaa koodia, nimittäin kun sammutamme LEDit.
Joten voimme lisätä toiminnon ohjelmaan. Meidän on edelleen kutsuttava tämä toiminto joka kerta, kun haluamme sammuttaa LEDit, mutta se saa osan koodista romahtamaan yhdeksi lauseeksi.
Jos LED-off-koodimme olisi ollut enemmän mukana monissa muissa ohjeissa, tämä olisi ollut todellinen muistin säästö.
Osa sulautetuista ohjelmoinneista ja mikro-ohjaimista on paljon tietoisempi ohjelman koosta.
Video selittää.
Pohjimmiltaan lisäämme haarautuvan lausekkeen pääkoodiimme, ja meillä on toinen koodilohko, joka on haarautuva funktio. Ja sitten kun olemme valmiit tai toiminnon lopussa, siirrymme takaisin pääohjelman seuraavaan lausuntoon.
Vaihe 3: Lisää varattu silmukka -viive
Lisää koodin Ilmoitukset -osioon vakio, jotta halutun ajoituksen löytäminen on helppoa:
; kaikki sanat puolipisteen (';') jälkeen aloittaa kommentin.
; tämän osan koodi antaa arvon arvon.; olisit voinut käyttää myös ".equ", mutta ne ovat hieman erilaisia.; '.equ' (mielestäni) ei voi muuttaa, kun taas '.set' tarkoittaa, että voit; muuta DLYCNT -arvon arvoa myöhemmin koodissa, jos haluat.; 'DLYCNT': tä käytetään viivealiohjelman laskuri -arvona. DLYCNT.setti 0x30000
Lisää uusi viivefunktio:
viive:.asmfunc; viive -aliohjelman tai -toiminnon alku.
MOV R5, #DLYCNT; lataa ydin CPU -rekisteri R5, jonka arvoksi on määritetty 'DLYCNT'. dlyloop; tämä merkitsee viiveen alkua. kokoonpanija määrittää osoitteen. SUB R5, #0x1; vähennä 1 ydinprosessorirekisterin R5 nykyisestä arvosta. CMP R5, #0x0; vertaa R5: n nykyistä arvoa arvoon 0. BGT dlyloop; haara, jos R5: n arvo on suurempi kuin 0, otsikkoon (osoite) 'dlyloop'. BX LR; Jos pääsemme tänne, R5 -arvo oli 0. paluu aliohjelmasta..endasmfunc; merkitsee aliohjelman loppua.
Sitten päärungossa, pääsilmukassa, kutsu tai soita viivästystoimintoon:
; tämä on koodiosa päärungosta tai päätoiminnosta (katso tiedosto 'main.asm').
; tämä on silmukka "main": ssa ja näyttää, kuinka me kutsumme tai käytämme uutta "delay" -toimintoa.; '#REDON' ja '#GRNON' ovat myös deklaraatioita (vakioita) (katso 'main.asm' -alku).; ne ovat vain helppo tapa asettaa määritetty RGB -LED -väri. silmukka MOV R0, #REDON; Punainen - aseta ydin CPU -rekisteri R0, jonka arvo on 'REDON'. STRB R0, [R4]; ydinrekisteri R4 oli aiemmin asetettu GPIO -lähtöosoitteella.; kirjoita R0: n sisältö R4: n määrittämään osoitteeseen. BL -viive; haaraudu uuteen "delay" -toimintoon. BL ledsoff; haara olemassa olevaan ledsoff-toimintoon. BL -viive; sama MOV R0, #GRNON; vihreä - sama STRB R0, [R4]; ja niin edelleen. BL viive BL ledsoff BL viive
Video menee yksityiskohtiin.
Vaihe 4: ARM -arkkitehtuurimenettelyn kutsustandardi (AAPCS)
On varmaan hyvä hetki esitellä jotain. Se on kokoonpanokielen sopimus. Tunnetaan myös nimellä ARM -arkkitehtuurin menettelysopimusstandardi.
Tässä on paljon, mutta se on vain standardi. Se ei estä meitä oppimasta kokoonpano -ohjelmointia, ja voimme hyväksyä tämän standardin palaset, kun menemme, kun tunnemme olomme mukavaksi joidenkin oppimiemme käsitteiden suhteen.
Muuten saatamme tuntea, että juomme valtavasta vesiletkusta. Liian paljon tietoa.
Ydinrekisterit
Koska olemme perehtyneet MSP432: n ydinrekistereihin, yritetään nyt ottaa käyttöön joitakin näistä standardeista. Noudatamme tätä, kun kirjoitamme seuraavan toiminnon (kytke LED päälle / pois).
1) Meidän on tarkoitus käyttää funktioparametrina R0. Jos haluamme välittää arvon funktioon (aliohjelmaan), käytämme R0: ta.
2) Käytämme linkkirekisteriä aiottuun tarkoitukseen - se sisältää osoitteen, joka osoittaa minne palata aliohjelman valmistuttua.
Näet, kuinka käytämme näitä.
Vaihe 5: Toiminto parametrilla - sisäkkäiset toiminnot
Voimme puhdistaa koodimme ja vähentää sen käyttämää muistia yhdistämällä toistuvat osiot yhdeksi funktioksi. Ainoa ero pääsilmukan rungossa on se, että tarvitsemme parametrin, jotta voimme välittää RGB -LED -valon eri värit.
Katso lisätietoja videolta. (anteeksi pituus)
Vaihe 6: GPIO -tulo - Lisää kytkimiä
Tehdään siitä mielenkiintoisempaa. On aika lisätä kytkinohjaus kokoonpano-ohjelmaan.
Tässä oppaassa on kuvia, jotka osoittavat, kuinka kaksi sisäistä kytkintä on kytketty MSP432-laitteeseen.
Pohjimmiltaan: Kytkin 1 (SW1 tai S1) on kytketty liittimeen P1.1 ja kytkin 2 (SW2 tai S2) on kytketty liittimeen P1.4.
Tämä tekee asioista hieman mielenkiintoisia paitsi siksi, että käsittelemme tuloja lähtöjen sijasta, vaan myös siksi, että nämä kaksi kytkintä käyttävät tai vievät kaksi bittiä samasta rekisteriosoitelohosta kuin yksittäinen punainen LED, joka on lähtö.
Käsittelimme yksittäisen punaisen LED -valon vaihtamista tässä Instructable -ohjelmassa, joten meidän tarvitsee vain lisätä koodi kytkimien käsittelemiseksi.
Portti 1 Rekisteröi osoitelohko
Muista, että olemme käsitelleet näitä edellisessä Instructable -ohjelmassa, mutta meidän on sisällytettävä uusi:
- Portin 1 tulorekisterin osoite = 0x40004C00
- Portin 1 lähtörekisterin osoite = 0x40004C02
- Portin 1 suuntarekisterin osoite = 0x40004C04
- Portin 1 vastus käytössä Rekisterin osoite = 0x40004C06
- Portti 1 Valitse 0 Rekisteröi osoite = 0x40004C0A
- Portti 1 Valitse 1 Rekisteröi osoite = 0x40004C0C
Kun käytät portteja tulona, on hyvä käyttää MSP432: n sisäisiä vetovarsi- tai alasvetovastauksia.
Koska Launchpad -kehityskortti on kytkenyt molemmat kytkimet maahan (LOW, kun niitä painetaan), meidän on käytettävä vetäviä UP -vastuksia varmistaaksemme, että meillä on kiinteä KORKEA, kun niitä ei paineta.
Vedä ylös / vedä alas vastukset
Kytkentulojen sitominen vetovastusihin vaatii kaksi eri portti 1 -rekisteriosoitetta.
1) Käytä Port 1 Resistor-Enable -rekisteriä (0x40004C06) vain osoittamaan, että haluat vastuksia (näille kahdelle bitille), 2) ja käytä sitten portin 1 lähtörekisteriä (0x40004C02) asettaaksesi vastukset joko vedettäväksi tai vedettäväksi. Saattaa tuntua hämmentävältä, että käytämme tulorekisteriä tuloissa. Lähtörekisterillä on melkein kaksikäyttöinen tarkoitus.
Joten toisin sanoen toisella tavalla, lähtörekisteri voi joko lähettää HIGH tai LOW -lähdön (kuten yksittäisen punaisen LED-valon), ja / tai sitä käytetään asettamaan sisään- tai ulosvetovastuksia tuloille, VAIN VAIN jos tämä ominaisuus on otettu käyttöön Resistor-Enable-rekisterin kautta.
Tärkeää edellä-kun lähetät/asetat LOW- tai HIGH-arvoa mille tahansa lähtöbitille, sinun on säilytettävä syöttöbittien ylös-/alas-tila samanaikaisesti.
(video yrittää selittää)
Porttitulon bitin lukeminen
- Aseta SELIO / SEL1 GPIO -toiminnoille
- Aseta DIR -rekisteri kytkinbittien tuloksi, mutta LEDin ulostuloksi (samanaikaisesti samassa tavussa)
- Ota vastukset käyttöön
- Aseta ne vetovastuksiksi
- Lue portti
- Voit halutessasi suodattaa luetun arvon eristääksesi vain tarvitsemasi bitit (kytkimet 1 ja 2)
Suositeltava:
LED -mandala -asennus: 8 vaihetta
LED -mandala -asennus: Tämä Instructable on suunnitteilla valtava LED -MANDALA huoneen sisustukseen. luova asennus mihin tahansa tapahtumaan. Tässä näkyvä LED -mandala on osa Light Showa. Tämä Instructable tarjoaa sinulle vaiheittaiset ohjeet 10ft x 10ft mandalan tekemiseen
MultiBoardin asennus/asennus: 5 vaihetta
MultiBoardin asennus/asennus: MultiBoard on ohjelma, jolla voidaan liittää useita näppäimistöjä Windows -tietokoneeseen. Ohjelmoi sitten uudelleen näiden näppäimistöjen syöttö. Avaa esimerkiksi sovellus tai suorita AutoHotkeyscript, kun jotain näppäintä painetaan. Github: https: // g
Helppo asennus IR -kaukosäädin LIRC: n avulla Vadelma PI: lle (RPi) - heinäkuu 2019 [Osa 1]: 7 vaihetta
Helppo asennus IR -kaukosäädin LIRC: n avulla Raspberry PI: lle (RPi) - heinäkuu 2019 [Osa 1]: Pitkän etsinnän jälkeen olin yllättynyt ja hämmentynyt ristiriitaisista tiedoista, jotka koskevat IR -kaukosäätimen asentamista RPi -projektilleni. Luulin sen olevan helppoa, mutta Linux InfraRed Controlin (LIRC) asentaminen on ollut ongelmallista jo pitkään
Osa 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: 16 Steps
Osa 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo: Tämän ohjeen painopiste on STM32 Nucleo -mikro-ohjain. Motivaatio sille, että pystytään luomaan kokoonpanoprojekti paljaista luista. Tämä auttaa meitä syventymään ja ymmärtämään MSP432 Launchpad -projektia (TI-RSLK), jossa on
Helppo asennus IR -kaukosäädin LIRC: n avulla Vadelma PI: lle (RPi) - heinäkuu 2019 [Osa 2]: 3 vaihetta
Helppo asennus IR -kaukosäädin LIRC: n avulla Raspberry PI: lle (RPi) - heinäkuu 2019 [Osa 2]: Osassa 1 esittelin kuinka kootaan RPi + VS1838b ja määritetään Raspbianin LIRC -moduuli vastaanottamaan infrapunakomentoja IR -kaukosäätimestä. Kaikkia laitteisto- ja LIRC -asennusongelmia käsitellään osassa 1. Osa 2 näyttää kuinka liittää laitteisto