Il Power Down Mode o Sleep
Mode è un particolare stato di funzionamento del PICmicro utilizzato per ridurre
il consumo di corrente nei momenti in cui il PICmicro non è utilizzato perchè in attesa
di un evento esterno.
Se prendiamo come esempio un telecomando per apricancello o
per TV vediamo che per la maggior parte del tempo il PICmicro rimane in attesa che
qualcuno prema un tasto. Appena premuto il PICmicro effettua una breve trasmissione e si
rimette di nuovo in attesa della pressione del prossimo tasto.
Il tempo di utilizzo effettuvo della CPU del PICmicro è
quindi limitato ai pochi millisecondi necessari per effettuare la trasmissione mentre per
diverse ore non è richiesta nessuna elaborazione particolare.
Per evitare di consumare inutilmente la limitata energia
dalla batteria è possibile spegnere buona parte dei circuiti di funzionamento del
PICmicro e riaccenderli solo in corrispondenza di un qualche evento esterno.
Vediamo come.
L'istruzione SLEEP
L'istruzione SLEEP viene utilizzate per
mettere il PIC in Power Down Mode e ridurre di conseguenza la corrente assorbita che
passerà da circa 2mA (a 5 volt con clock di funzionamento a 4Mhz) a circa 2µA,
ovvero 1000 volte di meno !
Per entrare in Power Down Mode basta inserire questa
istruzione in un punto qualsiasi del nostro programma:
SLEEP
Qualsiasi istruzione presente dopo la SLEEP non verrà
eseguita dal PICmicro che terminerà in questo punto la sua esecuzione, spegnerà tutti i
circuiti interni, tranne quelli necessari a mantenere lo stato delle porte di I/O (stato
logico alto, basso o alta impedenza) ed a rilevare le condizioni di "risveglio"
di cui perleremo di seguito.
Per ridurre il consumo di corrente in questo stato, non
devono esserci ovviamente circuiti collegati alle linee di uscita del PIC che consumino
corrente. O meglio questi circuiti devono essere progettati in modo da limitare il loro
assorbimento nelle condizioni di Power Down. Un altro accorgimento raccomandato dalla
Microchip è quello di collegare al positivo (Vdd)
o al negativo (Vss) di alimentazione tutte le linee in alta impedenza non
utilizzate compresa la linea RA4/T0CKI (pin 3).
Il "risveglio" del
PICmicro
Per risvegliare il PICmicro dal suo sonno possono essere
utilizzate diverse tecniche:
- Reset del PICmicro mettendo a 0 il pin MCLR (pin 4)
- Timeout del timer del Watchdog (se abilitato)
- Verificarsi di una situazione di interrupt (interrupt dal
pin RB0/INT, cambio di stato sulla porta B, termite delle operazioni di scrittura su
EEPROM)
Nei casi 1 e 2 il PICmicro viene resettato e l'esecuzione
ripresa dalla locazione 0. Nel caso 3 il PICmicro si comporta come nella normale gestione
di un interrupt (vedi lezione 5) eseguendo per primo
l'interrupt handler e quindi riprendendo l'esecuzione dopo l'istruzione SLEEP. Perché il
PICmicro venga rispegliato da un interrupt devono essere abilitati opportunamento i flag
del registro INTCON.
I bit TO e PD del
registro STATUS possono essere utilizzati al rispeglio per determinare se
la causa del risveglio è stata la semplice accensione del PICmicro, il reset oppure
l'arrivo di un interrupt. |