Fórum témák
» Több friss téma |
Cikkek » Launchpad: ismerkedés az MSP430 mikrovezérlőkkel III. Launchpad: ismerkedés az MSP430 mikrovezérlőkkel III.
Szerző: icserny, idő: Jún 19, 2012, Olvasva: 20554, Oldal olvasási idő: kb. 3 perc
ProgrammegszakításokAz újabb kiadású Launchpad kártyához kapott MSP430G2553 és MSP430G2452 mikrovezérlők megszakítási rendszere mindenben megegyezik a második cikk 4. oldalán leírtakkal. Itt most csupán az ott bemutatott mintapéldák adaptálásához fűzök néhány megjegyzést. Természetesen az új Launchpad kártyához minden projektben át kell állítani a mikrovezérlő típusát. A cikk végén megadott linkről összecsomagolva letölthető példaprogramokban már mindenütt az MSP430G2553 mikrovezérlő van beállítva! Ezen kívül azonban néhány esetben további változtatásra is szükség lehet, ahogy azt az alábbiakban látni fogjuk. 2_p1_3_interruptEbben példában a főprogram LED2-t villogtatja, végtelen ciklusban. Ez lesz az a tevékenység, amelyet egy külső esemény (példánkban az S2 nyomógomb lenyomása) megszakít. A megszakítás kiszolgálásakor átbillentjük LED1 állapotát. Végeredményben tehát a program folyamatosan villogtatja a zöld LED-et, mi pedig eközben az S2 nyomógombbal ki-be kapcsolgathatjuk a piros LED-et. Módosítás: Az új kártyánál az S2 nyomógomb használatához be kell kapcsolnunk a belső felhúzást. Ehhez az alábbi utasításokra van szükség: A programban néhány olyan módosítás is történt, amelyeknek nincs különösebb jelentősége (pl. kivettem a P2 port beállítására vonatkozó utasításokat), maradhattak volna eredeti formájukban is. 2_p1_3_change_stateEbben a példában az S2 nyomógombokkal keltett, hogy a megszakítás befolyásolja a főprogram további menetét. Az egyszerűség kedvéért az előző programot variáltuk meg egy kicsit: a főprogramban nem egy, hanem nyolc tevékenység közül lehet választani egy szoftveres kapcsoló és egy jelző segítségével. Az S2 gomb megnyomásakor mindig eggyel léptetjük a jelzőt, ügyelve, hogy annak értéke csak 0 és 7 közötti szám lehet. Végeredményben a főprogram állapotától függően vagy a piros vagy a zöld LED fog villogni, a villogás frekvenciája pedig négy-négy fokozatban léptethető. Módosítások:
Energiatakarékos üzemmódokAz MSP430 mikrovezérlőket, s különösen az ultra-alacsony-energiaigényű MSP430G2xxx sorozatot alacsony fogyasztású alkalmazásokhoz szánták, s ez abban is tükröződik, hogy az aktív mód mellett több energiatakarékos üzemmóddal is rendelkezik: LPM0, LPM1, LPM2, LPM3, LPM4. Az energiatakarékos üzemmódok jelölésében az LPMx rövidítés a Low Power Mode (alacsony fogyasztású mód) elnevezést takarja. A beállítható energiatakarékos módok bemutatása a az MSP430x2xx Family Users Guide kézikönyv 2. fejezetében, valamint a cikksorozatom második részének 5. oldalán található. 2_p1_3_insleepEbben a programban az inicializálás után a CPU-t altatjuk, s minden órajelet kikapcsolunk (LPM4 mód). A CPU felébresztése ilyenkor csak külső megszakítással lehetséges. Mi most az S2 nyomógombbal keltett megszakításokkal LED1-et kapcsolgatjuk. Induláskor és felébredéskor MCLK és SMCLK órajele az alapértelmezett 1 MHz-es DCO frekvencia lesz. ACLK-val most nem foglalkozunk. Az interupt kiszolgálása után a mikrovezérlő újra LPM4-es energiatakarékos módba kerül. A szükséges változtatások: P1.3 belső felhúzását engedélyezni kell. 2_p1_3_wakeupAz előző példában a külső esemény bekövetkeztekor a megszakítást kiszolgáló eljárásban végeztük el a teendőket. Vannak azonban olyan alkalmazások, amelyeknél ennél bonyolultabb a feladat, mert a külső megszakítás után egy hosszabb tevékenységsorozatot kell elvégeznünk, amit már nem célszerű a megszakítás szintjén futtatni (mert közben esetleg újabb megszakításokat kellene feldolgoznunk). Ilyen esetekben fel kell ébresztenünk a főprogramot. C nyelvű programokban ehhez a megszakítást kiszolgáló eljárás végén a __low_power_mode_off_on_exit() függvényhívást kell kiadnunk. Ebben a programban külső eseménnyel (szokásos módon az S2 gomb megnyomásával) ébresztjük fel a főprogramot, ami minden felébresztéskor egy adott ideig tartó tevékenységet végez (itt most kb. 2,5 másodpercig ellenütemben villogtatja a LED-eket), majd újra aludni tér, az LPM4-es mód beállításával. A szükséges változtatások:
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |