PIC 16F84A

Le timer WATCHDOG (chien de garde)

 

1- Préambule

Le timer watchdog (le watchdog pour simplifier) est un dispositif qui permet au µC de reprendre la main en cas de plantage.

Nous entendons par plantage :

Le plantage se traduit généralement par un "blocage" : le µC ne fait plus rien ou bien des choses étranges.

Il faut alors faire un RESET externe (en supposant qu'un bouton poussoir sur la broche /MCLR a été prévu à cet effet) :

Autrement, il faut couper l'alimentation, attendre quelques secondes que les condensateurs de filtrage se déchargent, et remettre en route.

 

Nous allons voir que le watchdog, par logiciel, permet de faire un RESET interne.

 

2- Reset du watchdog

 

Pour utiliser le watchdog, il faut choisir de l'activer : cela se fait au niveau des bits de configuration.

Il faut ensuite placer (judicieusement) dans le programme l'instruction CLRWDT.

Cette instruction remet à 0 le timer du watchdog.

Si le timer watchdog dépasse une certaine durée, cela provoque un RESET interne : le programme est réinitialisé (adresse H'0000' de la mémoire de programme).

Cette durée dépend des bits PSA, PS2, PS1 et PS0 du registre OPTION_REG :

 

PSA
PS2, PS1, PS0

Taux de prédivision

du Watchdog

Durée indicative

 

0
XXX
1
18 ms
1
000
1
18 ms
1
001
2
36 ms
1
010
4
72 ms
1
011
8
144 ms
1
100
16
288 ms
1
101
32
576 ms
1
110
64
1,15 s
1
111
128
2,3 s

X = 0 ou 1

 

En effaçant le watchdog à intervalles réguliers (avec CLRWDT), le timer ne doit normalement jamais "déborder".

En cas de plantage, le timer déborde ce qui génère un RESET, et le programme redémarre.

 

Remarques :

L'instruction CLRWDT :

En cas de débordement du watchdog :

 

3- Cas particulier du mode SLEEP

 

En mode SLEEP, le µC se réveille si la temporisation du watchdog est dépassée (si le watchdog est actif).

Mais il n'y a pas RESET : le programme reprend à l'instruction qui suit l'instruction SLEEP.