Dopo la pubblicazione del mio articolo precedente, ho ricevuto alcune richieste in merito a consigli su quale percorso seguire per avventurarsi nel mondo dei microcontroller, la programmazione firmware e l'interfacciamento con componenti elettroniche. Diciamo subito che la cosa non è facile, specie se non si ha avuto la possibilità in precedenza di poter sperimentare con tematiche di questo tipo e se, soprattutto, magari avete avuto la sfortuna all'Università di studiare per l'esame di elettronica il moto degli elettroni, le equazioni di Schrödinger, il principio di esclusione di Pauli e tutte queste amenità senza che vi abbiano mai spiegato, e dico mai, poi praticamente e concretamente quei concetti come si applicano. Tuttavia, mai scoraggiarsi, soprattutto considerando che oggi come oggi grazie ad internet si ha la possibilità di accedere a una miniera di informazioni in tempo zero, partecipare a community, porre domande in giro.
Diciamo subito che condizione necessaria per intraprendere questo viaggio è avere un minimo di rudimenti di architettura degli elaboratori: un po' di basi di circuiti logici, come è strutturato un processore, programmazione assembler, ecc, serve. In assenza di conoscenze di questo tipo, vi esorto a farvi una rapida lettura su qualche testo di architettura degli elaboratori. Se ne trovano diversi in giro: io all'università ho studiato sul libro "Introduzione all'architettura degli elaboratori", di Daniel P. Bovet, edito da Zanichelli.

In alternativa potete scegliere un qualunque altro testo. Non è fondamentale entrare proprio nel dettaglio delle moderne architetture, però conoscere delle cose vi risparmierà tempo e soprattutto mal di testa.
Fatta questa premessa, passiamo poi agli aspetti più concreti. Innanzitutto, per cominciare vi dovete scegliere un'architettura di microcontroller. Ne esistono una vera e proprio caterva, anche se spesso architetture in apparenza differenti poi sono in realtà molto simili. Non ne parliamo poi di produttori: se solo ci limitiamo ai principali, c'è ne sono almeno una decina da citare (Atmel, Microchip, Silicon Lab, ecc). Diciamo anche che forse per fini autodidattici, la piattaforma più completa è rappresentata da un famoso prodotto 100% Open e per giunta Made in Italy: Arduino. È anche vero, però, che su puntate a "ricadute di mercato", forse scegliere architetture più commerciali è meglio.
Per quanto mi riguarda, dato che i chip della famiglia CC1110-F32 di Texas Instruments hanno un core basato sul celebre (e ancora "leader di mercato") 8051 di Intel (o meglio, Intel MCS51), ho dovuto concentrare gli sforzi su questa piattaforma, e i riferimenti che vi darò sono prevalentemente basati su di essa.
Scelta l'architettura, dovete comprarvi uno starter kit, detto anche developer kit, che in genere è formato dal MCU che scegliete (in genere oggi ad archiettura SMD) montato su una board che vi permette di poter facilmente interagire con il chip sia dal punto di vista fisico che di programmazione. Queste board come minimo forniscono un'interfaccia RS-232, ma alcune recenti anche una USB o una Ethernet, la piedinatura completa del chip su connettori facilmente manipolabili, una porta di debugging (basata sulla JTAG o altre interfacce proprietarie). Spesso, molte di queste board hanno anche una parte di prototipizzazione per poter fare esperimenti con altri componenti. Per quanto riguarda poi il kit da scegliere, anche qui è una vera e propria giungla. Si va da prodotti semi-didattici a finire a prodotti per ambiti industriali, e nell'ambito dello stesso produttore siate preparati a dover scegliere fra una decina di diversi modelli di MCU e di kit di sviluppo. Io ho tagliato la testa al toro, ed ho scelto per cominciare uno dei tanti kit base prodotti da Silicon Lab, nello specifico uno della famiglia C8051F31X, il C8051F310, che vedete fotografato si seguito.

Il kit si può acquistare su DigiKey ad un prezzo veramente irrisorio (circa 56 euro) e vi arriva in circa 3gg lavorativi dagli USA, ed è completo di tutto quello che vi serve per cominciare (debugger, alimentatore, IDE e compilatori free, documentazione, esempi, area di prototipizzazione). Purtroppo devo anche darvi una brutta notizia: tutto quello che gira attorno alla programmazione MCU implica l'esistenza di Windows. Mettetevi l'animo in pace ma purtroppo è così. Per quanto mi riguarda, un'istanza di Parallels ad hoc con Windows mi ha permesso di poter usare comunque i miei Mac senza alcun problema (occhio che per funzionare bene, il debugger di Silicon Lab richiede Parallels 5).
Se per voi il budget non è un problema e siete interessati a lavorare direttamente con MCU con funzionalità Wireless come il CC1110-F32, allora potete acquistare un kit già con queste funzionalità. Silicon ne ha un paio a catalogo e non costano molto, ma date uno sguardo a Microchip. Quello Texas è veramente qualcosa di formidabile, ed esce completo di mouduli per sviluppare a 315, 433 e 868 Mhz, oppure c'è il kit a 2.4Ghz. Il kit comprende due board completissime, e i moduli necessari, mentre tutta la parte software si scarica on-line. Purtroppo per la parte IDE Texas si affida a IAR, che è a pagamento, ma per qualunque cosa bussate pure
.

