Modalità sleep


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.