Lo
sleep e' una particolare modalita' nella quale il microcontrollore
cessa momentaneamente di eseguire istruzioni e si porta in uno stato di
stand-by durante il quale i consumi di energia sono ridotti al minimo;
e' possibile poi "risvegliare il PIC" in qualsiasi
momento successivo. Questa modalita' e' utile nel caso in cui si
voglia usare il PIC in sistemi alimentati a batteria o comunque dove i
consumi sono un aspetto critico.
Entrare in modalita' sleep
Per far entrare il microcontrollore in modo sleep occorre eseguire
l'istruzione SLEEP. I bit PD e TO del registro STATUS vengono
rispettivamente portati a 0 e 1, e l'oscillatore interno del pic viene
arrestato (l'esecuzione del programma si ferma all'istruzione
SLEEP). Inoltre le porte di I/O mantengono lo stato che avevano prima
che il sistema si fermasse.
Risveglio dalla modalita' sleep
Il microcontrollore puo' essere risvegliato dalla modalita' grazie al verificarsi di uno dei seguenti eventi esterni:
- Reset del microcontrollore (pin MCLR a massa)
- Watch-Dog time-out
- Interrupt dal piedino RB0/INT
- Cambio di stato dei piedini RB0..RB7
- Completamento della fase di scrittura della EEPROM
Al
risveglio il microcontrollore si comportera' consistentemente
all'evento esterno verificatosi: nel primo caso (Reset) si avra'
effettivamente un reset, nel secondo il PIC continuera' con
l'esecuzione del programma dall'istruzione successiva a SLEEP. Negli
ultimi tre casi invece, se gli interrupt sono abilitati (GIE=1)
verranno "eseguiti" gli interrupt (esecuzione del programma a partire
dalla locazione 0x0004 e cosi' via) altrimenti (GIE=0) si proseguira'
con l'istruzione successiva a SLEEP.
|