Altre funzioni
Chi ha prestato attenzione avrà notato che nella trattazione del TIMER0,
il registro OPTION risulta avere due bit non dedicati al timer.
Questi due bit riguardano una funzione accessoria, che è chiamata Wake-up
from Sleep on Pin Change, ovvero, letteralmente, sveglia dal sonno per un
cambio dei pin. Cosa sono questi pull-up, cosa è sleep?
Senza entrare in altri dettagli, dobbiamo dire che i PIC Baseline non hanno
una gestione a interrupt. Questo è sostituito con una diversa considerazione,
riguardante il basso consumo che ci si aspetta da questi componenti.
In sostanza, l' impiego previsto, nel caso di rilevamento di eventi, è il
seguente:
- il PIC viene posto in sleep, condizione a bassissimo consumo. In queste
condizioni il generatore del clock è spento e l' energia richiesta è
minima L' entrata in modalità sleep si ottiene con una specifica
istruzione.
- un evento (cambio del livello di tensione su un pin, overflow del WDT,
reset esterno) "svegliano" il processore dal sonno
- una analisi dei flag dello STATUS consente di discriminare la causa del
reset ed agire di conseguenza
Per facilitare l' utilizzatore, il microcontroller contiene dei pull-up
(detti weak pull-up) programmabili dal registro OPTION:
OPTION
|
bit
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
nome
|
!GPWU
|
!GPPU
|
T0CS
|
T0SE
|
PSA
|
PS2
|
PS1
|
PSO
|
funzione
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
default
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Il bit 7 a 1 disabilita la funzione (default al POR), mentre programmandolo
a 0 si abilita il wake-up per i pin GP0/1/3 se sono configurati come ingressi
digitali. Se i pin sono configurati come uscite o come altra funzione l'
azione sul bit 7 non ha effetto. GP2 è escluso da questa funzione.
Il bit 6 abilita o meno i pull-up integrati, che possono sostituire
resistenze di pull-up esterne con risparmio di spazio e costo.
Il meccanismo del wake-up è semplice: la lettura dello stato degli I/O
prima dello sleep fotografa la loro situazione. Se durante lo sleep un
livello cambia, la condizione di sonno è interrotta e si riprende da un reset.
In PIC16F506 i due bit trattati sono riferiti al PORTB,
che fa le veci di GPIO. Il nome dei due bit
viene modificato in !RBPWU
e !RBPU
, pur mantenendo le stesse funzioni.
Sleep
La condizione di sleep, a cui si accede con l' esecuzione dell' istruzione sleep,
più che una periferica, è una modalità di funzionamento che consente di
portare il processore in uno stato di "ibernazione", a bassissimo
consumo, dal quale si esce a seguito di alcune condizioni programmate
(comparatore, variazione pin, WDT, MCLR, ecc).
Il clock primario viene sospeso. L' uscita da sleep genera un reset.
Per la trattazione di questa modalità si rimanda a quanto indicato dal
foglio dati
WDT
Il Watchdog è un sistema di sicurezza implementato in tutti i PIC. Si
tratta di un contatore, dotato di un pre divisore programmabile, in questi PIC
condiviso con Timer0, che incrementa seguendo il clock interno generato da un
oscillatore RC proprio. Questo fa si che WDT sia in funzione anche durante lo
sleep.
Se si lascia esaurire il conteggio, all' overflow il modulo WDT genera un
reset.
La sua funzione è analoga al "pulsante di uomo morto" che si
utilizza come sicurezza in alcune apparecchiature : se l' utente non lo preme
ad una certa cadenza, l' apparecchiatura si blocca.
Altrettanto WDT è inteso principalmente come sicurezza da verificare
periodicamente; la mancanza di questa azione blocca il programma in corso.
La cancellazione periodica del contatore si ottiene con l' istruzione clrwdt.
Maggiori informazioni
sul WDT le trovate qui.
|