Sei sulla pagina 1di 10

Microcontrollore

Microcontrollore PIC 18F8720 della Microchip in contenitore 80-pin TQFP.


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 (special purpose) di controllo digitale.

Descrizione
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.
Generalmente sono dotati di CPU di tipo RISC con architettura Harvard, anche se pi di recente
sono apparsi microcontrollori con CPU ad architettura CISC, come ad esempio il Texas Instruments
MSP430, meglio predisposti per l'utilizzo dei moderni compilatori, piuttosto che dell'Assembly.
Taluni microcontrollori complessi (come il Freescale 68302) hanno un processore RISC separato
dal processor core.
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.
Per i microcontrollori sono rilasciati sistemi di sviluppo amatoriali e professionali anche in
modalit open source.

Cenni storici

Il primo microcontrollore 8048 Intel (1975)

Il primo computer on-chip ottimizzato per applicazioni di controllo stato il modello 8048 di Intel,
rilasciato nel 1975, con RAM e ROM sullo stesso chip. Questo componente stato utilizzato in pi
di un miliardo di tastiere per PC e numerose altre applicazioni.
Nei primi anni di sviluppo del microcontrollore, la maggior parte dei modelli era commercializzata
in due varianti. La pi economica era dotata di memoria di programma 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 che lo sovrastava.
La programmazione del firmware veniva fatta direttamente nel linguaggio macchina (LM o
Assembly).
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,
SPI (Serial Peripheral Interface), SCI (Serial Communication Interface), timers multifunzione,
EEPROM, possibilit di interrupts ed altro ancora, comprendendo persino un firmware di Monitor
(Buffalo) che permetteva di effettuare il caricamento di programmi in Ram e il debug on-chip,
tramite interfaccia seriale. 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 (package), 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, quali JTAG e On Chip Emulator (ONCE) della
famiglia Coldfire di Freescale, che consentivano di effettuare sia il debugging on-chip, che il
caricamento e la programmazione della flash interna. Queste interfacce potevano essere controllate
da applicazioni software su PC, che rendevano molto pi semplice il debug in background di
programmi in linguaggio ad alto livello (tipicamente il C), e di conseguenza meno costoso lo
sviluppo del firmware, limitando la necessit degli emulatori in-circuit.
Tutto ci ha ulteriormente incrementato l'utilizzo del microcontrollore nelle pi disparate
applicazioni.

Differenze tra microprocessore e microcontrollore


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.
A differenza dei microprocessori classici, adatti per un uso generale (general purpose), il
microcontrollore inoltre progettato per ottenere la massima autosufficienza funzionale ed
ottimizzare il rapporto prezzo-prestazioni in uno specifico campo di applicazioni.
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 di questi ultimi sia per l'integrazione in un solo chip di una serie di
componenti sia per fattori di economia di scala legati ai volumi di produzione molto pi elevati.
Confronto microprocessore vs. microcontrollore
Caratteristica
Velocit massima di clock
Capacit elaborativa massima in MegaFLOPS
Potenza minima dissipata in watt (in stato di elaborazione)
Prezzo minimo per singola unit in USD
Numero di pezzi venduti annualmente (in milioni)

Microcontrollore Microprocessore
200 MHz

4 GHz

200

5 000

0,001

50

0,5

50

11 000

1 000

DSP
Parallelamente al microcontrollore, e in continua evoluzione di potenza e di mercato, esistono i
DSP (Digital Signal Processor) che incorporano moduli specializzati nel trattamento digitale di
segnali analogici. I campi tipici di utilizzo sono nel controllo di azionamenti (come i motori), di

componenti per auto e avionica, di trattamento di segnali multimediali (codifica/decodifica audio e


video, streaming) e nella telefonia mobile.
Il DSP ha tipicamente una struttura a 32 bit, e prossimamente a 64 bit; la sua CPU ha un'architettura
esclusivamente RISC.

Componenti del microcontrollore

Microcontrollore STMicroelectronics STM32F103 R6T6


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 e/o GPIO configurabili
Gestione Interrupt
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, Touch sensor)

Motivazioni del successo


Il successo e l'enorme crescita del mercato di questi componenti sono dovuti a questi fattori:

Basso costo (consente di sostituire 1 o pi circuiti integrati tradizionali a costo inferiore).


Ampia scalabilit di prestazioni, di complessit (da 8 pin a 144 pin) e velocit (da 1 MHz a
200 MHz).
Vasta gamma di dotazioni in periferiche e moduli specializzati.
Ridotto (al limite = 0) numero di componenti esterni, ovvero semplicit di realizzazione.
Facilit di programmazione dovuta anche ai numerosi tool di sviluppo disponibili.
Ampia (e spesso libera) disponibilit di librerie, codici di esempio e documentazione
Possibilit e facilit di riprogrammazione (in-field e in-system).
Grande flessibilit applicativa.
Brevi tempi di introduzione sul mercato del prodotto finito.

Applicazioni di impiego

L'enorme volume di pezzi prodotti deriva dall'impiego massiccio di questo componente nei
dispositivi elettronici di consumo e nei prodotti industriali di massa.
Difatti, al primo posto in classifica come segmento di mercato troviamo l'automotive (auto e altri
mezzi di trasporto), che utilizza decine, in alcuni casi anche centinaia, di componenti per singola
unit industriale venduta.
Segue il segmento della telefonia mobile e delle telecomunicazioni in genere, quindi vengono i
prodotti medicali, i consumer 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.

Mercato
Il microcontrollore occupa una posizione rilevante nel mercato complessivo dei semiconduttori, con
una stima di introiti per circa 14 miliardi di dollari statunitensi e 10,8 miliardi di pezzi venduti nel
2008. La stima di crescita prevede un incremento del 10 % fino al 2014, mentre i pezzi venduti
saranno 14 miliardi per la fine del 2010.
Comunque un mercato molto frammentato, con pi di 40 produttori e pi di 50 architetture, nessuna
delle quali detiene pi del 5% del mercato. Il segmento delle MCU a 32 bit quello maggiormente
in crescita, con introiti annui attuali (2009) di circa il 25% del totale.
I principali (in ordine decrescente per volumi di mercato) sono:

Motorola (USA)
Renesas Technology (Giappone)
Freescale Semiconductor (USA)
NEC (Giappone)
Fujitsu (Giappone)
Infineon Technologies (Germania)
Microchip Technology (USA)
STMicroelectronics (Francia, Italia)
Micron Technology (USA)
Atmel (USA)
NXP Semiconductors (Paesi Bassi)

Sistemi di sviluppo
Per sistema di sviluppo sintende linsieme 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).
Limplementazione 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, se in linguaggio Assembly, il programma deve essere assemblato, cio tradotto
nelleffettivo codice macchina numerico (generalmente esadecimale). La conversione viene fatta da
un Assemblatore specifico per processore, o famiglia di processori. Se codificato in alto livello, il
programma deve essere compilato, per mezzo di un compilatore che lo converte prima in
linguaggio Assembly, e quindi nell'effettivo codice macchina, in due passaggi successivi. Anche il
compilatore deve essere specifico per processore, o famiglia di processori.

Nella maggior parte dei casi, la complessit delle funzioni di un programma per microprocessore,
richiede la suddivisione in moduli funzionali (o sottoprogrammi). Ciascun modulo viene quindi
assemblato in modalit rilocabile (ad indirizzi non determinati). L'incorporamento di tutti i moduli
assemblati agli indirizzi definitivi, viene effettuato, in un'ulteriore passaggio, da un Linker, che
genera il codice macchina definitivo (codice eseguibile, file con estensione *.hex), in un formato
opportuno per poter essere trasferito nella memoria del processore, ed eseguito.
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 o real-time) 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.
Di base un debugger deve permettere:

Il caricamento del codice eseguibile in memoria


L'avvio e l'interruzione del codice eseguibile
L'inserimento di breakpoints, eventualmente condizionati a specifici eventi
L'ispezione e modifica di variabili, dati e registri
L'ispezione di parti del programma

Esistono due modalit di debug: tramite emulatore in-circuit (ICE) o tramite l'interfaccia di debug
integrata nel microprocessore. Per entrambe le modalit sono disponibili ambienti integrati di
sviluppo (IDE) per PC, che gestiscono tutte le fasi descritte, dall'editing al debugging in alto livello.

PIC (microcontrollore)
PIC una famiglia di circuiti integrati a semiconduttore con funzioni di microcontrollore.
Microchip Technology non usa il termine PIC come un acronimo; il suo nome aziendale :
"PICmicro". Anche se generalmente sta per "Programmable Interface Controller", il suo primo
produttore la General Instrument usava l'acronimo per "Programmable Intelligent Computer".
Inizialmente sviluppato nel 1975 in grado di svolgere un set di istruzioni ridotto (RISC), la
versione pi piccola ha 33 istruzioni assembly.

