EO_471
DIGITAL IOT MICROCONTROLLERS 52 - ELETTRONICA OGGI 471 - GIUGNO-LUGLIO 2018 a basso consumo, uno sviluppatore sarebbe propenso a prendere in considerazione l’MCU a 32 bit S124 con 64 o 128 kbyte di flash. Per dare inizio allo sviluppo con questi dispositivi, è disponibile la scheda di svi- luppo Synergy DK-124 (Fig. 3). Misura e verifica del consumo energetico di un microcontrollore La scelta di un microcontrollore a basso consumo è solo il primo passo per garantire che un sistema pos- sa raggiungere il suo stato di consumo energetico più basso. Al fine di utilizzare veramente la minor energia possibile, gli sviluppatori devono monitorare attenta- mente il consumo energetico del loro microcontrollore durante l’intero processo di sviluppo software. Ci sono diversi metodi che possono essere utilizzati per moni- torare il consumo energetico del microcontroller, tra cui sonde di corrente e debugger “energy-aware”. Le sonde di corrente non fanno altro che misurare la tensione attraverso un resistore di shunt e quindi cal- colare la corrente in base alla tensione e alla resisten- za dello shunt. Si tratta di una buona soluzione se si vuole misurare l’assorbimento di corrente dell’intero sistema. Se tuttavia si vuole davvero correlare l’at- tività del microcontrollore con l’energia consumata, un debugger “energy-aware” rappresenta la soluzio- ne migliore. Tale approccio permette allo sviluppatore di determi- nare quali aree di codice possono richiedere ulteriori ottimizzazioni o rielaborazioni. Ci sono diversi debugger che tengono conto dei con- sumi energetici e che lavorano con i microcontroller ARM Cortex-M, come ad esempio la sonda di poten- za I-Scope di IAR Systems per la sonda di debug- ging I-Jet (Fig. 4). Lo strumento I-Scope è dotato di un monitor di tensione interno basato su un amplificatore differenziale. Misura la caduta di tensione attraverso un resistore di shunt in serie con il rail di alimentazio- ne del microcontrollore. Ciò consente alla sonda di de- bug I-Jet di misurare la tensione campionando simulta- neamente il contatore di programma (PC) nel core CPU del microcontrollore (Fig. 5). Il contatore di programma indica alla sonda esatta- mente dove si trova l’applicazione nel suo processo di esecuzione. La correlazione tra le informazioni del contatore di programma e la misura della corrente consente di generare un profilo energetico dell’appli- cazione che può essere utilizzato per ottimizzare e ve- rificare il proprio codice. Suggerimenti e consigli per la progettazione di un dispositivo a basso consumo Individuare microcontrollori e hardware di monito- raggio idonei può permettere a uno sviluppatore di progettare un dispositivo a basso consumo. Il “trucco”, a questo punto, è saper ottenere il massimo da quel microcontrollore per ridurre al minimo il consumo energetico. A tale scopo, ci sono diversi suggerimenti generali che uno sviluppatore può seguire. Tra questi: Creare un budget iniziale per la batteria con stime di consumo minimo, massimo e medio. Utilizzare il timer di basso consumo per pilotare tutti i tick interni di sistema per uno scheduler o RTOS. Porre la CPU in modalità “sleep” il più spesso possibi- le (senza comunque trascurare i tempi di risveglio e spegnimento per le applicazioni in tempo reale). Creare un sistema guidato dagli eventi. Si possono utilizzare gli interrupt per riattivare il sistema, fargli svolgere il suo compito e poi tornare immediatamen- te in modalità di “sleep”. Fig. 4 – Una volta collegato a IAR I-Jet, I-Scope può essere utilizzato per misurare la tensione e la corrente di sistema e la corrente del microcontrollore; tutti questi valori vengono poi correlati al contatore del programma (PC) per determinare quali aree di codice stanno assorbendo lamaggior quantità di energia. (Fonte: IAR Systems Software) Fig. 3 – La scheda di sviluppo Synergy DK-124 di Renesas è dotata di un comparatore analogico a basso consumo e prevede più “sleep mode” oltre alla possibilità di funzionamento a basso consumo energetico (Fonte: Renesas)
Made with FlippingBook
RkJQdWJsaXNoZXIy MTg0NzE=