Watchdog
C'est un oscillateur RC indépendant suivi d'un compteur 8 bits interne au pic
Il ne fonctionne que si le bit 2 (WDTE) de la mémoire de configuration 2007h est à 1
Ce bit est à 1 par défaut
Ce bit peut être mis à 0 au chargement par la directive __CONFIG WDT_OFF; il ne peut pas être modifié par le programme.
La durée nominale de comptage est de 18 ms, mais peut tomber à 7ms selon la température et la tension d'alimentation
Cette durée peut être allongée en utilisant le prescaler pour atteindre jusqu'à 2,3 secondes (0,9 selon la température et la tension d'alimentation)
Le Watchdog fonctionne pendant un SLEEP
En fonctionnement normal, le dépassement du compteur provoque un reset
Le bit 4 (NOT_TO) du registre STATUS (03h et 83h) passe à 0
En mode SLEEP il provoque un réveil et continue normalement
Le Watchdog peut être utilisé contre les plantages du programme: celui ci remet périodiquement le compteur à 0 par l'instruction CLRWDT; si le programme plante, il n'y a pas de remise à 0, il y a dépassement compteur et Reset
Les instructions CLWDT et SLEEP remettent à zéro le WATCHDOG et le prescaler s'il lui est attribué
C'est un compteur 8 bits programmable
Il n'est ni lisible ni inscriptible
Seul son taux de division est programmable par les bits 0 1 et 2 (PS0) (PS1) et (PS2) du registre OPTION_REG (81h)
Le taux de division peut être modifié en cours de programme
Il est utilisé après le WATCHDOG lorsque le bit 3 PSA du registre OPTION_REG (81h) est à 1
La remise à zéro du WATCHDOG remet le prescaler à zéro
Taux de division du Postscaler avec le WATCHDOG (PSA=1) | |||
PS2 | PS1 | PS0 | Division |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 2 |
0 | 1 | 0 | 4 |
0 | 1 | 1 | 8 |
1 | 0 | 0 | 16 |
1 | 0 | 1 | 32 |
1 | 1 | 0 | 64 |
1 | 1 | 1 | 128 |
Le prescaler fonctionne pour le module TIMER ou pour le WATCHDOG, mais pas pour les deux simultanément
Retour au sommaire
© 1999-2009 A. Ducros F5AD