Fórum témák
» Több friss téma |
Cikkek » Tényleg nincs királyi út? I. rész Tényleg nincs királyi út? I. rész
Szerző: icserny, idő: Jún 22, 2013, Olvasva: 26939, Oldal olvasási idő: kb. 7 perc
Az MSP430 Launchpad kártya sajátosságaiAz MSP-EX430G2 Launchpad kártya számunkra érdekes részének kapcsolási rajza az alábbi ábrán látható. Az ábrán már megjelöltük azokat az alkatrészeket, amelyek a Launchpad kártya újabb kiadásánál nincsenek gyárilag beépítve. Az UART átkötések HW és SW állásának szerepe pedig az, hogy az ábrán TxD és RxD felirattal jelölt lábak szerepét felcseréli. 3_1. ábra: Az MSP430 Launcpad kártya kísérleti áramkörének kapcsolási rajza (kattintson az ábrára a nagyításhoz!) Az Energia szoftverkönyvtáraiban a lábak szerepe a kártya IC foglalatába dugott mikrovezérlő típusától is függ. A támogatott típusok lábkiosztás diagramjai a https://github.com/energia/Energia/wiki/Hardware címen találhatók. Itt csak a legnépszerűbb típus, az MSP430G2553 lábkiosztását mutatjuk be. 3_2. ábra: Az MSP430G2553-mal szerelt Launchpad kártya lábkiosztása (kattintson az ábrára a nagyításhoz!) A digitális I/O funkciók (a digitalRead() és digitalWrite() függvények) a zöld és lila színnel jelölt lábak esetében használhatók. Ha az XIN/XOUT lábakra nincs beforrasztva kvarckristály, akkor a P1 és P2 portok minden bitje használható digitális I/O funkcióra. Az adatáramlás irányát és az üzemmódot a pinMode(pin,mode) függvényhívással állíthatjuk be. A lábat kijelölő pin paraméter többféleképpen is megadható. Hivatkozhatunk az IC láb sorszámára (fekete alapon írt sorszámok), használhatjuk a Px_y típusú jelölést (pl. P1_0), vagy az olyan absztrakt jelöléseket, mint RED_LED, PUSH2, stb. Ha tehát a piros LED-et kimenetnek állítjuk és bekapcsolhatjuk, akkor írhatjuk így:
De annak sincs akadálya, hogy a szitanyomás feliratai szerint (P1.0) hivatkozzunk rá:
A lábszámozást az Energia platform hardware/msp430/variants/launchpad/pins_energia.h fejléc állománya definiálja. A fenti hivatkozások nagy hátránya a hardverfüggőség. Ha hordozható programot akarunk írni (például ugyanazt a LED villogtató programot a Stellaris Launchpad kártyán is futtatni szeretnénk, akkor célszerű további absztrakciót alkalmazni. A kártyán található piros és zöld LED-re, az S2 nyomógombra és a belső hőmérőre így hivatkozhatunk: RED_LED, GREEN_LED, PUSH2, TEMPSENSOR. Ezeket a szimbólumokat is a fenti állomány definiálja. Ha ezeket a jelöléseket használjuk, akkor nem kell izgatnunk magunkat azzal, hogy például a piros LED az MSP430 Launchpad kártya esetében a P1.0 kimenetre, a Stellaris Launchpad kártyán pedig az F.1 kimenetre van kötve. Fentiek alapján tehát a piros LED-re így célszerű hivatkozni (ahogy az előző oldal végén ismertetett mintapéldában is használtuk):
Ha digitális bemenetről van szó, akkor a mode paraméter INPUT vagy INPUT_PULLUP lehet. Az új kiadású Launchpad kártya S2 nyomógombja esetében az utóbbit kell használni, ami egyúttal a belső felhúzást is bekapcsolja.
Mintaprogram: DigitalReadSerialAz Energia mintapéldáinak "1. Basics" csoportjában található a DigitalReadSerial program is. Ez beolvassa az S2 nyomógomb állapotát (elengedett állapotban 1, lenyomott állapotban 0) és kiírja a soros kommunikációs vonalon keresztül. Az adatátviteli sebesség 9600 bit/s (kivéve az 1 MHz-en futó MSP430G2231-et, ahol 4800 bit/s adatsebességet kell beállítani). Ne feledjük el, hogy az MSP430G2553 mikrovezérlő esetében a soros kommunikáció hardveres támogatással történik, tehát a TxD és RxD átkötéseket a rev 1.5 kiadású kártyán a 3_2. ábrán látható módon kell beállítani! Más kiadású kártya, illetve más mikrovezérlő típus esetén az átkötéseket a https://github.com/energia/Energia/wiki/Hardware oldalon látható ábrák szerint kell beállítani. 3_1. lista: A DigitalReadSerial program listája
A program elején a beállító részben (a setup() függvényben) először beállítjuk a soros kommunikáció sebességét 9600 b/s-ra, a felhasználói nyomógombhoz tartozó bemenetet pedig digitális bemenetként konfiguráljuk, belső felhúzással. A végtelen ciklusban ismétlődő részben egy egész típusú változóba beolvassuk a nyomógomb állapotát (1, vagy 0 lehet), majd kiíratjuk a soros kommunikációs porton keresztül. A program a Letöltés gombra kattintva lefordul, letöltődik és elindul. A PC oldalon egy soros porti kommunikációra alkalmas terminál emulációs programot kell beállítanunk. Legegyszerűbb ehhez az Energia IDE beépített Serial Monitor programját használni. Indítása előtt (ha korábban nem állítottuk volna még be) válasszuk ki a Launchpad kártyához tartozó virtuális soros portot az Energia Tools/Serial Port menüjében, az előző oldalon található útmutatás szerint! Ezután kattintsunk az Energia IDE ablakának jobb felső sarkában található gombra, indítsuk el vele a Serial Monitort! 3_3. ábra: A Serial Monitor program indítása A Serial Monitor első indításakor szükség lehet az adatsebesség beállítására. Ezt a Serial Monitor ablakának jobb alsó sarkában található legördülő listájában állíthatjuk be. Ha esetleg más programot akarunk használni a PC oldalon (Hyperterminal, PuTTY.exe, stb.), akkor 9600 b/s adatsebességet, és 8, N, 1 formátumot állítsunk be, s nincs sem hardveres, sem szoftveres adatfolyam-vezérlés. 3_4. ábra: A DigitalReadSerial program futtatása
Mintaprogram: AnalogReadSerialAz Energia mintapéldáinak "1. Basics" csoportjában található az AnalogReadSerial program is. Ennek segítségével a valamelyik analóg bemenetre kapcsolt jel (legegyszerűbben a tápfeszültségből egy 10 kΩ-os potméterrel leosztott jel) nagyságát mérhetjük meg a beépített 10-bites felbontású analóg-digitális átalakító (ADC) segítségével. A konverzióból kapott nyers adatot (0-1023 közötti szám) kiíratjuk a PC képernyőjére. A soros port beállítása ugyanúgy történik, mint az előző példában. Hardver követelmények
A kapcsolási rajz és a huzalozás vázlata az alábbi ábrákon látható. Az R1 potenciométer két vége a tápfeszültségre és a földre (a közös pontra) csatlakozik. Ha a potmétert tekergetjük, akkor a csúszka más-más feszültségosztási arányt állít be (a feszültségosztó alsó és felső tagjának aránya változik, tehát az A4 analóg bemenetre vezetett jel nagysága változtatható. 3_5. ábra: Az AnalogReadSerial programhoz használt kapcsolás vázlata (az ábra a Fritzing programmal készült) 3_6. ábra: Az AnalogReadSerial programhoz használt kapcsolás huzalozási rajza (az ábra a Fritzing programmal készült) A programot betöltés után (a File/Examples/1. Basics/AnalogReadSerial menüpontra kattintva tölthetjük be) célszerű módosítani, hogy ne az A0 analóg csatornát használjuk, mert az a láb foglalt, arra van kötve a piros LED! Az analogRead() függvény A0 paraméterét kell lecserélni, a fenti kapcsoláshoz A4-et kell írni helyette. Megjegyzés: ha nincs kéznél potméter, akkor a beépített hőmérő jelét is megmérhetjük. Ehhez az analogRead() függvény A0 paraméterét TEMPSENSOR-ra kell lecserélni. A program működéseAz alábbi programban az előkészítő részben (a setup() függvényben) csak a soros port adatsebességét kell beállítanunk:
A végtelen ciklusban (a loop() függvényben) deklarálnunk kell egy változót, amelybe az analogRead() függvényhívással kapott eredményt tárolhatjuk. Az MSP430G2xxx mikrovezérlők ADC-je 10 bites, tehát a konverzió eredménye 0 - 1023 közötti szám lehet. Az eredményt az alábbi paranccsal íratjuk ki:
A soros port println metódusának első paramétere a kiírandó érték, a második paraméter pedig a számábrázolás alapját adja meg (DEC - decimális, HEX -hexadecimális, BIN - bináris). A println metódus a szám kiírása után egy sorvége jelet is küld (Windows esetében CR-LF). Jegyezzük meg, hogy ha helyette a print metódust használnánk, akkor egymás után írná a számokat, nem kezdene új sort! 3_2. lista: Az AnalogReadSerial program listája
Ha letöltjük a programot és megnyitjuk a Serial Monitor ablakot, akkor az alábbi ábrához hasonló listát kapunk. Ha most eltekerjük a potmétert (vagy a belső hőmérő választása esetén melegítjük a mikrovezérlőt) a számok azonnal megváltoznak. Természetesen ezek a számok közvetlen felhasználásra túl kényelmetlenek. Ha túl gyorsnak találjuk a kiíratások tempóját, akkor beiktathatunk egy késleltetést a loop() ciklusba. Például így:
A következő példában majd megmutatjuk, hogy hogyan lehet ezeket a számokat értelmes mennyiséggé alakítani.
3_7. ábra: Az AnalogReadSerial program listája és futási eredményeMintaprogram: ReadAnalogVoltageA ReadAnalogVoltage program nem található meg az Energia mintapéldái között, ezt az Arduino IDE mintapéldái közül vettük át. Ennek segítségével az A4 analóg bemenetre (P1_4 láb) kapcsolt jel nagyságát mérhetjük meg a beépített 10-bites felbontású analóg-digitális átalakító (ADC) segítségével. A konverzióból kapott nyers adatot voltokra átszámítva, 3 tizedesjegyre íratjuk ki a PC képernyőjére. Hardver követelmények
A kapcsolási rajz és a huzalozás vázlata megegyezik az előző példánál bemutatottakkal (3_5. és 3_6. ábra). Az alábbiakban röviden összefoglaljuk az analóg-digitális konverzió használatához szükséges képleteket, összefüggéseket. A konverzió digitális értéke (NADC):
Ahol: NADC a konverzió eredménye (esetünkben 0 és 1023 közötti szám) VR+ a pozitív referencia (esetünkben mot 3,5 V) VR- a negatív referencia (esetünkben 0 V lesz) VIN a bemenő feszültség, amit meg akarunk mérni A mért feszültség meghatározásaBennünket többnyire nem az érdekel hogy egy adott feszültség esetén milyen számot ad ki az ADC, hanem megfordítva: a konverzió NADC eredményéből a VIN bemenő feszültséget kell meghatározni volt, vagy millivolt egységekben. Az NADC= 1023 * (VIN - VR-)/(VR+ - VR-) képletből kifejezve, ezt kapjuk: VIN = (VR+ - VR-) * NADC/1023 + VR- VR- = 0 V és VR+ = 3,5 V esetén a képlet erre egyszerűsödik: VIN = NADC * 3,50 V/1023 A ReadAnalogVoltage programban is ezt a képletet használjuk, néhány dologra azonban ügyelnünk kell:
3_3. lista: A ReadAnalogVoltage program listája
Az alábbi ábrákon a programablak és a programfutás eredménye látható. A program futása közben a potmétert egyik szélső helyzetből lassan a másik végpontba tekertük. 3_8. ábra: A ReadAnalogVoltage program letöltése 3_9. ábra: A ReadAnalogVoltage program futási eredménye
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |