Reset
Il y a plusieurs types de Reset :
1- Reset à la mise sous tension (POR : Power-on Reset)
Un Reset interne a lieu à la mise sous tension, ou après une coupure de courant.
Le programme est initialisé (adresse H'0000' de la mémoire de programme).
2- Reset externe (en mode de fonctionnement normal)
Quand on appuie sur le bouton poussoir, la broche /MCLR passe au niveau bas, ce qui génère un Reset "externe" :
Le programme est réinitialisé (adresse H'0000' de la mémoire de programme).
3- Reset externe pendant le mode SLEEP
On se place dans le cas où le µC est placé en mode SLEEP (suite à l'instruction SLEEP).
Quand on appuie sur le bouton poussoir, la broche /MCLR passe au niveau bas, ce qui génère un Reset "externe" :
Le µC se réveille, le programme est réinitialisé (adresse H'0000' de la mémoire de programme).
4- Reset dû au Watchdog (en mode de fonctionnement normal)
Quand le timer Watchdog déborde, un Reset interne est réalisé :
Le programme est réinitialisé (adresse H'0000' de la mémoire de programme).
5- Réveil dû au Watchdog (en mode SLEEP)
En mode SLEEP, le µC se réveille si le timer watchdog déborde (si le watchdog est actif).
Mais il n'y a pas RESET : le programme reprend à l'instruction qui suit l'instruction SLEEP.
6 - Bits /TO et /PD du registre STATUS
Ces bits sont en lecture seule.
/TO | /PD | Condition |
1 | 1 | Reset à la mise sous tension (Power-on Reset POR) |
1 | 1 | Reset externe (en mode de fonctionnement normal) |
0 | 1 | Reset dû au Watchdog (en mode de fonctionnement normal) |
0 | 0 | Réveil dû au Watchdog (en mode SLEEP) |
1 | 0 | Reset externe pendant le mode SLEEP Réveil dû à une interruption |
En testant si /TO = 0, on peut savoir si le Reset est dû à un plantage (débordement de Watchdog), et orienter la suite de programme en conséquence.