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: 20532, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   7 / 10

Watchdog időzítő

A Watchdog időzítő (WDT, magyarul: őrkutya)  elsődleges szerepe az, hogy védjen bizonyos rendszerhibák ellen: indítsa újra a mikrovezérlőt, ha a program valahol elbarangolt, vagy végtelen ciklusba került (kivéve a főprogram szándékosan végtelenné tett ismétlődő részét). Hasznos az őrkutya időzítő akkor is, ha valamelyik külső hardver eszköz nem válaszol záros időn belül, s a programunkban ez elakadást okozna.  A WDT ugyanis beállítható, hogy bizonyos idő elteltével szakítsa meg a programot, és indítsa újra a mikrovezérlőt.

Az MSP430 mikrovezérlők WDT időzítőjének előnyös tulajdonsága, az hogy beállítható úgy is, hogy ne újraindulást, hanem programmegszakítást okozzon. Ez azért jó, mert sok olyan alkalmazás van, ami rendszeres megszakítást igényel a feladatok ütemezéséhez. Nagy nyereség számunkra tehát, az ha erre az őrkutyát használhatjuk, s nem kell lekötni erre a feladatra a Timer-t.

A WDT beállítása és vezérlése a WDTCTL regiszteren keresztül történhet.Ennek részletes ismertetése a második cikk 6. oldalán található.

A Watchdog letiltása

Ha az őrkutyát nem használjuk, akkor le kell tiltani, mert alaphelyzetben "visszaszámlálást" csinál, s ha nem törölgetjük rendszeresen a számlálóját, akkor túlcsorduláskor újraindítja a mikrovezérlőt (RESET). Éppen ezért, minden eddigi példaprogramunk azzal kezdődött, hogy leállítottuk az őrkutya számlálóját az alábbi utasítással:

Újraindítás (RESET) a WDT segítségével

A 2_wdt_reset programmal LED1-et villogtatjuk, de igen szokatlan módon. A villogtatás periódusideje VLO használata esetén ~1600 ms,  a 32 kHz-es LFXT1 használata esetén pedig 500 ms.  Az időzítést most nem szoftveres programhurkokkal végezzük, hanem a WDT végzi hardveresen, s túlcsorduláskor újraindítja a programot (RESET).  A várakozás alatt a program LPM3 energiatakarékos módban alszik: MCLK, SMCLK és DCO kikapcsolva, csak ACLK jár (LFXT1 vagy VLO  forrásból). Mintaként felhasználtuk az MSP430D2xx1 mintaprogramok (slac463a.zip)  wdt_06.c programját (D. Dang, Texas Instruments, Oct. 2010).

A program változtatás nélkül futtatható az új Launchpad kártyán is, csak a mikrovezérlő típusát kellett átállítani a projektben.

Periodikus megszakítás WDT segítségével

A 2_wdt_interval program arra mutat példát, hogy az intervallum időzítő módba beállított WDT segítségével hogyan kelthetünk periodikus megszakításokat, s hogyan használhatjuk azt fel egy többfeladatos rendszerben ütemezésre.  A program LED1-et és LED2-t különböző ütemben villogtatja (ezen időzítések az eddigi módon, szoftveres késleltetéssel nehezen volnának előállíthatók). Az időzítéshez a periodikus megszakítást generáló  WDT  szolgáltat időalapot, kb. 51,2 ms periódussal. Az egyes feladatok egymástól eltérő késleltetéseit az interrupt kiszolgáló eljárásában, az időszeletek számlálásával, szoftveres számlálók segítségével oldottuk meg. Az időzített események száma tehát könnyen bővíthető.

A főprogram elején a VLO oszcillátort állítjuk be ACLK forrásául. A WDT_ADLY_16 makrót az io430g2553.h fejléc állomány definiálja, s azt állítjuk be vele, hogy WDT minden 512-dik órajelre okozzon programmegszakítást.

Az XT1 32 kHz-es oszcillátor esetében ez 16 ms időzítést jelentene, innen az elnevezés, de az általunk kiválasztott, névlegesen 12 kHz-es, a tapasztalatok szerint azonban inkább kb. 10 kHz-es VLO esetében valójában T = 512/10000 s = 51.2 ms. Ez lesz az időalap, s minden ütemezéshez beállított késleltetés ennek egész számú többszöröse lesz. Az időzítéseket ugyanis az időszeletek számlálásával valósítjuk meg. 

Megjegyzés: A második cikkben ennek a programnak a leírásában eggyel kevesebb nullát írtam a nevezőbe (10 000 helyett csak 1 000 szerepelt, úgy nem jön ki a 0,0512 s = 51,2 ms periódus!

A program változtatás nélkül futtatható az új Launchpad kártyán is, csak a mikrovezérlő típusát kellett átállítani a projektben.


A cikk még nem ért véget, lapozz!
Következő: »»   7 / 10
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem