EO_Lighting-476
VI Lighting LIGHTING 19 - MARZO 2019 Durante un workshop pratico finalizzato all’introdu- zione di un gruppo di “millennial”, che aveva già una base di conoscenza d’informatica, all’ Arte della program- mazione embedded, uno dei primi esempi di progetti è stato il proverbiale “Hello (Embedded) World” che ovviamente intendeva: far lampeggiare un LED (Light- Emitting Diode). L’istruttore, senza perdersi in troppi dettagli, ha guidato la classe attraverso la creazione di una semplice porta I/O e utilizzato la soluzione più semplice possibile. Ciò significava una coppia di blocking (waiting) loop e due assignment che, come aveva spiegato, sarebbero stati convertiti in una singola istruzione per microcontroller (MCU) (bit set e bit clear) dall’ovviamente “intelligente” compilatore C. Ben presto, la stanza si è riempita con la luce intermittente di molti LED rossi. Ma buona parte dei partecipanti è risultata delusa dal fatto che con gran- de disappunto del presentatore, la folla non sembrava troppo entusiasta del risultato. Dal fondo della stanza è iniziato un brontolio. Ben presto la ragione del malcontento del gruppo veni- va rivelata: oltre al lampeggio , c’era il tipico respiro (ov- vero una pulsazione eseguita in modo graduale si passa da uno stato di luminosità zero per poter giungere al massimo livello di luce per poter poi di nuovo scende- re gradualmente e quindi ricominciare daccapo) tipico di molti computer portatili e cellulari moderni quando vanno in standby. Come spesso accade, era una questio- ne di aspettative errate. “A corto” di MIPS A questo punto l’istruttore ha cercato di accontentare il pubblico, sottolineando comunque la relativa complessi- tà che il nuovo compito comportava. Era stato necessario introdurre un timer e con una modulazione PWM (Pul- se Width Modulation) regolare l’uscita luminosa visibile del LED controllandone il duty cycle. Successivamente ha spiegato la necessità di apportare modifiche graduali mediante una serie di passi (step) verso l’alto e verso il basso di una rampa definita in una tabella. La temporizzazione di ogni step richiedeva un altro timer (più lento), che produceva un interrupt. La MCU dovreb- be rispondere a questo interrupt ed effettuare gli opportu- ni calcoli (o consultare una tabella di ricerca) per assegna- re un nuovo valore di duty cycle al PWM. Si trattava di spiegazioni troppo complesse per un pub- blico non esperto in informatica, complessità che è an- data aumentando con il calcolo dell’inviluppo. Questi in sintesi i calcoli necessari: Un semplice progetto per “far respirare” i LED In questo articolo viene descritto un approccio molto semplice che permette di riprodurre il fenomeno noto come “respirazione dei LED” senza “intaccare” le prestazioni del microcontrollore che restando disponibili per l’esecuzione di altri compiti Lucio Di Jasio Business Development Manager - MCU8 Division Microchip Technology Fig. 1 – Finestra MCC project resources
Made with FlippingBook
RkJQdWJsaXNoZXIy MTg0NzE=