164 16 Watchdog w SAB 80515 533
l icznik watchdoga zlicza każdy cykl maszynowy procesora, po każdym impulsie sterującym, licznik zwiększa swoją zawartość o jeden (jest inkrementowany). Nadzorowany program aby nie dopuścić do przepełnienia licznika zeruje cyklicznie licznik watchdoga. Jeśli z powodu zakłóceń program nie zmieni stanu licznika, to po przepełnieniu licznik generuje wewnętrzny sygnał zerujący procesor.
164 16 Watchdog w SAB 80515 533
Rys. 16-1 Struktura wewnętrzna watchdoga.
Programowe uruchomienie watchdoga polega na wykonaniu instrukcji wpisującej jedynkę logiczną do rejestru IEN1 na pozycję znacznika SWDT (Start/refresh WatchDog Timer flag):
SETB SWDT ;SWDT = IEN1.6 <- 1
Znacznik SWDT dostępny jest w rejestrze przerwań IEN1 o adresie 0B8h
(rw-00):
EX£N2
SWDT | ŁX6 1 EX5 fl EX4 | FX3 J EX2 | HADC
Po uruchomieniu licznika Watchdoga wpisywana jest jedynka na pozycję znacznika WDTS (WatchDog Status flag) i licznik jest inkrementowany od wartości początkowej równej zero. Znacznik WDTS dostępny jest w rejestrze priorytetów przerwań IPO o adresie 0A9h (rw-00):
IP0.1 IPO.O
WDTS | 1P0.5 1 1P0.4 || IP3 [ 1P0.2
Zatrzymanie i zerowanie licznika Watchdoga możliwe jest tylko przez zewnętrzne zerowanie mikrokontrolera linią RESET. Równocześnie z zerowaniem rejestrów specjalnych SFR kasowany jest także znacznik WDTS.
W celu zwiększenia niezawodności działania mikrokontrolera i zmniejszenia prawdopodobieństwo przypadkowego, okresowego zerowania zawartości licznika watchdoga konieczne jest wykonanie następujących instrukcji w podanej kolejności:
Znacznik WDT dostępny w' rejestrze IEN0 jest automatycznie kasowany przez procesor w trzecim cyklu maszynowym po jego ustawieniu.
rejestr przerwań 1EN0 (adres 0A8h), rw-00:
EAL
EX0
rw-0
rwr-0
rw-0 rw-0 rw-0 rw-0 rw-0
rw-0
Cztery cykle maszynowe przed przepełnieniem licznika generowany jest wewnętrzny sygnał zerowania procesora (rysunek 16-2). Sygnał ten wywołuje inny
skutek w stosunku do sprzętowego zerowania procesora linią RESF.T:
• sprzętowe zerowanie linią RESET powoduje:
•* zatrzymanie licznika watchdoga,
-> zerowanie wybranych rejestrów specjalnych SFR, w tym rówmież znacznika WDTS w rejestrze 1P0,
• wewnętrzne zerowanie od licznika watchdoga:
> nie ma wrpływu na działanie licznika watchdoga, zeruje rejestry specjalne SFR ale nie zmienia stanu znacznika WDTJ” 1 w rejestrze IPO.x
stan i licznika watchdoga |
OFFFCh |
4 ostatnie cykle maszynowe | ||
łWD | ||||
start watchdoga |
wewnętrzne zerowanie |
przepełnienie licznika | ||
procesora |
watchdoga |
Rys. 16-2 Zależności czasowe w liczniku watchdoga.