Gli unici due problemi sono: il costo, 650$ direttamente dal sito Texas; il fatto che manca una vera e propria area di prototipizzazione. Ma per il resto, quanto di più completo esista. Un consiglio? Se non avete requisiti specifici e immediata voglia di partire con la parte di RF, allora cominciate con un kit più economico con il Silicon di cui sopra.
Passiamo ora alla parte letteraria.
|
|
Ci sono dei libri che sono fondamentali e molto istruttivi. Innanzitutto, è importante farsi le ossa con l'architettura dell'8051. Un testo che io ho trovato ottimo è The 8051 Microcontroller and Embedded Systems, di Muhammad Ali Mazidi. È un libro che illustra l'architettura del microcontroller, dalla parte fisica fino alla programmazione in C, passando per quella in Assembler. Illustra, inoltre, varie tecniche di programmazione per interfacciarsi con l'hardware esterno, i timer, la gestione degli interrupt, ecc. Nei capitoli finali, inoltre, c'è anche una parte dedicata all'uso dei convertitori analogico/digitali, di DAC, di sensori, oltre che ci sono esempi per interfacciare il microcontroller con altre componenti esterne come motori DC, stepper e altro. Infine, questo libro può anche rappresentare un ottimo libro di introduzione proprio all'architettura degli elaboratori, ovviamente focalizzato sulle architetture Harvard quali i microcontroller. |
![]() |
Un libro veramente molto utile è Embedded C di Michael J. Pont. È un libro che focalizza l'attenzione esclusivamente sulla programmazione C dell'8051, e astrae quasi totalmente da aspetti connessi con l'hardware (è un obiettivo dichiarato del libro), ma certamente è un ottimo punto per cominciare a programmare con queste architetture. Si comincia con cose molto semplici, come piccoli esempi per interfacciarsi con semplici led o interruttori di varia natura, e si finisce man mano con il gettare le basi di un piccolo sistema operativo real-time. Vengono, quindi, illustrati molti aspetti connessi con i timer di sistema, gli oscillatori esterni, il clock, ecc. I concetti espressi nella maggior parte del libro sono una vera e propria miniera formativa, che gettano luce su molti aspetti che oggi come oggi sono totalmente nascosti dai sistemi operativi general purpose. Si finisce poi con trattare aspetti connessi con la gestione delle UART (tipo RS-232), e con la modellazione software di un sistema di sorveglianza. Un libro da non perdere, secondo me. |
![]() |
Sempre dallo stesso autore del libro di prima, c'è un vero e proprio catalogo di pattern per la programmazione con microcontroller 8051. Patterns for Time-Triggered Embedded Systems è addirittura un libro liberamente scaricabile on-line, con oltre 1000 pagine di esempi, casi d'uso e software. In realtà la parte software è globalmente quella presente nel libro Embedded C, e forse pecca anche un pelo di "didattica". Invece, questo libro è il completamento di quello precedente per quanto riguarda la parte hardware, con esempi, consigli di configurazioni, soluzioni a problematiche tipiche di integrazione. Un ottimo testo di riferimento, soprattutto se si considera che è gratis. |
Veniamo, infine, alla parte on-line. Googlando troverete una vera e propria miniera di informazioni sparse per la rete. Ci sono, inoltre, diverse community attive, dove troverete materiale didattico, esempi finiti, oltre che spesso e volentieri forum e chat con cui interagire con le persone. Il più completo che ho trovato finora è www.8051projects.net, ricchissimo di tutorial oltre che con un forum dove ci sono molti esperti che sapranno eventualmente darvi consigli. Un altro sito altrettanto buono è www.8052.com (oggi si parla di 8051 per indicare in realtà derivati dell'8052). Anche qui troverete materiale e spunti per applicazioni. Per quanto riguarda la parte Texas Instruments, la community sul sito di Texas è molto ricca di esempi, documentazione, librerie. Inoltre, nel forum spesso e volentieri troverete risposte direttamente dai progettisti Texas: penso sia la fonte più autorevole
Che dire: penso di aver detto tutto. Giusto per completezza, se non ne avete una, pensate di fare l'acquisto di una stazione saldante con controllo di temperatura. Su ebay ne trovate molte intorno ai 50€: sono degli ottimi prodotti tutto sommato, di cui avrete sicuramente bisogno quando vorrete fare delle prove. Su Youtube poi si trovano decine di video di esempio su come saldare al meglio: addirittura c'è chi salda chip SMD, e presto ci proverò anche io. Per qualunque cosa, non esitate a chiedere



