Sei sulla pagina 1di 6

Da Wikipedia, l'enciclopedia libera.

Jump to navigationJump to search

Microcontrollore PIC 18F8720 in contenitore 80-pin TQFP.


Un microcontrollore (in inglese microcontroller in acronimo MCU ovvero
MicroController Unit), in elettronica digitale, � un dispositivo elettronico
integrato su singolo circuito elettronico.

Nato come evoluzione alternativa al microprocessore e utilizzato generalmente in


sistemi embedded ovvero per applicazioni specifiche di controllo digitale.

Indice
1 Storia
1.1 I primi modelli
1.2 L'evoluzione della tecnologia CMOS
1.3 Le interfacce JTAG e ONCE
2 Descrizione
2.1 Differenze col microprocessore
2.2 DSP
2.3 Componenti
3 Motivazioni del successo
4 Mercato
5 Applicazioni di impiego
5.1 Elettronica di massa
5.2 Comunicazioni e trasporti
6 Sistemi di sviluppo
7 Note
8 Voci correlate
9 Altri progetti
10 Collegamenti esterni
Storia
I primi modelli

Il primo microcontrollore
Il primo computer on-chip ottimizzato per applicazioni di controllo � stato il
modello 8048 di Intel, uscito 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 in linguaggio macchina.

L'evoluzione della tecnologia CMOS


Lo sviluppo del CMOS e successivamente della 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 alla RAM ed alla ROM integrava convertitori A/D, porte di I/O, SPI
(Serial Peripheral Interface), SCI (Serial Communication Interface), timers
multifunzione, EEPROM, interrupts ed altro ancora, comprendendo persino il firmware
di un 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
ns (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 [1] ha presentato 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.

Le interfacce JTAG e ONCE


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.

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 CISC con architettura von Neumann, anche se pi� di
recente sono apparsi microcontrollori con CPU ad architettura RISC, 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 pubblicati sistemi di sviluppo amatoriali e


professionali anche in modalit� open source.

Differenze col microprocessore


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.

Tabella 1: confronto microprocessore vs. microcontrollore[1]


Caratteristica Microcontrollore Microprocessore
Velocit� massima di clock 200 MHz 4 GHz
Capacit� elaborativa massima in MegaFLOPS 200 5 000
Potenza minima dissipata in watt (in stato di elaborazione[2]) 0,001 50
Prezzo minimo per singola unit� in USD 0,5 50
Numero di pezzi venduti annualmente (in milioni) 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

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[3]
Controller DMA
Moduli aggiuntivi
Contatori e timer
Moduli di comunicazione: USART, I�C, SPI, USB, Ethernet, IrDA, CAN, Bluetooth, Wi-
Fi, Zigbee
Interfacce analogiche o a tecnologia mista: ADC, DAC, PWM, Comparatori analogici
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.
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.[4]

� 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.[5]

I principali (in ordine decrescente per volumi di mercato) sono:[6]

Renesas Technology (Giappone)


Freescale Semiconductor (USA)
Atmel (USA)
Microchip Technology (USA)
Infineon Technologies (Germania)
Texas Instruments Incorporated (USA)
Fujitsu (Giappone)
NXP Semiconductors (Paesi Bassi)
STMicroelectronics (Francia, Italia)
Samsung Electronics (Corea del Sud)
Applicazioni di impiego
Elettronica di massa
L'enorme volume di pezzi prodotti deriva dall'impiego massiccio di questo
componente nei dispositivi elettronici di consumo e nei prodotti industriali di
massa.

Spesso tali dispositivi vengono utilizzati nei sistemi di pagamento come nelle
carte di credito, ma anche nelle smartcard o per le cartoline musicali di auguri.

Comunicazioni e trasporti
Un buon segmento di mercato � rappresentato dall'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.

Sistemi di sviluppo
L'implementazione in un sistema di sviluppo 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 nell'effettivo 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), 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) 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.

Note
^ I valori in tabella sono indicativi, per puro confronto di massima, e riferiti al
momento della stesura (inizio 2010)
^ In stato di riposo sleep, il consumo si pu� ridurre di un fattore 1000.
^ Non presente in tutti i modelli
^ fonte: Databeans
^ fonte: Luminary Micro
^ fonte: Databeans Archiviato l'8 marzo 2014 in Internet Archive.
Voci correlate
Microprocessore
Registri hardware nei microcontrollori
Sistemi embedded
Sistema di sviluppo
Altri progetti
Collabora a Wikizionario Wikizionario contiene il lemma di dizionario
�microcontrollore�
Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su
microcontrollore

Potrebbero piacerti anche