MSP430_moduł_timeraA.pdf

(1005 KB) Pobierz
105-110_msp430.indd
Moduł Timer_A, układ Watchdog
Moduł Timer_A, układ
Watchdog
Dodatkowe
materiały na CD
Kontynuujemy cykl artykułów na temat procesora MSP430 firmy
Texas Instruments. Ten będzie poświęcony tytułowemu modułowi
Timer_A, oraz układowi Watchdog. Uzupełnieniem treści artykułu
są programy umieszczone na płycie CD. Wszystkie przykłady
programów i konfiguracje sprzętowe wykonano woparciu odostępną
w ofercie AVT płytkę ewaluacyjną eMeSPek.
Kontrast ustawia się przy pomocy potencjo-
metru PR1.
Współdzielony JTAG
Mikrokontroler MSP430f1232, nie posia-
da oddzielnych linii dla interfejsu JTAG i pod-
czas programowania/debugowania wykorzy-
stywane są linie portów I/O mikrokontrolera
(P1.4…P1.7). Projektując płytkę można postą-
pić w dwojaki sposób: albo linie interfejsu JTAG
podłączyć jedynie do złącza JTAG, albo dodat-
kowo podłączyć je do wyprowadzeń urządzeń
peryferyjnych. Na płytce eMeSPek zastosowano
rozwiązanie drugie i linie JTAG podłączono do
Programy będące uzupełnieniem treści
artykułu, prezentują efekty swojej pracy na
wyświetlaczu alfanumerycznym LCD (2×16
znaków, sterownik zgodny z HD44780 ). Płyt-
ka ewaluacyjna eMeSPek, posiada wyprowa-
dzone złącze wyświetlacza, jednak aby móc
sterować wyświetlaczem, należy odpowiednio
skonfigurowaćpłytkę.ZworkiJP1i JP2powin-
ny należy połączyć w pozycji 1-2. Wówczas to
linie EN i RS wyświetlacza zostaną doprowa-
dzone do mikrokontrolera i możliwa będzie
jego komunikacja z modułem wyświetlacza.
Rys. 1.
ELEKTRONIKA PRAKTYCZNA 3/2009
105
PODZESPOŁY
MSP430
717101071.049.png 717101071.050.png 717101071.051.png 717101071.052.png 717101071.001.png 717101071.002.png 717101071.003.png 717101071.004.png 717101071.005.png 717101071.006.png 717101071.007.png 717101071.008.png 717101071.009.png 717101071.010.png 717101071.011.png 717101071.012.png
PODZESPOŁY
Tab. 1. Tryby pracy licznika TAR.
Tryb pracy.
Opis.
Tab. 2. Rejestry TACCRx, tryb
PWM, konfiguracja sygnałów dla
MSP430f1232 (obudowa DW, oraz PW)
Zatrzymanie.
(Stop Mode
MCx = 00)
Licznik TAR jest zatrzymany. Wraz z zatrzymaniem licznika, zachowywana jest
wartość TAR, oraz wartości rejestrów konfigurujących moduł Timer_A.
Rejestr
TACCRx
Tag CCISx,
konfigurują-
cy wyjście
OUTx
Wyjście OUTx
Nóżka/Pin
Licznik TAR cyklicznie zlicza od zera do wartości wpisanej do rejestru TACCR0
(Rys. 2a). Odliczane jest TACCR0 + 1 cykli sygnału taktującego. W momencie,
gdy wartość TAR zmienia się z TACCR0 –1 na TACCR0, to w rejestrze TACCTL0
ustawiana jest flaga CCIFG. Znastępnym narastającym zboczem sygnału taktu-
jącego zerowana jest wartość TAR oraz ustawiana jest flaga TAIFG (Rys. 2b).
Licznie w górę.
(Up Mode
MCx = 01)
TACCR0
CCI0A 22/P1.1
CCI0B 26/P1.5
GND 10/P2.2
Vcc Wewnętrzne ADC10
Praca ciągła.
(Continous Mode
MCx = 10).
W trybie tym licznik TAR cyklicznie zlicza od zera do wartości 0xFFFF
(Rys. 3a). W chwili, gdy następuje przekręcenie licznika (zmiana wartości
z 0xFFFF na 0x0000), ustawiana jest flaga TAIFG (Rys. 3b).
CCI1A 23/P1.2
CCI1B 27/P1.6
GND 19/P2.3
Vcc Wewnętrzne ADC10
Od pozostałych różni się tym, że wartość TAR poza zwiększaniem jest również
zmniejszana. Mianowicie licznik TAR cyklicznie zlicza od zera do wartości wpi-
sanej do rejestru TACCR0, a następnie, gdy osiągnie tą wartość rozpoczyna się
zmniejszanie jego wartości do zera (Rys 4a). Cały cykl trybu Up/Down trwa
2*TACCR0 cykli sygnału taktującego. W momencie, gdy wartość TAR zmienia
się z TACCR0 –1 na TACCR0 (połowa cyklu), to w rejestrze TACCTL0 ustawiana
jest flaga CCIFG. Zkolei flaga TAIFG jest ustawiana przy zmianie wartości TAR
z 0x0001 na 0x0000 (Rys. 4b).
TACCR1
Licznie dwukierun-
kowe.
(Up/Down Mode
MCx = 11).
TACCR2
CCI2A 24/P1.3
CCI2B 28/P1.7
GND 20/P2.4
Vcc Wewnętrzne ADC10
List. 1. Szablony procedur obsługi
przerwania – TACCR0, TAIV, WDT
//wektor TACCR0
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void)
{
... // CCR0
}
//wektor TAIV
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
switch( TAIV )
{
case 2: //CCR1
break;
case 4: //CCR2
break;
case 10: //przepełnienie
break;
}
}
// wektor układu Watchdog
#pragma vector=WDT_VECTOR
__interrupt void watchdog_
timer(void)
{
}
2, 4 lub 8. Decydują o tym nastawy bitów IDx.
Każde narastające zbocze sygnału zegarowego
powoduje zmianę stanu licznika TAR zależnie od
wybranego trybu pracy. W dowolnym momencie
programista może odczytać wartość licznika TAR,
jak również ją zmodyfikować.
Ustawienie bitu TACLR powoduje zerowanie
licznika. Należy jednak pamiętać o tym, że wraz
z licznikiem zerowane są bity IDx nastawy pre-
skalera oraz w przypadku trybu pracy Up/Down,
kierunek zliczania impulsów.
Odpowiednia konfiguracja modułu Timer_
A daje możliwość generowania zdarzeń czaso-
wych, impulsów o regulowanym czasie trwania
(PWM), czy też przechwytywania sygnału taktu-
jącego rejestr TACCRx (tryb capture ). „Większe”
mikrokontrolery serii 1xx, poza modułem Timer_
A, posiadają identyczny funkcjonalnie moduł
Timer_B. W module tym licznik, współpracuje
z siedmioma rejestrami porównującymi / prze-
chwytującymi, co znacząco wzbogaca funkcje
mikrokontrolera.
Tryby pracy licznika TAR
Licznik TAR ma możliwość pracy w jednym
z czterech trybów ( tab. 1 ). Wyboru trybu pracy
dokonujemy programowo modyfikując wartość
bitów MCx w rejestrze TACTL. Specyficznym try-
bem pracy jest „Stop Mode”, gdyż zatrzymuje
on licznik TAR. W trybie „Continous Mode”, po
przepełnieniu licznika TAR ustawiana jest flaga
TAIFG. Z kolei w trybach „Up Mode” i „Up/Down
linii danych D5…D7 wyświetlacza LCD. Dzięki
temu „nie utracono” czterech pinów I/O mikro-
kontrolera. Nie utracono również możliwości
korzystania z wyświetlacza LCD podczas debu-
gowania programu. Umożliwia to opcja kom-
pilatora IAR (Emulator-> Release JTAG on Go),
która to (gdy aktywa) powoduje odłączenie
linii JTAG i skonfigurowanieichjakostandardo-
wych pinów I/O. Uruchamiając program należy
korzystać z tej opcji przed każdym fragmentem
kodu, który używa współdzielonych pinów.
Sposób użycia tej opcji demonstruje umiesz-
czony na płycie CD program LCDvsJTAG.
Rys. 3.
Moduł Timer_A – wstęp
Moduł Timer_A to 16-bitowy asynchronicz-
ny licznik TAR współpracujący z trzema prze-
chwytującymi/porównującymi rejestrami -TAC-
CR0,TACCR1,TACCR2 ( rys. 1 ).
Sygnał taktujący licznik TAR wybierany jest
programowo (TASSELx) spośród jednego z czte-
rech dostępnych źródeł. Są to: zewnętrzne INCLK,
TACLK (P2.1, P1.0 mikrokontrolera MSP430f1232)
oraz wewnętrzne ACLK, SMCLK. Częstotliwość
zegarowa może być wewnętrznie dzielona przez
Rys. 3.
106
ELEKTRONIKA PRAKTYCZNA 3/2009
717101071.013.png 717101071.014.png 717101071.015.png 717101071.016.png 717101071.017.png 717101071.018.png 717101071.019.png 717101071.020.png 717101071.021.png 717101071.022.png 717101071.023.png 717101071.024.png 717101071.025.png 717101071.026.png 717101071.027.png 717101071.028.png
Moduł Timer_A, układ Watchdog
Rys. 4.
pracuje z rejestrem TACCR0. Drugi związany jest
z pozostałymi rejestrami oraz przepełnieniem
licznika TAR. Wyższy priorytet obsługi posiada
przerwanie od TACCR0. Przejście do procedury
obsługi przerwania odbywa się na skutek usta-
wienia flagi CCIFG rejestru TACCR0. Wchwili
wejścia do procedury obsługi przerwania auto-
matycznie zerowana jest flaga CCIFG rejestru.
W przypadku TAIV wejście do procedury obsługi
przerwania odbywa się na skutek ustawienia fla-
gi CCIFG któregoś z rejestrów TACCR1, TACCR2,
bądź flagi TAIFG informującej oprzepełnieniu
się licznika TAR. Informacja o tym, które z flagsą
aktualnie ustawione jest przechowywana w re-
jestrze TAIV. Jakikolwiek dostęp do rejestru (od-
czyt, bądź zapis), powoduje wyczyszczenie flagi
przerwania o najwyższym priorytecie. Najwyż-
szy priorytet wśród flag wektora TAIV posiada
CCIFG rejestru TACCR1, następnie CCIFG rejestru
TACCR2, oraz TAIFG. Jeśli w rejestrze TAIV będą
ustawione dwie flaginp.:CCIFGodrejestruTAC-
CR1, oraz CCIFG od rejestru TACCR2, to zgodnie
z tym, co napisałem program wejdzie do pro-
cedury obsługi przerwania, dostęp do rejestru
TAIV spowoduje wyczyszczenie flagi CCIFG od
TACCR1, po czym program opuści procedurę
obsługi przerwania. Ponieważ nadal w rejestrze
TAIV pozostaje ustawiona flaga CCIFG rejestru
TACCR2, to program ponownie wejdzie do pro-
cedury obsługi przerwania TAIV i rozpocznie jej
wykonywanie.
Mode” licznik TAR współpracuje z rejestrem
TACCR0. Również i w tych trybach przepełnienie
licznika jest powodem ustawienia flagi TAIFG,
a dodatkowo przy zmianie wartości TAR z TAC-
CR0-1 na TACCR0 w rejestrze TACTL0 ustawiana
jest flagaCCIFG.
Licznik może być wykorzystywany do gene-
rowania zdarzeń czasowych. Gdy programista
włączy przerwania od flagi TAIFG (TAIE rejestru
TACTL) oraz CCIFG (CCIE rejestru TACCTLx), to
w momencie ich ustawienia (odmierzenie zdefi-
niowanego odcinka czasu) program przejedzie
do procedury obsługi przerwania.
Na płycie CD, umieszczono program – RTC
demonstrujący wykorzystanie trybu pracy „Up
Mode”, do implementacji zegara czasu rzeczywi-
stego. Program korzysta z bibliotek Lcd2x16.
lib (obsługa wyświetlacza LCD) i Convert.
lib (konwersja liczb). Biblioteki przystosowa-
no do obsługi płytki eMeSPek. Program RTC,
to korzysta on z trybu pracy energooszczędnej
LMP3. Natomiast efekty działania programu, są
prezentowane na wyświetlaczu LCD – raz na se-
kundę jest odświeżany upływający czas.
Wektory przerwań, modułu
Timer_A
Z modułem Timer_A, powiązane są dwa
wektory procedur obsługi przerwań ( list. 1 ). Są
to wektory TACCR0 i TAIV. Ten pierwszy współ-
Rejestry TACCRx
Moduł Timer_A posiada trzy rejestry TACCRx,
a z każdym z rejestrów jest powiązany konfigu-
rujący go rejestr TACCTLx. Rejestry mogą praco-
wać w jednym z dwóch trybów pracy. Dostępne
tryby pracy to porównujący oraz przechwytujący
(compare/capture). Konfiguracji trybu pracy do-
konujemy modyfikując wrejestrze konfigura-
cyjnym TACCTLx wartość tagu CAP. Jeśli bit CAP
posiada wartość zero to rejestr TACCRx pracuje
w trybie porównującym ( compare ), w przeciw-
nym wypadku rejestr jest skonfigurowany jako
rejestr przechwytujący ( capture ).
Rys. 5.
Tryb porównujący – compare
W tym trybie wartość licznika TAR porów-
nywana jest z wartością wpisaną do rejestru
TACCRx. W momencie, gdy obie wartości są
równe, to ustawiana jest flaga CCIFG rejestru
TACCRx, sygnał wejściowy CCI jest zatrzaskiwa-
ny w SCCI (rejestr TACCTLx), a w zależności od
konfiguracji OUTMODx (również rejestr TACC-
TLx), zmienia się stan wyjścia OUTx.
Fakt, że ustawiana jest flaga CCIFG spra-
wia, iż tryb porównujący może być wykorzy-
stywany do generowania zdarzeń czasowych.
Wystarczy, że programista aktywuje przerwania
dla rejestru TACCRx (CCIE rejestru konfiguracyj-
nego – TACCTLx), a w procedurze obsługi prze-
rwania będzie mógł reagować na odmierzenie
zdefiniowanego odcinka czasu. Oczywiście
w mikrokontrolerze musi być aktywna obsługa
przerwań maskowalnych (ustawiony bit GIE
ELEKTRONIKA PRAKTYCZNA 3/2009
107
717101071.029.png 717101071.030.png 717101071.031.png
PODZESPOŁY
w rejestrze SR). Podczas generowania zdarzeń
czasowych nie należy zapominać o trybach
pracy licznika TAR. Mianowicie w trybach „Up
Mode”, oraz „Up/Down Mode” używany jest
rejestr TACCR0. Skutkuje to tym, że nie może
on pełnić funkcji rejestru porównującego. Tryb
pracy licznika „Continuous Mode” nie posiada
takiego ograniczenia. Wszystkie rejestry TAC-
CRx mogą być wykorzystywane, co daje możli-
wość generowania trzech niezależnych zdarzeń
czasowych.
Z każdym z rejestrów TACCRx powiązany
jest sygnał wyjściowy OUTx. Sygnał ów jest do-
prowadzony do wybranych pinów mikrokontro-
lera, oraz wewnętrznego przetwornika analogo-
wo cyfrowego. Wyboru wyjścia sygnału OUTx
możemy dokonać modyfikując wartość tagu
CCISx z rejestru TACCTLx ( tab. 2 ). Natomiast
modyfikując wartość tagu MODOUTx możemy
zdefiniować sposób pracy sygnału OUTx. Do-
stępnych jest osiem trybów pracy sygnału OUTx
( tab. 3 ). Pokrótce pisząc, w trybach pierwszym
oraz piątym zatrzaskiwane jest wyjście OUTx.
Tryb czwarty na wyjściu OUTx generuje sygnał,
który ma częstotliwość równą połowie często-
tliwości sygnału taktującego licznik TAR. Nato-
miast tryby: drugi, trzeci, szósty oraz siódmy
wykorzystane są do generowania przebiegów
o regulowanym wypełnieniu(PWM). Na rys. 5
przedstawiono jak tryby pracy wpływają na
zmiany sygnału OUTx, w przypadku pracy liczni-
ka TAR w trybie „Up Mode”.
Na płycie CD umieszczono program PWM,
przy pomocy którego generowane są dwa nie-
zależne sygnały PWM. Każdy z sygnałów po-
siada częstotliwość 1 Hz. Różne natomiast jest
ich wypełnienie. Wyjścia sygnałów PWM zostały
doprowadzone do pinów mikrokontrolera od-
powiedzialnych za sterowanie diodami. Dzięki
temu obserwując zachowanie diod możliwa jest
analiza efektów działania programu. Piny steru-
jące diodami D1, D2 płytki eMeSPek są skonfi-
gurowane jako piny peryferyjne. Nie wspomina-
łem o tym wcześniej, ale aby wyjście OUTx było
fizycznie dostępne na powiązanym znim pinie
mikrokontrolera, to konieczna jest jego konfigu-
racja jako pinu peryferyjnego.
Tab. 3. Tryby pracy sygnału OUTx
OUT-
MODx
Tryb pracy.
Skrócony opis.
000
Wyjście
(Output)
Wartość wyjścia OUTx jest zmieniana w wyniku zmiany wartości bitu
OUTx w rejestrze TACCRx.
001
Ustaw
(Set)
Wyjście OUTx jest ustawiane, gdy TAR = TACCRx. Pozostaje ustawione
do momentu wyczyszczenia licznika TAR.
010
Zmień/Wyczyść
(Toggle/Reset)
Wartość wyjścia OUTx jest zmieniana, gdy TAR = TACCRx, a czyszczona,
gdy TAR = TACCR0.
011
Ustaw/Wyczyść
(Set/Reset)
Wyjście OUTx jest ustawiane, gdy TAR = TACCRx, a czyszczone, gdy
TAR = TACCR0.
100
Zmień
(Toggle)
Wartość wyjścia OUTx jest zmieniana, gdy TAR = TACCRx.
101
Wyczyść
(Reset)
Wyjście OUTx jest czyszczone, gdy TAR = TACCRx.
110
Zmień/Ustaw
(Toggle/Set)
Wartość OUTx jest zmieniana, gdy TAR = TACCRx, a ustawiana, gdy
TAR = TACCR0.
111
Wyczyść/Ustaw
(Reset/Set)
Wyjście OUTx jest czyszczone, gdy TAR = TACCRx, a ustawiane, gdy
TAR = TACCR0.
Możliwe nastawy to: zbocze rosnące, opadają-
ce, oraz rosnące i opadające. W momencie, gdy
sygnał wejściowy spełni warunki zdefiniowane
przy pomocy bitów CMx (zbocze sygnału), to
w rejestrze TACTLx zostanie ustawiona flaga
CCIFG, a do rejestru TACCRx zostanie wpisana
wartość licznika TAR. Ustawienie flagi CCIFG
umożliwia programiście reakcję na zdarzenie
w procedurze obsługi przerwania. Tryb ten
można wykorzystać we własnych aplikacjach na
wiele sposobów, ale jego podstawowe przezna-
czenie to pomiar czasu (z dokładnością do cy-
klu zegarowego sygnału sterującego pracą TAR)
upływającego pomiędzy zboczami sygnałów.
Jeśli kolejne wyzwolenie nastąpi zanim
programista odczyta wartość rejestru TACCRx,
to zostanie ustawiony bit COV informujący
o przepełnieniu trybu przechwytywania. Do-
datkowo programista w dowolnym momencie
może odczytywać poziom wejściowego sygnału
(bit CCI), oraz wymusić synchronizację sygnału
wejściowego z sygnałem taktującym licznik TAR
(SCS=1). Bezpieczną praktyką jest synchronizo-
wanie sygnału, gdyż zapobiega sytuacji, w któ-
rej podczas odczytu/zapisu z/do rejestru TACCRx
wystąpi przechwycenie i odczytywana/zapisy-
wana wartość będzie miała nieprawidłową war-
tość.
Na płycie CD umieszczono program demon-
strujący pomiar częstotliwości sygnału taktują-
cego licznik TAR. Stało się tak, gdyż program ów
w przejrzysty i efektowny sposób demonstruje
działanie trybu przechwytywania. Oczywiście
można zmodyfikować program wtaki sposób,
aby mierzył częstotliwości sygnałów doprowa-
dzonych do pinów mikrokontrolera. Nie jest
to trudne zadanie. Wystarczy zmienić źródło
sygnału taktującego licznik TAR oraz przekonfi-
gurować wejście przechwytywanego sygnału na
sygnał doprowadzany do pinu mikrokontrolera
a wybrany pin ustawić w tryb pracy pinu pery-
feryjnego.
W programie znajdującym się na płycie CD
(CaptureMode) źródłem sygnału taktującego
licznik TAR jest DCO, natomiast przechwyty-
wanym sygnałem jest wewnętrzny zegar ACLK
(LFXT1CLK w trybie LF). Program, przez więk-
szość czasu przebywa w trybie energooszczęd-
nym LPM0, a raz na sekundę wykonuje pomiar
częstotliwości sygnału DCO, którego wynik wy-
świetla na LCD.
Pomiar częstotliwości DCO umożliwia
przeprowadzenie interesującego i kształcące-
go doświadczenia. Mianowicie w poprzednim
artykule wspomniano, że częstotliwość DCO
jest zależna od temperatury otoczenia. Dzisiaj,
posługując się programem CaptureMode moż-
na potwierdzić prawdziwość tej tezy. Wystarczy
zmienić temperaturę otoczenia płytki eMeSPek
(np.: podgrzać płytkę suszarką do włosów) i ob-
serwować na wyświetlaczu LCD jak zmienia się
częstotliwość DCO.
Układ Watchdog – wprowadzenie
Watchdog to swego rodzaju strażniki cią-
głości pracy mikrokontrolera. Ma za zadanie
wykrywać nieprawidłowości (zbyt długie prze-
bywanie mikrokontrolera w określonym punkcie
programu, np.: w skutek jego zawieszeniem się)
i przeciwdziałać im (wykonać restart mikrokon-
trolera). Zasada działania układu jest prosta:
zlicza on impulsy sygnału zegarowego do mo-
mentu, gdy osiągnie zdefiniowaną przez pro-
gramistę wartość. Wówczas to układ Watchdog
„wystawia” sygnał restartujący mikrokontroler.
W gestii obowiązków programisty leży okreso-
wa aktualizacja licznika układu Watchdog. Taki
schemat postępowania, sprawia, że w prawidło-
wo działającym programie układ Watchdog nig-
dy nie powinien zliczyć impulsów powodujących
restart mikrokontrolera. Niestety, jak pokazuje
praktyka, zdarzają się przypadki, że mikrokon-
troler „zawisa” i taki restart ma miejsce. Można
by wówczas rzec, że urządzenie nie działa pra-
widłowo, gdyż miał miejsce niekontrolowany re-
start mikrokontrolera. W zasadzie tak jest. Jed-
nak patrząc na problem z drugiej strony, to ów
restart sprawia, że mikrokontroler powraca do
normalnej pracy oraz urządzenie zaczyna funk-
cjonować. Jest to szczególnie istotne w urządze-
niach, których nieprzerwana praca jest bardzo
ważna, a nieprawidłowe funkcjonowanie mi-
krokontrolera może być wręcz niebezpieczne.
Nikomu nie trzeba uświadamiać jak opłakane
Tryb przechwytujący – capture
W tym trybie pracy przechwytywany jest
sygnał skonfigurowany jako wejście rejestru
TACCRx. Wybór wejścia odbywa się przy pomo-
cy bitu CCISx z rejestru konfiguracyjnego TACC-
TLx. Dostępne są cztery wejścia sygnału, jednak
w trybie przechwytywania przeważnie wyko-
rzystywane są dwa: CCIxA, CCIxB. Do każdego
z wejść CCIxA, CCIxB przypisane jest źródło sy-
gnału. Powiązania wejście <–> źródło są różne
dla różnych typów mikrokontrolerów MSP430
( tab. 4 ).
Modyfikując tag CMx, możemy wyłączyć
tryb przechwytywania. Dodatkowo zmiana war-
tości CMx pozwala zdefiniować zbocze sygnału
wejściowego, po wystąpieniu którego wyzwala-
ne przechwytywana będzie wartość licznika TAR.
108
ELEKTRONIKA PRAKTYCZNA 3/2009
717101071.032.png 717101071.033.png 717101071.034.png 717101071.035.png
Moduł Timer_A, układ Watchdog
w skutkach mogłoby być zawieszenie się urzą-
dzenia pomiarowego i utrata danych, bądź co
gorsza urządzenia, które jest czujnikiem dymu,
wycieku gazu, lub stanowi część systemu antyw-
łamaniowego. Mogłoby dojść do tragedii. Mając
na uwadze fakt, że mikrokontrolery MSP430 są
głownie stosowane w urządzeniach, o których
wcześniej wspomniałem, postanowiłem, że ob-
słudze układu Watchdog zostanie poświęcona
spora część dzisiejszego artykułu.
gramista będzie mógł zareagować na zaistniałe
zdarzenie czasowe. Osobiście odradzam sto-
sowanie układu Watchdog w trybie licznika.
Nie powinno się rezygnować z funkcjonalności
zapewniającej ciągłość pracy mikrokontrolera
(tryb restartu), kosztem dodatkowego licznika
w systemie (tryb licznika). Stosowanie układu
Watchdog w trybie licznika ma rację bytu jedy-
nie w sytuacji, gdy w systemie jest wykorzysta-
ny zewnętrzny układ Watchdog podłączony do
nóżki RST/NMI mikrokontrolera.
Układ Watchdog może być taktowany jed-
nym z dwóch wewnętrznych sygnałów zegaro-
wych, ACLK, bądź SMCLK (tag TASSELx). Czas
pracy układu Watchdog; czyli czas po którym
następuje restart mikrokontrolera, bądź w tybie
pracy licznika ustawienie flagi WDTIFG iprzej-
ście do procedury obsługi przerwania; obliczany
jest zgodnie z zależnością: WDTt=DIVx/SRCf (s).
We wzorze tym DIVx to dzielnik sygnału taktu-
jącego układ Watchdog, natomiast SRCf to jego
częstotliwość podawana w Hertzach. Dzielnik
częstotliwości sygnału jest konfigurowana przy
pomocy bitu WDTISx. Dostępne wartości to
32768, 8192, 512, oraz 8.
Po starcie mikrokontrolera układ Watchdog
jest włączony i pracuje w trybie restartu. Źródłem
sygnału taktującego układ jest SMCLK=DCO.
Częstotliwość pracy DCO wynosi około
Tab. 4. Rejestry TACCRx, tryb
capture konfiguracja sygnałów dla
MSP430f1232 (obudowa DW, oraz
PW).
Rejestr
TACCRx
Tag
CCISx,
konfigu-
rujący
wejście
Źródło sygnału
Nóżka/Pin
TACCR0
CCI0A 22/P1.1
CCI0B 10/P2.2
CCI1A 23/P1.2
CCI1B 19/P2.3
TACCR1
Układ Watchdog – konfiguracja
Mikrokontrolery MSP430 serii 1xx posiadają
wbudowany układ Watchdog ( rys. 6 ). Konfi-
guracja układu odbywa się przy pomocy reje-
stru WDTCTL. Rejestr konfiguracyjny chroniony
hasłem jest. W przypadku dostępu do rejestru
bez hasła (odczyt 0x6900, zapis 0x5A00 - bit
WDTPW), bądź z błędnym hasłem następuje re-
start (PUC) mikrokontrolera.
Układ Watchdog, poza trybem pracy, w któ-
rym restartuje mikrokontroler, może pracować
jako licznik czasu (WDTTMSEL). Jeśli programista
włączy przerwania od układu Watchdog (WDTIE
rejestru IE1) i upłynie zdefiniowany przez pro-
gramistę czas pracy układu, to w rejestrze IFG1
zostanie ustawiona flaga WDTIFG aprogram
przejdzie do procedury obsługi przerwania.
W procedurze obsługi przerwania (list. 1) pro-
TACCR2
CCI2A 24/P1.3
CCI2B Wewnętrzny ACLK
720 kHz, natomiast tag WDTISx konfiguruje
dzielnik na wartość 32768. Jeśli programista nie
zatrzyma układu Watchdog – WDTHOLD, nie
przekonfigurujetrybupracynalicznikowy,albo
nie rozpocznie poganiania układu (WDTCNTC-
L),to zgodnie ze wzorem na czas pracy układu
(WDTt =32678/720kHz) po około 45 milise-
kundach układ Watchdog wystawi sygnał PUC
i nastąpi restart mikrokontrolera. Sygnał PUC
(Power-Up Clear),w odróżnieniu od sygnału
POR (Power-On Reset) nie czyści pamięci RAM
mikrokontrolera. Dlatego też, po restarcie PUC,
obiekty umieszczone w pamięci RAM pozostają
niezmienione.
Rys. 6.
ELEKTRONIKA PRAKTYCZNA 3/2009
109
717101071.036.png 717101071.037.png 717101071.038.png 717101071.039.png 717101071.040.png 717101071.041.png 717101071.042.png 717101071.043.png 717101071.044.png 717101071.045.png 717101071.046.png 717101071.047.png 717101071.048.png
Zgłoś jeśli naruszono regulamin