DIGITAL
MCU LOW POWER
47
- ELETTRONICA OGGI 464 - SETTEMBRE 2017
periferiche disponibili in alcuni microcontrollori a 8 bit della
prossima generazione (come gli MCU della linea PIC di Micro-
chip). Per esempio, i progettisti possono collegare una delle
celle logiche configurabili (CLC – Configurable Logic Cell) di
queste MCU e il relativo oscillatore NCO (Numerically Control-
led Oscillator) al timer a 16 bit al fine di estendere il periodo
da 17 secondi a 205 giorni, prima che si inneschi un interrupt
per “svegliare” l’MCU (Fig. 1). Anche se naturalmente è raro che
un’applicazione debba rimanere nello stato di “idle” per un pe-
riodo tanto lungo, si tratta di un’opzione sempre disponibile. La
soluzione più economica prevede l’uso di un oscillatore inter-
no a basso consumo (operante a 31 kHz) per la gestione del
timer. Il consumo di tale implementazione può essere ridotto
di un ulteriore 50%, fino a circa 2,3 μA, (a fronte di un costo
di poco superiore) utilizzando un quarzo esterno operante a
32kHz connesso all’oscillatore secondario (SOSC). Per il “wake
up” del microcontrollore possono essere utilizzate anche sor-
genti esterne di interrupt , come ad esempio commutatori o
sensori. Anche se alcune MCU/MPU hanno più interrupt con
vari livelli di priorità, tale funzionalità non è solitamente pre-
sente nella maggior parte delle MCU a ridotto numero di pin
presenti sul mercato. Il modulo CLC (Configurable Logic Cell)
prima menzionato può essere utilizzato non solo per creare
fonti di interrupt aggiuntive quando l’ MCU ha un solo INT di
sistema, ma anche per aggiungere logica condizionale o se-
quenziale alla routine di “wake up”, contribuendo a rendere
quest’ultima più “intelligente” senza penalizzazione alcuna in
termini di assorbimento di corrente. Nel caso il sistema richie-
da un certo numero di segnali per rappresentare uno specifico
stato, spesso il risveglio della CPU – necessario per la verifica
della condizione – era imputabile alla variazione di un segnale,
ma ciò era semplicemente dovuto al fatto che gli altri segnali
non erano ancora pervenuti. Ora è invece possibile configura-
re e abbinare le macchine a stati e le funzioni logiche dispo-
nibili nel modulo CLC, o persino in più moduli CLC, in modo
compiti ausiliari quali ad esempio
attivare o disattivare i moduli al
fine di ottimizzare l’efficienza
energetica. Tuttavia, la maggior
parte dei progetti prevede un uni-
co microcontrollore principale,
oltre a un gran numero di periferi-
che integrate per implementare le
funzionalità di sistema richieste. Di
conseguenza, il consumo di ener-
gia del microcontrollore assume
un’importanza critica. Quando
si prendono in considerazione
le prestazioni a basso consumo,
è necessario considerare il fatto
che un microcontrollore a 8 bit
può fornire risultati nettamente migliori rispetto a quelli di un
microcontrollore a 32 bit. Alcune MCU a 8 bit, ad esempio, nelle
modalità a più basso consumo assorbono una corrente di soli 20
nA, mentre nelle identiche condizioni una MCU a 32 bit assorbe
una corrente superiore di un fattore compreso tra 10 o 20 volte.
Per un microcontrollore, esistono diverse modalità di “wake up”
dalla modalità “sleep”. Una pratica comune prevede l’uso dei ti-
mer interni del microcontrollore per il “wake up” periodico del
sistema. Il timer può essere configurato per innescare (trigger)
un interrupt successivamente a una condizione di overflow. Un
timer a 16 bit con pre-scaler 1:8 gestito dall’oscillatore interno a
31 kHz a basso consumo (o da un quarzo esterno) può mantene-
re il dispositivo in modalità “sleep” per circa 17 secondi. Un’altra
possibilità consiste nell’utilizzare il Watchdog Timer (WDT) del-
l’MCU, idealmente con un tempomassimo di “idle” di 256 secondi
e un consumo, in questo caso, di circa 440 nA. Una tradizionale
MCU a 32 bit con WDT, per contro, è caratterizzata da consumi
minimi di corrente superiori di un fattore pari almeno a 3 rispetto
a quelli di una MCU a 8 bit. Si consideri ora un’applicazione che
non necessiti di “wake up” frequenti, come ad esempio il moni-
toraggio ambientale, che prevede un “risveglio” ogni quattro ore
per leggere i valori del sensore di umidità prima del ritorno nella
modalità di “sleep”. Ciò non significa necessariamente effettuare
“wake up” più frequenti a causa delle limitazioni del timer interno.
Ad esempio è possibile utilizzare un Real Time Clock (RTC) e un
quarzo in grado di eseguire un cronometraggio accurato in ter-
mini di ore, giorni, mesi e persino anni, se necessario. Dato che
spesso, per ragioni di costo, non tutti i microcontrollori offrono
RTC e quarzo integrati, è anche possibile prendere in considera-
zione un RTC stand-alone.
Periferiche indipendenti dal core
Un’altra opzione per estendere il periodo di “idle” senza dover
utilizzare alcun componente aggiuntivo o incorrere in penaliz-
zazione in termini di consumi prevede il ricorso a particolari
Fig. 1 – Le periferiche indipendenti dal core di un microcontrollore a 8 bit possono essere usate per esten-
dere il periodo di “idle” fino a 205 giorni senza ricorrere a componenti esterni aggiuntivi o incorrere in
penalizzazioni in termini di consumi