Le watchdog est un circuit qui permet de réveiller le composant en cas de plantage.
C'est en fait un timer qui, s'il arrive à terme, provoque un reset du composant (ou une interruption)
A des endroits stratégiques dans le programme, on place une instruction qui remet à zéro le watchdog. Si le programme entre dans une boucle infinie, il ne pourra plus réactiver le watchdog, celui-ci va arriver à son terme, et va provoquer un reset du composant.
Pour l'initialiser :
prc1 = 1;// Protect off
pm12 = 1;// action : reset µC (1 = reset, 0 = interrupt)
wdc7 = 1;// diviseur d'horloge ( 1 = par 128, 0 = par 16, soit 328 ms @ 20 Mhz)
wdts = 0;// launch watchdog
Pour remettre le watchdog à zéro :
wdtr = 0;
Cette dernière instruction est très importante et doit donc être exécutée régulièrement ( < tous les 328 ms dans notre cas).