plik


ÿþ4.7.1. Watchdog WDT UkBad watchdoga wyposa|ony jest w 15-bitowy licznik zwikszajcy swoj zawarto[ o 1 z czstotliwo[ci fcycle/2 (fcycle =fosc/12), lub po ustawieniu w stan 1 logicznej bitu WDTREL.7 z czstotliwo[ci fcycle/32. Schemat watchdoga WDT przedstawiono na rys. 4.21. 0 7 fosc/12 ÷2 ÷16 WDTL 14 8 RESET WDT WDTH IP0 WDTS Zewntrzny RESET PE / SWD Sterowanie 7 6 0 WDT IEN0.6 WDTREL SWDT IEN1.6 Rys.4.21. Schemat blokowy ukBadu watchdog Rejestr WDTREL adres 086h Bit 7 Bit 6 autoBadowanie rejestru watchdoga Bit 0 WDTREL.7  bit zaBczajcy dodatkowy dzielnik sygnaBu taktujcego, WDTREL.7=0  taktowanie licznika watchdoga czstotliwo[ci fcycle/2, WDTREL.7=1  taktowanie licznika watchdoga czstotliwo[ci fcyclec/32. WDTREL.6  siedem bitów wpisywanych do bardziej znaczcego bajtu licznika : watchdoga (WDTH) w momencie programowego przeBadowania WDTREL.0 licznika watchdoga. W momencie przepeBnienia licznika nastpuje wygenerowanie wewntrznego sygnaBu resetujcego procesor. SygnaB ten jest traktowany jako przerwanie o najwy|szym priorytecie. Zadaniem poprawnie pracujcego nadzorowanego przez ukBad watchdog programu jest niedopuszczenie do przepeBnienia licznika ukBadu watchdoga przez cykliczne, programowe przepisywanie warto[ci pocztkowej z rejestru WDTREL do rejestru WDTH, przy czym wpis mo|e nastpi w dowolnej chwili. Dla zegara taktujcego o czstotliwo[ci 12MHz maksymalny i minimalny okres zliczania licznika watchdoga wynosi odpowiednio: Tabela 4.15. Okresy zliczania licznika watchdoga Stan rejestru WDTREL Okres zliczania 80h 1.1s maksymalny 7Fh minimalny 512µs znamionowy (patrz tryb 1 00h 65.535ms uruchamiania watchdoga) Mikrokontroler SAB80C537 umo|liwia dwa sposoby uruchomienia licznika watchdog, w zale|no[ci od poziomu logicznego pinu /SWD (pin 4 mikrokontrolera). Pin ten speBnia w PE ukBadzie dwie funkcje, gdy| oprócz sterowania watchdogiem, umo|liwia równie| sterowanie trybami pracy z obni|onym poborem mocy. Tryb 1 uruchamiania watchdoga W tym trybie licznik watchdoga uruchamiany jest sprztowo bezpo[rednio po sygnale zewntrznego sygnaBu RESET pod warunkiem, |e pin /SWD podpity jest do napicia VCC. W tym PE przypadku tryby pracy oszczdzania energii mikrokontrolera s zablokowane i niemo|liwe jest ich programowe uruchomienie. Automatyczny start watchdoga jest mo|liwy, je|eli na nó|ce mikrokontrolera /SWD PE wystpiB na trwaBe stan wysoki zanim pojawi si zewntrzny sygnaB RESET. Pojawienie si stanu jedynki logicznej na tym pinie w trakcie normalnego wykonywania programu nie powoduje uruchomienia licznika watchdoga. Ponadto, podczas startu sprztowego, licznik watchdoga rozpoczyna zliczanie ze znamionowym okresem pracy. Nowa warto[ pocztkowa licznika watchdoga mo|e jednak zosta wpisana do rejestru WDTREL w dowolnym momencie wykonywania programu. Tryb 1 uruchamiania watchdoga wykorzystywany jest w przypadku podejrzenia wystpienia wysokich zakBóceD w czasie pracy ukBadu, gdy| zapewnia on niemal stuprocentow pewno[ jego zadziaBania. Tryb 2 uruchamiania watchdoga Programowe uruchomienie ukBadu watchdog (identycznie jak dla mikrokontrolera SAB80C515/535) jest dokonywane jest przez ustawienie bitu SWDT znajdujcego si w rejestrze IEN1. Rejestr IEN1 adres 0B8h EXEN2 SWDT EX6 EX5 EX4 EX3 EX2 EADC Po ustawieniu bitu SWDT sprztowo wpisywana jest jedynka na pozycj bitu WDTS znajdujcego si w rejestrze IP0 i licznik watchdoga rozpoczyna zliczanie od warto[ci pocztkowej. Rejestr IP0 adres 0A9h OWDS WDTS IP0.5 IP0.4 IP0.3 IP0.2 IP0.1 IP0.0 Okresowe kasowanie watchdoga Od momentu uruchomienia watchdoga, jego zatrzymanie i trwaBe zerowanie mo|liwe jest jedynie przez wyzwolenie zewntrznego sygnaBu RESET#, przy czym równocze[nie z wyzerowaniem rejestrów specjalnych SFR kasowany jest równie| bit SWDT. Natomiast programowe, okresowe kasowanie licznika ukBadu watchdog polega na wpisaniu jedynki logicznej na pozycje bitów WDT i SWDT koniecznie w podanej kolejno[ci, np. przez wykonanie rozkazów: SETB WDT SETB SWDT Znacznik WDT znajduje si w rejestrze IEN0 i kasowany jest przez procesor automatycznie 2 cykle po jego programowym ustawieniu. Rejestr IEN0 adres 0A8h EAL WDT ET2 ES ET1 EX1 ET0 EX0 Je[li z jakiegokolwiek powodu nie zostanie wykonane programowe skasowanie licznika watchdoga wygenerowany zostaje wewntrzny sygnaB RESET i licznik ustawiany jest w stan 7FFCh. Czas trwania sygnaBu RESET zale|y od ustawienia preskalera (bit WDTREL.7) i wynosi 8 lub 128 cykli. Znacznik WDTS umo|liwia programow interpretacj zródBa zerowania mikrokontrolera, gdy| zerowanie zewntrzn lini RESET# wywoBuje inne skutki ni| zerowanie przez ukBad watchdog. Dziki takiemu rozwizaniu, po restarcie systemu, mo|na stwierdzi, jakie byBo zródBo jego wystpienia. Znacznik ten jest ustawiany w stan 1 logicznej przez RESET ukBadu watchdog, natomiast kasowany jest po zerowaniu zewntrzn lini RESET . Nale|y równie| pamita, |e mo|e by on równie| skasowany programowo. 4.7.2. PrzykBady programowania ukBadu watchdog PrzykBad 1 ;******************************************************************** ;Program demonstrujcy dziaBanie  watchdoga w SAB 80C537. Program testuje stan ;przycisku doBczonego do P5.0. Je[li przycisk jest przyci[nity, to ukBad watchdog jest ;zerowany programowo, je[li przycisk jest zwolniony, to ukBad watchdog zeruje procesor, co powoduje miganie diody podBczonej do P1.0 ;******************************************************************** ORG 00 SETB SWDT ;WBczenie ukBadu watchdog MOV P1,#0 ;Wygaszenie diody LCALL DELAY1 ;Opóznienie czasowe, aby zauwa|alny byB efekt migania diody SETB P1.0 ;Zapalenie diody LCALL DELAY1 ;Opóznienie czasowe po zapaleniu diody LOOP: JB P5.0,LOOP ;Je[li wci[nity jest przycisk (stan niski na wej[ciu), to nastpi skok do ;procedury zerujcej ukBad watchdog. Je[li nie, to ptla wykonywana bdzie ;tak dBugo, a| ukBad watchdog nie zresetuje procesora, efektem czego bdzie ;miganie diody SETB WDT ;Zerowanie ukBadu watchdog SETB SWDT SJMP LOOP ; ------------------------------------------ ;Procedura opóznienia czasowego ; ------------------------------------------ DELAY1: MOV R5,#10 HOP7: MOV R6,#100 HOP6: MOV R7,#100 HOP5: SETB WDT ;ukBad watchdog musi by zerowany w procedurze SETB SWDT ;opózniajcej gdy| czas jej trwania jest dBu|szy ni| czas DJNZ R7,HOP5 ; po trzebny na przepeBnienie licznika uk Badu watchdog DJNZ R6,HOP6 DJNZ R5,HOP7 RET PrzykBad 2 ;*************************************************************************** ;Program demonstrujcy dziaBanie ukBadu watchdog w SAB 80C537. UkBad watchdog zerowany jest ;w procedurze obsBugi przerwania od licznika T2, który pocztkowo autoBadowany jest du| warto[ci tak, aby ;licznik ukBadu watchdog nie zd|yB si przepeBni. Warto[ do autoBadowania licznika T2 jest stopniowo ;zmniejszana a| do zera, co spowoduje przepeBnienie licznika ukBadu watchdoga i wygenerowanie przez niego ;sygnaBu reset 4 takty przed osigniciem warto[ci maksymalnej ;*************************************************************************** ORG 00 LJMP MAIN ;Skok na pocztek programu, w celu ominicia procedur obsBugi ;przerwaD ORG 2Bh ;Adres przerwania od licznika T2 LJMP INT_T2 ;Skok do procedury obsBugi MAIN: SETB EAL ;Odblokowanie wszystkich przerwaD SETB ET2 ;Odblokowanie przerwania od licznika T2 MOV CRCH,#$0F ;Wpis warto[ci automatycznie Badowanej MOV CRCL,#0 ;do T2 po jego przepeBnieniu MOV TH2,#0Fh ;Wpis warto[ci pocztkowej licznika T2 MOV TL2,#0 MOV T2CON,#11h ;Tryb 0 autoBadowania licznika T2, taktowanie sygnaBem ;wewntrznym, uruchomienie licznika SETB SWDT ;Uruchomienie ukBadu watchdog LCALL INTRO ;Uruchomienie procedury demonstracyjnej LOOP: MOV P1,CRCH ;W ptli gBównej nastpuje zmniejszanie warto[ci pocztkowej do ;przeBadowywania licznika T2 i jednoczesne wysyBanie 8 starszych ;bitów tej warto[ci do portu P1 w celu wizualizacji LCALL DELAY1 DEC CRCH SJMP LOOP ; ------------------------------------------ ;Procedura opóznienia czasowego ; ------------------------------------------ DELAY1: MOV R5,#20 HOP7: MOV R6,#100 HOP6: MOV R7,#100 HOP5: DJNZ R7,HOP5 DJNZ R6,HOP6 DJNZ R5,HOP7 RET ; ----------------------------------------------- ;Procedura obsBugi przerwania od T2 ; ----------------------------------------------- INT_T2: SETB WDT ;Zerowanie ukBadu watchdog SETB SWDT CLR TF2 ;Znacznik T2 wymaga programowego zerowania RETI INTRO: ;Procedura wy[wietlajca na diodach podBczonych do portu P1 MOV R0,#1 ;pewn kombinacj w celu pokazania momentu resetu przez MOV R1,#8 ;ukBad watchdog INTRO_LOOP: MOV P1,R0 MOV A,R0 RL A MOV R0,A LCALL DELAY1 DJNZ R1,INTRO_LOOP RET 4.7.3. Watchdog oscylatora OWD Obok watchdoga nadzorujcego poprawne wykonywanie programu, mikrokontroler SAB80C537 wyposa|ony jest równie| w system nadzorujcy poprawn prac wewntrznego oscylatora  tzw. watchdog oscylatora OWD, który generuje wewntrzny sygnaB RESET po wykryciu zmniejszenia si czstotliwo[ci pracy wewntrznego oscylatora poni|ej pewnej, ustalonej warto[ci. Wewntrzny sygnaB RESET jest utrzymywany tak dBugo, dopóki ukBad oscylatora nie zacznie ponownie poprawnie pracowa, przy czym w czasie jego trwania wyj[cia wszystkich portów mikrokontrolera utrzymywane s w stanie wysokim (jedynki logicznej). Schemat blokowy watchdoga oscylatora OWD przedstawiono na rysunku 4.22. IP0 OWDS XTAL1 Wewn. ÷6 RESET OWD Komparator Opóznienie oscylator XTAL2 czstotliwo[ci 3 cykle Wewntrzny Watchdog OWE zegar oscylatora Rys. 4.22. Schemat blokowy ukBadu watchdoga oscylatora OWD UkBad watchdoga oscylatora OWD uruchamiany jest sprztowo. Je[li pin OWE mikrokontrolera znajduje si w stanie niskim, wówczas watchdog oscylatora OWD jest wyBczony. Je|eli natomiast pin OWE jest nieodBczony lub znajduje si w stanie wysokim, wówczas watchdog oscylatora jest uruchomiony. Takie rozwizanie powoduje, |e watchdog oscylatora jest uruchamiany tak|e w momencie przerwania [cie|ki lub uszkodzenia pinu OWE. Podobnie jak watchdog programowy WDT, watchdog oscylatora OWD zgBasza swój stan za pomoc znacznika statusu  bitu OWDS znajdujcego si w rejestrze IP0. Znacznik ten ustawiany jest w stan jedynki logicznej w momencie wygenerowania przez watchdog oscylatora OWD sygnaBu RESET, natomiast kasowany jest programowo lub poprzez zewntrzny sygnaB RESET. 4.8. Praca mikrokontrolera w trybach oszczdzania energii W niektórych przypadkach, gdy mikrokontroler zasilany jest z baterii i nie wykonuje |adnych obliczeD, a jedynie oczekuje na sygnaB ze sterowanego urzdzenia, praktyczne byBoby wprowadzenie go w stan pracy z obni|onym poborem mocy. Musi si to odby jednak w taki sposób, aby mikrokontroler zachowaB zawarto[ najwa|niejszych rejestrów i komórek pamici, oraz |eby byB mo|liwy szybki powrót do stanu normalnej pracy. Mikrokontroler SAB 80C537 wyposa|ony jest w mechanizm umo|liwiajcy wprowadzenie ukBadu w specjalny tryb pracy, w którym nie jest wykonywany program i znacznie zmniejszony jest pobór prdu. Mikrokontroler zachowuje jednak zawarto[ caBej wewntrznej pamici RAM i rejestrów specjalnych SFR. Nie jest przy tym wymagane doBczenie dodatkowego napicia podtrzymujcego zawarto[ wewntrznej pamici RAM, gdy| jest ona zasilana napiciem z wej[cia Ucc, przy czym w trybie Power Down napicie zasilajce mo|e by nawet obni|one do 2V. Obni|enie napicia zasilajcego umo|liwia zmniejszenie poboru prdu nawet o ok. 500 razy w stosunku do prdu pobieranego w trakcie normalnej pracy mikrokontrolera. W mikrokontrolerze SAB 80C537 dostpne s trzy tryby pracy o obni|onym poborze mocy: Idle, Power-Down i Slow-Down. Tryby te mog by sprztowo kontrolowane przez zmian stanu na wyprowadzeniu /SWD mikrokontrolera, przy czym: PE PE /SWD = 1 -zablokowanie programowego wyboru trybu pracy z obni|onym poborem mocy, PE /SWD = 0 -odblokowanie programowego wyboru trybu pracy z obni|onym poborem mocy. Wybór jednego z trybów oszczdzania energii odbywa si przez ustawienie odpowiednich bitów sterujcych w rejestrze PCON przy zaBo|eniu, |e wyprowadzenie /SWD sterowane jest PE sygnaBem niskim. Rejestr PCON adres 87h SMOD PDS IDLS SD GF1 GF0 PDE IDLE Znaczniki GF0 i GF1 s znacznikami ogólnego przeznaczenia, natomiast bit SMOD nie jest wykorzystywany w programowaniu trybów pracy mikrokontrolera. Tryb pracy mikrokontrolera Idle Po wprowadzeniu mikrokontrolera w tryb pracy Idle jednostka arytmetyczno-logiczna i ukBad watchdog nie s taktowane z wewntrznego zegara ukBadu, natomiast pozostaBe ukBady wewntrzne mog dziaBa normalnie. Ograniczenie poboru mocy zale|ne jest od liczby dziaBajcych ukBadów wewntrznych. Wprowadzenie mikrokontrolera w stan pracy Idle musi nastpi wg okre[lonej procedury: w pierwszym kroku nale|y ustawi znaczniki nastpujco: IDLE=1 i IDLS=0, w drugim kroku znacznikom nale|y przypisa warto[ci: IDLE=0 i IDLS=1. Dziki takiej procedurze unika si przypadkowego wprowadzenia mikrokontrolera w stan obni|onego poboru mocy. Poniewa| znaczniki rejestru PCON nie mog by adresowane bitowo, dlatego ustawienia poszczególnych bitów rejestru nale|y dokona instrukcj ORL, np. w sposób pokazany poni|ej: ORL PCON,#00000001B ;Ustawienie bitu IDLE (bit IDLS musi by wyzerowany) ORL PCON,#00100000B ;Ustawienie bitu IDLS (bit IDLE musi by wyzerowany) Znaczniki te s kasowane automatycznie przez mikrokontroler zaraz po ich ustawieniu, wic nie jest konieczne ich programowe kasowanie. Tryb pracy mikrokontrolera Power-Down Wprowadzenie mikrokontrolera w tryb pracy Power-Down powoduje zatrzymanie generatora mikrokontrolera, licznika ukBadu watchdog oraz wszystkich pozostaBych ukBadów wewntrznych. Zablokowane s równie| przerwania. Podobnie jak w przypadku bitów sterujcych trybem Idle, przy wyborze trybu Power-Down bity sterujce PDE i PDS musz by ustawiane wg okre[lonej kolejno[ci: - w kroku pierwszym: PDE=1 i PDS=0, - w kroku drugim: PDE=0 i PDS=1, np. ORL PCON,#00000010B ; Ustawienie bitu PDE (bit PDS musi by wyzerowany) ORL PCON,#01000000B ; Ustawienie bitu PDS (bit PDE musi by wyzerowany) Tryb Power-Down ma wy|szy priorytet od trybu Idle, dlatego przy jednoczesnym wybraniu obu trybów mikrokontroler wprowadzany jest w stan pracy Power-Down. Porównanie tych dwóch trybów oszczdzania mocy mikrokontrolera przedstawiono w tabeli 4.16. Tabela 4.16. Porównanie trybów pracy Idle i Power-Down Tryb Idle Tryb Power Down  = 0  =0 PE PE Wybór trybu  IDLE=1 i IDLS=0  PDE=1 i PDS=0 IDLE=0 i IDLS=1 PDE=0 i PDS=1  WywoBanie dowolnego  Zerowanie lini RESET ZakoDczenie przerwania trybu  Zerowanie lini RESET Wyj[cie z trybu Power-Down mo|liwe jest jedynie przez sprztowe wyzerowanie mikrokontrolera zewntrzn lini RESET . Po wyj[ciu z trybu Power-Down resetowana jest zawarto[ rejestrów specjalnych, natomiast zawarto[ wewntrznej pamici RAM pozostaje niezmieniona. Nale|y tak|e pamita, |e je[li podczas pracy w tym trybie mikrokontroler zasilany byB obni|onym napiciem, to impuls zerujcy musi by podany dopiero po osigniciu przez napicie zasilajce normalnego poziomu. Ponadto, czas trwania impulsu musi by na tyle dBugi, aby wewntrzny generator mikrokontrolera osignB stabilne warunki pracy (10 20 ms). Tryb pracy mikrokontrolera Slow-Down W trybie pracy mikrokontrolera Slow-Down zmniejszenie pobieranej mocy mikrokontrolera odbywa si poprzez zmniejszenie czstotliwo[ci taktowania. Po przej[ciu mikrokontrolera do tego trybu pracy czstotliwo[ zegara taktujcego zmniejszana jest 8 krotnie, przy czym dotyczy to równie| sygnaBu zegara taktujcego podanego na wyj[cie P1.6/CLKOUT. Przej[cie mikrokontrolera do trybu pracy Slow-Down odbywa si poprzez ustawienie w stan jedynki logicznej bitu SD, znajdujcego si w rejestrze PCON, przy czym praca mikrokontrolera w trybie Slow-Down jest mo|liwa równocze[nie z prac w trybach Idle lub Power-Down. Wyj[cie mikrokontrolera z trybu pracy Slow-Down odbywa si przez wyzerowanie bitu SD.

Wyszukiwarka

Podobne podstrony:
pcwd watchdog
group avr watchdog
watchdog
nmi watchdog

więcej podobnych podstron