DIGITAL
MCU LOW POWER
48
- ELETTRONICA OGGI 464 - SETTEMBRE 2017
da generare condizioni di “wake-up” specifiche che evitino il
verificarsi di falsi inneschi e i relativi assorbimenti di poten-
za. Il tempo di “wake-up” può rappresentare una componente
importante del tempo di esecuzione all’interno del profilo tem-
porale di un’applicazione. Mentre per l’oscillatore interno di un
microcontrollore a 8 bit esso è solitamente limitato a pochi cicli
di clock (3-5 cicli che equivalgono a tempo valore compreso
tra 200 ns e 1 us), in un’architettura a 32 bit che adotta tecni-
che di “deep sleep” per limitare le correnti di dispersione, si
può arrivare a tempi dell’ordine delle decine di microsecondi,
vanificando i tal modo la la quasi totalità dei vantaggi legati alla
maggiore rapidità di esecuzione. Sebbene sarebbe auspicabile
che tutte le attività venissero svolte in modalità “sleep”, alcuni
processi (task) devono essere svolti in modalità “attiva”, duran-
te la quale il core della MCU consuma la più elevata quantità di
potenza. In uno scenario di questo tipo possono sorgere com-
plicazioni. La figura 2 riporta una rappresentazione grafica
semplificata del consumo di corrente del sistema in funzione
del tempo. L’area sottostante la linea che indica il consumo di
corrente rappresenta la scarica totale nel tempo, espressa in
Coulomb. Se la somma di tutte le aree relative al periodo tra-
scorso in modalità “sleep” è molto maggiore rispetto a quella
relativa al periodo trascorso in modalità “attiva”, il valore della
corrente in modalità “sleep” risulterà il più critico, in quanto la
maggior parte del consumo di energia avviene proprio nella
modalità a basso consumo. Viceversa, se la somma dell’area
relativa al periodo nello stato “attivo” risulta maggiore in ma-
niera significativa, allora il valore della corrente di “sleep” e il
tempo trascorso in questo stato saranno irrilevanti. Le appli-
cazioni che prevedono l’uso di comunicazioni wireless, come
ad esempio Wi-Fi e Bluetooth LE, sono particolarmente com-
plesse da gestire in termini di consumo di energia. I progettisti
di questi sistemi devono tenere in considerazione la quantità
di dati trasmessa o ricevuta poiché ha un impatto diretto sul
consumo complessivo di corrente. I moduli wireless possono
essere usati in “Beacon Mode,” per il “wake up” periodico e la
ricerca di segnali, oppure entrare in modalità “standby” quanto
non sono in uso. In sistemi wireless di
questo tipo la velocità di elaborazione
dell’MCU è irrilevante dato che gli I/O
svolgono un ruolo determinante, ma
in ogni caso il tempo di “wake up” del-
l’MCU ha un impatto significativo sul
profilo dell’applicazione poiché il con-
sumo del circuito radio (tipicamente
10-20 mA) risulta in ultima analisi esse-
re il fattore più importante per quel che
riguarda il budget energetico dell’ap-
plicazione. I sensori analogici richie-
dono l’uso dei moduli ADC presenti a
bordo degli MCU. Solitamente, il tempo
richiesto dal convertitore A/D per il campionamento è molto
superiore rispetto al tempo di conversione. Ovviamente, mag-
giore è il tempo trascorso in modalità “attiva”, maggiore sarà il
consumo di corrente. Tuttavia esistono MCU con moduli ADC
che prevedono conversioni in modalità “sleep”, consentendo
quindi di risparmiare energia minimizzando il tempo trascor-
so in modalità “attiva”. Alcune MCU dispongono di numerose
modalità “attive” caratterizzate da consumi ridotti. Queste mo-
dalità offrono l’opportunità di ridurre la velocità del core, se
non addirittura spegnerlo, mantenendo nel contempo attivo il
clock di sistema in maniera selettiva per le periferiche on-chip.
Un concetto abbastanza diffuso si può così sintetizzare: più
elevate sono le prestazioni del core, maggiore sarà la veloci-
tà di esecuzione dei task e quindi più rapido il ritorno nella
modalità di “sleep”. Anche se in taluni casi tale affermazione è
vera, questa logica contiene un errore di fondo. A questo pro-
posito val la pena ricordare che il core consuma più energia
di qualsiasi altro modulo di un MCU. Inoltre, qualsiasi compito
che coinvolga il core deve essere eseguito sequenzialmente,
in modalità FIFO, a prescindere dalla velocità. Pertanto il core
non può essere spento fino al completamento dell’ultimo task.
Nel momento in cui un microcontrollore è in grado di eseguire
alcuni dei compiti richiesti in parallelo, utilizzando periferiche
integrate che possono operare indipendentemente dal core, la
velocità del core diventa irrilevante mentre il consumo com-
plessivo di potenza è sensibilmente ridotto. Periferiche di que-
sto tipo sono completamente operative anche quando il core
della MCU è in modalità “sleep”. In definitiva, il progetto di ap-
plicazioni alimentate a batteria è divenuto un compito molto
più complesso a causa dell’aumento delle loro funzionalità. Al
fine di ottimizzare l’efficienza nell’uso delle batterie, i progetti-
sti dovrebbero analizzare e comprendere “in toto” il profilo di
consumo di corrente di ognuno dei componenti nelle diverse
modalità di funzionamento. Grazie al set di Core Independent
Peripheral (CIP) integrate nei più recenti microcontrollori a 8
bit di Microchip i progettisti possono liberare la loro creatività
senza penalizzare le prestazioni.
Fig. 2 – Esempio di rappresentazione grafica del consumo di corrente di un microcontrollore
in funzione del tempo