Il Microcontrollore
Per realizzare un automatismo l’elettronica ci mette a disposizione diverse possibilità.
La prima, la più tradizionale, si basa su componenti transistor, mosfet, integrati con porte logiche oppure
integrati operazionali. Il progettista, sfruttando le prerogative di ogni componente, cercherà di collegarli tra
loro fino ad ottenere il funzionamento richiesto. Questa si chiama in gergo ELETTRONICA CABLATA.
La seconda fa uso di un personal computer dove è più facile creare l’automatismo voluto simulandolo con
opportuno software. Una opportuna scheda di interfaccia tra il PC e il “mondo esterno” si occuperà di fare
arrivare gli impulsi e di mandare dei segnali in uscita per gestire l’automatismo (accender luci, azionare
motori ecc…)
La terza, quella di cui ci occuperemo, è quella di fare uso di un microcontrollore .
Il “cuore” della scheda Arduino è il microcontrollore.
In elettronica digitale il microcontrollore o microcontroller o MCU (MicroController Unit) è un dispositivo
elettronico integrato su singolo chip, nato come evoluzione alternativa al Microprocessore ed utilizzato
generalmente in sistemi embedded ovvero per applicazioni specifiche di controllo digitale.
Spesso il microcontrollore viene chiamato anche PIC che generalmente sta per "Programmable Interface
Controller", il suo primo produttore la "General Instrument" usava l'acronimo per "Programmable
Intelligent Computer".
Microcontrollore PIC
Il microcontrollore è progettato per interagire direttamente con il mondo esterno tramite un programma
residente nella propria memoria interna e mediante l'uso di pin specializzati o configurabili dal
programmatore. Sono disponibili in 3 fasce di capacità elaborativa (ampiezza del bus dati): 8 bit, 16 bit e 32
bit.
In figura è visibile lo schema a blocchi tipico di un microcontrollore che ricordo è molto simile ad un
personal computer (anche se con prestazioni molto più limitate), ma con la caratteristica di essere tutto su un
unico chip. Il cuore del sistema è la CPU (control process unit) con architettura von Neumann (in verde
sulla figura).
Alla CPU è assegnato il compito di elaborare il programma ed eseguire i calcoli richiesti.
I “serbatoi” della CPU sono i registri di memoria che sono di diversi tipi. Esistono poi una serie di circuiti
ausiliari che consentono il funzionamento di tutto il sistema tipo generatori di clock, alimentazione ecc… E
una serie di circuiti che permettono alla CPU di comunicare con l’esterno per dare o ricevere segnali. Tra
questi: le porte (in rosso sulla figura)
Figura 1 schema a blocchi del microcontrollore
L'ampia gamma di funzioni di comando e controllo disponibili, sia analogiche che digitali, integrate sullo
stesso chip, permette l'impiego delle MCU in sostituzione di schede elettroniche cablate tradizionali ben più
complesse e costose.
Breve storia
Il primo computer on-chip ottimizzato per applicazioni di controllo è stato il modello 8048 di Intel, rilasciato
nel 1975, con memorie di tipo RAM e ROM sullo stesso chip. Questo componente è stato utilizzato in più di
un miliardo di tastiere per PC e numerose altre applicazioni.
Nota:
memoria RAM = memoria scrivibile più volte (si cancella con comando elettrico)
memoria ROM = memoria programmabile una volta sola
memoria EPROM = memoria scrivibile più volte ma per cancellarla bisogna esporla sotto apposita lampada
a luce ultravioletta
Nei primi anni di sviluppo del microcontrollore, la maggior parte dei modelli era commercializzata in due
varianti. La più economica era dotata di memoria programmata in fabbrica (ROM) su specifiche del cliente
oppure programmabile dall'utente una sola volta (OTP, One Time Programming).
La seconda, più costosa, aveva la memoria di programma cancellabile EPROM mediante esposizione a luce
ultravioletta del chip tramite la finestrella trasparente sul contenitore. La programmazione del firmware
veniva fatta direttamente nel linguaggio macchina.
Lo sviluppo della tecnologia CMOS e, successivamente, HCMOS, nella prima metà degli anni Ottanta, ha
fornito un impulso decisivo alla diffusione dei microcontrollori, consentendo una notevole riduzione dei
consumi e della dissipazione nei chip. Per molti anni Motorola è stata leader mondiale per i microcontrollori.
Il suo 68HC11 si rivelò essere una pietra miliare, allorché fu presentato sul mercato nel 1985. Oltre a Ram e
Rom, integrava convertitori A/D, porte di I/O, , timers multifunzione, ed altro ancora. Con un ciclo
macchina di 333 nSec (3 MHz di clock), è in grado di eseguire mezzo milione di istruzioni al secondo,
consumando qualche decina di mA. Il suo progetto si è dimostrato talmente innovativo, da essere ancora
prodotto ed utilizzato, dopo più di un quarto di secolo.
Nel 1993, Microchip ha introdotto il modello di MCU PIC16C84, caratterizzato da memoria programma in
EEPROM, ovvero cancellabile elettricamente, che permetteva sia lo sviluppo veloce del prototipo del
prodotto finito, sia la modifica del Firmware a circuito montato (In-System Programming). La
semplificazione del contenitore, senza finestrella in quarzo, ha contribuito a ridurre il costo finale del
componente.
Nello stesso anno, Atmel ha rilasciato il primo MCU che utilizzava una memoria di tipo flash, ancora più
semplice e veloce da programmare/modificare, più compatta e con un ciclo di vita (cancellazioni) molto più
elevato.
Di pari passo venivano sviluppate interfacce, che potevano essere controllate da applicazioni software
su PC, che rendevano molto più semplice lo sviluppo di programmi in linguaggio ad alto livello
(tipicamente il C), e di conseguenza meno costoso lo sviluppo del firmware. Tutto ciò ha ulteriormente
incrementato l'utilizzo del microcontrollore nelle più disparate applicazioni.
Differenze tra microprocessore e microcontrollore
Come dicevamo prima la differenza sostanziale con il PC è che sul microcontrollore “tutto” è su un unico
chip.
Nel PC si potrebbe assimilare la CPU contenuta all’interno del microcontrollore a quello che viene
chiamato microprocessore del PC. Esistono cioè sul PC diversi componenti, ognuno specializzato su una
funzione.
Quando nell'aprile del 1972 Intel ha introdotto sul mercato il primo processore a 8 bit - lo 8008 - esso
consisteva di una ALU (Arithmetic&Logical Unit, ALU) per svolgere operazioni logiche e matematiche e di
una unità di elaborazione elementare (Control Processing Unit, CPU) per controllare il flusso di dati e
indirizzi tra la ALU e i circuiti esterni di supporto.
Successivamente, l'architettura interna del microprocessore (in seguito spesso chiamato semplicemente
CPU) si è evoluta velocemente con lo sviluppo di blocchi interni via via più complessi (maggior numero di
bit elaborati e movimentati) e con capacità e velocità di calcolo crescenti in modo esponenziale.
Per quanto potente, il microprocessore integra sul chip solo la logica di elaborazione, mentre richiede
sempre delle unità esterne - memorie, gestori di segnali e dispositivi periferici per poter scambiare
informazioni e interagire con l'esterno.
Il microcontrollore è invece un sistema completo, che integra in uno stesso chip il processore, la
memoria permanente, la memoria volatile e i canali (pin) di I/O, oltre ad eventuali altri blocchi
specializzati.
Anche l'esecuzione dei programmi applicativi si appoggia su un'architettura hardware diversa da quella
tipicamente usata per i microprocessori. Mentre questi ultimi, soprattutto quando usati per computer e
personal computer, eseguono i programmi applicativi appoggiandosi a dispositivi di memoria di massa o a
memoria volatile, per i microcontrollori il programma applicativo è tipicamente memorizzato su un
dispositivo di memoria ROM (come per esempio una EPROM) ed è quindi in realtà un firmware.
In generale, essendo concepiti per applicazioni specifiche e per l'uso in condizioni ambientali particolari che
impongono limitazioni sia in termini di consumi che in termini di dissipazione di potenza, i microcontrollori
presentano caratteristiche meno spinte rispetto ai microprocessori ma risultano più economici.
Tabella 1: confronto
microprocessore vs.
microcontrollore
Caratteristica
Velocità massima di clock
Potenza minima dissipata in Watt (in elaborazione)
Prezzo minimo per singola unità in euro
Numero di pezzi venduti annualmente (in milioni)
Microcontrollore
Microprocessore
200MHz
4GHz
0.001
50
0.5
50
11,000
1,000
Quindi riassumendo:
L'architettura del microcontrollore prevede un insieme di moduli fissi, comuni a tutti i modelli, e una
serie di possibili estensioni in funzione del costruttore, del prezzo e della fascia applicativa:
• Unità di elaborazione: CPU
• Memoria di programma: ROM, EPROM, FLASH
• Memoria dati: RAM e EEPROM
• Oscillatore interno o esterno
• Porte di I/O configurabili
A questi si aggiungono gli “optional”:
• Moduli aggiuntivi
o Contatori e timer
o Moduli di comunicazione: USART, I2C, SPI, USB, Ethernet, IrDA, CAN,Wi-Fi, Zigbee
o Interfacce analogiche o a tecnologia mista: ADC, DAC, PWM, Comparatori analogici
o Interfacce di visualizzazione e controllo: LCD, Touchsensor
Nel caso della scheda Arduino alcuni optional sono presenti fuori dal microcontrollore; come ad esempio
l’interfaccia che ci permette di comunicare con il PC. Questa interfaccia USB funziona grazie ad un
integrato inserito appositamente sulla scheda, che permette la comunicazione tra microcontrollore e PC.
Applicazioni del microcontrollore
L'enorme volume di pezzi prodotti deriva dall'impiego massiccio di questo componente nei dispositivi
elettronici di consumo e nei prodotti industriali di massa.
Al primo posto in classifica come segmento di mercato troviamo l’auto, che utilizza decine di componenti
per singola unità.
Segue il segmento della telefonia mobile e delle telecomunicazioni in genere, quindi vengono i prodotti
medicali e gli elettrodomestici.
Spesso utilizziamo questi dispositivi senza rendercene conto, come per le smartcard delle carte di credito o
per le cartoline musicali di auguri.
I principali costruttori di microcontrollori sono:
• Motorola (USA)
• Renesas Technology (Giappone)
• FreescaleSemiconductor (USA)
• NEC (Giappone)
• Fujitsu (Giappone)
• Infineon Technologies (Germania)
Microchip Technology (USA)
• STMicroelectronics (Francia, Italia)
• Micron Technology (USA)
• Atmel (USA)
• NXP Semiconductors (Paesi Bassi)
Arduino utilizza prodotti ATMEL
•
Sistemi di sviluppo
Per sistema di sviluppo s’intende l’insieme di strumenti (kit) software e hardware necessari alla generazione
del codice macchina che deve essere eseguito dal processore (implementazione del software), al suo collaudo
e messa a punto (debug).
L’implementazione consiste nella stesura del programma in linguaggio Assembly o di alto livello
(tipicamente il C), utilizzando un editor di testo generico o specifico per quel linguaggio. Una volta scritto, il
programma deve essere assemblato, cioè tradotto nell’effettivo codice macchina numerico (generalmente
esadecimale). La conversione viene fatta da un Assemblatore specifico per processore, o famiglia di
processori; il compilatore deve essere specifico per processore, o famiglia di processori.
Per Arduino una volta finito di scrivere il programma sull’apposito software, alla pressione del tasto up-load
il programma stesso verrà tradotto in codice macchina eseguibile ed inviato alle memorie del
microcontrollore.
La fase di debug consiste nel far eseguire il software dal processore, in condizioni quanto più simili a quelle
reali di funzionamento (emulazione), verificando (in tempo reale) che il suo comportamento ad ogni evento
previsto sia conforme alle specifiche di progetto. Nel caso di errori o anomalie, il software viene corretto, un
nuovo codice eseguibile generato e trasferito in memoria, per essere nuovamente verificato. Questo processo
continua fino a che il programma non sia stato completamente collaudato. Successive fasi di validazione e
verifica possono richiedere ulteriori interventi sul software da parte dello sviluppatore.
Scarica

Il Microcontrollore - Home Page CG Erasmo