PIC1655A della General Instrument

Versioni

Vari PIC finestrati

Nell'arco del tempo ne stata resa disponibile una ampia variet di versioni, diverse sia come
tecnologia costruttiva, come forma fisica (numero di piedini o pin) che come quantit o tipo di
memoria, oltre alle funzioni di ingresso uscita.
Ne esistono versioni con programma su ROM mascherata (mask), quindi non riprogrammabili,
versioni CMOS programmabili una sola volta OTP, versioni EPROM con finestra per cancellazione
tramite
raggi
UV
e
versioni
con
memoria
flash.
Le versioni CMOS hanno all'interno del nome del componente una C (es. PIC16C505), le versioni
ROM hanno CR (es. PIC16CR57A) e le versioni flash hanno una F (es. PIC18F452).
La serie C ormai obsoleta per cui le versioni pi usate sono quelle con memoria di tipo FLASH,
che
si
possono
programmare
tantissime
volte
in
breve
tempo.
Il PIC pi conosciuto il PIC16F84: ormai stato soppiantato dal pi completo PIC16F88, con il
quale quasi completamente compatibile (occorre solo cambiare l'inizializzazione delle periferiche
e ricompilare il codice per la corretta mappatura dei registri). Il 16F88 al suo interno ospita
numerosissime periferiche come l'USART, 3 temporizzatori, 2 comparatori e un A/D a 7 canali. Ha
anche un oscillatore interno e quindi le porte OSC1 e OSC2 possono essere usate come ingressi o
uscite (RA6, RA7); la porta di reset/programmazione (MCLR), se non serve pu essere utilizzata
come ingresso generico (RA5), ma non come uscita. Inoltre si pu leggere e scrivere la memoria di
programma
(e
non
solo
la
EEPROM
dati)
direttamente
da
codice.
Con la stessa piedinatura del 16F84, oltre al gi citato 88 (e 87, uguale all'88 ma senza A/D), ci
sono i 627/628/648A, 716 e 818/819. Poi ci sono altre versioni simili, ma con maggiori piedini di
ingresso
e
di
uscita
ad
esempio
le
versione
16F876
e
16F877.
La serie PIC16, in via di abbandono da parte di Microchip, verr presto totalmente sostituita dalla
serie PIC18. Quest'ultima serie garantisce un set di periferiche molto pi esteso, consumi minori e
soprattutto costi minori. Il diretto equivalente del 16F84 il 18F1220, che comprende anche una
USART, una MSSP, ingressi analogici e via discorrendo. La serie speciale 18FJ, non disponendo di
EEPROM a bordo, la serie pi economica prodotta da Microchip. Utilizzando infatti
microcontrollori con pi memoria di programma rispetto a quanta effettivamente necessaria,
possibile scrivere su quest'ultima riservandosi una zona ad uso simil-EEPROM.
Le versioni viste finora lavorano su dati a 8 bit ma vi sono anche versioni a 16 e 32 bit come le
famiglie dsPIC30F, dsPIC33F, PIC24F e PIC24H a 16 bit e la famiglia PIC32MX a 32 bit.

Istruzioni
Il set di istruzioni del PIC ne comprende 35 nelle versioni di bassa potenza e fino a 77 in quelli con
prestazioni pi elevate. Ogni istruzione per essere eseguita impiega 4 cicli di clock. Tranne le
istruzioni che comportano un salto all'interno della memoria (GOTO, CALL, RETLW) che
impiegano 8 cicli, nelle versioni recenti vi sono altre istruzioni che impiegano 8 cicli come quelle di
trasferimento dati tra memoria e memoria (MOVFF).

Architettura interna

Come si nota dallarchitettura interna essa di tipo Harvard e a bus separati; i bus dati e controllo
sono a 8 bit le istruzioni hanno un formato a 12, 14, 16 o 32 bit.
Nelle ultime versioni stata implementata un'architettura a 16 bit o 32 bit. Esiste anche il bus dello
stack a partire da 9 bit in su.

Memorie
A causa dell'architettura RISC, dove nell'istruzione oltre al significato compreso anche l'indirizzo
di memorizzazione o di salto, la memoria viene segmentata. Per cambiare segmento in uso occorre
agire su appositi registri, fatto questo che complica la programmazione dei PIC tramite linguaggio
assembly, ma non quella con linguaggi di alto livello.

RAM
La RAM ha una larghezza di 8 bit e una profondit che varia da pochi byte (25 nei PIC16C5x) fino
a qualche kilobyte.

Parola di programma
La larghezza della parola di programma varia da 12 bit (ad esempio, nel PIC16C54) a 14 bit (ad
esempio, nel PIC16F628) a 16 bit (ad esempio, nel PIC18F4520).
La sua profondit varia da 512 byte a 128 kibibyte (KiB).

Stack
Lo stack un tipo di memoria, separata da quella principale, caratterizzata da un particolare metodo
di accesso (LIFO Last In First Out). dotato di un suo bus la cui profondit va da 2 posizioni a 8
posizioni e giunge alle 31 nei PIC della serie 18. La sua larghezza parte da 9 bit.

EEPROM
Nelle versioni con memoria flash pu essere presente una memoria interna di tipo EEPROM
accessibile come fosse una periferica per potervi memorizzare in maniera indelebile (minimo 40
anni) dei dati. La sua profondit varia da 64 a 1024 byte.

Periferiche
La presenza di periferiche a bordo del chip quella che fa la differenza tra un microprocessore ed
un microcontrollore. Nei PIC si parte da dei semplici I/O (Input/Output) digitali per arrivare a
funzioni complesse passando attraverso una notevole variet di altre funzioni.

I/O paralleli
La funzione di ingresso e uscita di dati digitali stata la prima funzione implementata. Nei PIC
divisa in porte da 8 o meno bit ognuna. possibile programmare ogni bit come ingresso o come
uscita singolarmente.
In alcune versioni possibile avere degli ingressi con conversione analogico digitale (ADC) da 10 o
12 bit. In altre gli ingressi analogici vengono diretti a dei comparatori. In alcuni casi possibile
attivare dei resistori interni (weak pull-up ) per facilitare il collegamento con pulsanti ed interruttori.

I/O seriali
Pu essere presente una grande variet di porte seriali: IC, USART, SPI, CAN, USB.

PWM
Si arriva fino a 5 canali PWM (Pulse Width Modulation o Modulazione a larghezza di impulso) a
10 bit.

Timer
Su tutte le versioni implementato almeno un temporizzatore da 8 bit. Si arriva fino a 5
temporizzatori con larghezze a 8 o 16 bit. Su tutte inoltre implementato un temporizzatore
speciale chiamato WDT (Watch Dog Timer o cane da guardia), serve (se utilizzato) a far ripartire il
microcontrollore in caso di blocco del programma. Il timer funziona in base alla frequenza di lavoro
del PIC e/o pu esserne data, tramite un apposito piedino, una diversa da quella di lavoro tramite un
oscillatore esterno. La funzione timer ha inoltre, la possibilit di avere un divisore di frequenza
(PRESCALER), esso divide la frequenza di lavoro di: 2, 4, 8, 16, 32, 64, 128, 256 volte.

Particolarit
La RAM trattata totalmente come fosse un registro ed ogni suo membro chiamato file register o
pi semplicemente file.
Non esiste un accumulatore (come nei microprocessori) vero e proprio ma un registro chiamato W
(Working register) e i risultati di tutte le operazioni logico-aritmetiche possono essere messi
indifferentemente nel file operando o in W.

Compilatori con linguaggi evoluti


Il linguaggio di programmazione dei PICmicro l'Assembly, ma sono stati implementati alcuni
compilatori per semplificarne la programmazione. Sono disponibili infatti molti compilatori di
linguaggi con sintassi simili al BASIC oppure compilatori di C o Pascal. Esistono anche linguaggi
gratuiti come Jal e SDCC.
L'utilizzo di linguaggi di programmazione ad alto livello come C, Basic e Pascal permette di
riutilizzare codice sorgente sviluppato per altre architetture e garantisce una maggiore leggibilit,
nonch una gestione pi organizzata delle sezioni di programma. La maggior parte dei compilatori,
comunque, permette di inserire sezioni di programma scritte direttamente in assembly, per
minimizzare i tempi di esecuzione. I compilatori pi conosciuti sono quelli di MikroElektronika ed
il compilatore PICC di CCS, tra l'altro riconosciuto come compilatore di terze parti direttamente da
Microchip. Microchip mette a disposizione i compilatori C per le famiglie pi avanzate: C18, C24,
C30 (16bit) e PIC32 (32bit), e una libreria di codice open source per una grande variet di
applicazioni.

Potrebbero piacerti anche