
WDT je števec, ki šteje cikle glavnega ali večkrat tudi lastnega oscilatorja. Pri prelivu števca (ko števec prešteje do določene vrednosti – op. ur.) WDT generira prekinitev ali reset mikrokontrolerja. Med oscilatorjem in WDT-jem se nahaja binarni delilnik s približno desetimi programabilnimi faktorji deljenja, s katerimi nastavljamo čas, po katerem se bo pojavil reset mikrokontrolerja. Glede na frekvenco oscilatorja in izbrani faktor deljenja znaša reset interval od nekaj milisekund do nekaj sekund. Ko v programu konfiguriramo in zaženemo WDT, moramo WDT znotraj nastavljenega časa ciklično resetirati. V nasprotnem primeru bo WDT sam resetiral mikrokontroler. Program, v katerem uporabljamo WDT, mora biti pazljivo napisan. Dve glavni napaki sta:
predolg »Wait« ukaz bo povzročil neželen reset mikrokontrolerja (npr. pri nastavljenem WDT času 2 sekundi bo Wait 3 bo povzročil, da bo WDT resetiral mikrokontroler);
če se je program zavrtel v neskončni zanki, v kateri resetiramo WDT, od njega ne bo koristi.
AT90S2313
Ta predstavnik starejše generacije AVR-jev nudi samo osnovno funkcionalnost WDT-ja (Slika 1).
Za taktni signal WDT uporablja vgrajeni 1 MHz oscilator s faktorjem deljenja 16k, 32k, 64k, 128k, 256k, 512k, 1024k in 2048k. Faktor deljenja iz Bascoma definiramo s »Config« ukazom:
Config Watchdog = 2048
Vpisana vrednost približno ustreza času pred resetom v milisekundah (frekvenca WDT oscilatorja je odvisna od napajalne napetosti in temperature). Konfigurirani WDT še ni pognan; zaženemo ga z ukazom:
Reset Watchdog
Start Watchdog

Do
Reset Watchdog
...
... '< 2s
...
Loop
WDT lahko tudi ustavimo, če ga ne potrebujemo:
Stop Watchdog
ATMEGA8518
Tudi pri tem mikrokontrolerju notranji oscilator 1 MHz krmili WDT s faktorji deljenja 16k, 32k, 64k, 128k, 256k, 512k, 1024k in 2048k. Vsi ukazi navedeni pri AT90S2313 veljajo tudi pri tem z opombo, da se WDT resetira med resetom mikrokontrolerja in pri zaustavitvi. Zato ga ni potrebno resetirati neposredno pred zagonom. Obstajajo tudi druge izboljšave: s postavitvijo »varovalke« med programiranjem mikrokontrolerja izberemo tri varnostne nivoje:
- varnostni nivo 0: WDT je ob vklopu izključen in ga lahko po želji konfiguriramo, vključujemo in izključujemo,
- varnostni nivo 1: WDT je ob vklopu izključen in ga lahko po želji vključujemo, vendar moramo za konfiguriranje in izklop upoštevati posebno časovno omejeno proceduro,
- varnostni nivo 2: WDT je ob vklopu vključen, ni ga možno izklopiti, vendar moramo za konfiguriranje in izklop upoštevati posebno časovno omejeno proceduro.


