MCU: Introduzione al microcontrollore ATMEGA328
31/03/21, Nicola Morra | (la videolezione) Un microcontrollore (MCU),
detto anche computer single chip
è un
sistema a
microprocessore completo, integrato in un solo chip,
progettato per ottenere la
massima
autosufficienza funzionale ed ottimizzare il rapporto prezzo- prestazioni
per una specifica applicazione, a differenza,
ad esempio, dei microprocessori impiegati nei personal computer, adatti
per un
uso più
generale. I microcontroller
sono la
forma più
diffusa e
più invisibile
di computer. Comprendono la
CPU, un certo quantitativo di memoria RAM e memoria ROM (può essere
PROM, EPROM, EEPROM o FlashROM) e
una serie
di interfacce
di I/O (input/output) standard,
fra cui
bus (I²C,
SPI, CAN).
Le periferiche integrate sono
la vera forza di questi
dispositivi: si possono avere convertitori
ADC e
convertitori DAC multicanale, timer/counter,
USART, numerose
porte esterne bidirezionali bufferizzate,
comparatori, PWM.
Le I/O PORTS sono le porte di ingresso ed uscita solitamente utilizzate per acquisire dati o per pilotare componenti. Usualmente, una porta I/O è costituita da 8 pin (anche meno qualche volta), programmabili sia come ingressi che uscite. I TIMER
consentono al sistema di misurare
e sincronizzare sia
eventi interni
che esterni.
Sono impiegati anche
per la
generazione di segnali esterni di controllo. Le INTERFACCE
SERIALI sono utilizzate per scambiare
dati con
il mondo esterno.
Sono frequenti
periferiche di comunicazione sia sincrone (SPI, I2C) che asincrone (USART). Le prime sono utilizzate solitamente per
la comunicazione
con dispositivi
esterni (memorie, sensori),
le seconde
per comunicare
con PC
o altri
µC (comunicazione
seriale RS232 o RS422/485).
Il microcontrollore ATMEGA328 (vedi fig. in alto) integra in un unico chip la CPU (processore), la memoria e le periferiche. E’ un’ architettura di tipo Harvard, quindi la memoria che contiene il programma e la memoria che contiene i dati sono separate e non condividono lo stesso bus. (hanno due canalI di comunicazione distinti). Nell’ATMEGA328 è presente una memoria FLASH (memoria non volatile) da 32KB, quindi il programma non potrà essere più grande di 32KB; la memoria RAM è una memoria di tipo statico (SRAM) ed ha una capacità di 2KB; la EEPROM, invece, è una ROM programmabile diverse volte (cancellabile e programmabile elettricamente), ha una grandezza di 1KB. La FLASH è la memoria di un programma ed è organizzata in parole da 16 bit, ogni locazione di memoria è grande 16 bit, infatti le istruzioni dell’ATMEGA sono a 16 bit (o 32 bit). Sul chip sono presenti 3 porte parallele (quelle che fanno capo i vari pin digitali (PORTB, PORTC E PORTD) e tre 3 porte seriali (SPI, TWI e USART). La USART è la classica porta seriale (sincrona e asincrona) che si usa pure in ARDUINO per interfacciarsi alla porta USB del PC. L'ATMEGA328 può comunicare con altri microcontrollori utilizzando uno tra i tre protocolli seriali disponibili: oltre a quello classico seriale, il protocollo I2C e l'SPI. All'interno del microcontrollore esiste anche un convertitore analogico-digitale multiplexato (a monte del convertitore c’è un multiplexer, che consente di mandare sullo stesso convertitore uno tra i 6 segnali analogici disponibili sui relativi pin) e un comparatore analogico all’interno che serve per confrontare due segnali analogici su due pin particolari del circuito integrato. Completano lo schema 3 timer: 2 a otto bit e 1 a sedici bit. I timer, normalmente, si chiamano anche timer/counter perché il loro lavoro è quello di contare degli impulsi digitali e nel contarli possono funzionare pure come timer (ad esempio:1 impulso al secondo, se contiamo 60 impulsi alla fine abbiamo stabilito un tempo di 60 secondi, cioè 1 minuto).
Il microcontrollore ATMEGA328 (vedi fig. in alto) integra in un unico chip la CPU (processore), la memoria e le periferiche. E’ un’ architettura di tipo Harvard, quindi la memoria che contiene il programma e la memoria che contiene i dati sono separate e non condividono lo stesso bus. (hanno due canalI di comunicazione distinti). Nell’ATMEGA328 è presente una memoria FLASH (memoria non volatile) da 32KB, quindi il programma non potrà essere più grande di 32KB; la memoria RAM è una memoria di tipo statico (SRAM) ed ha una capacità di 2KB; la EEPROM, invece, è una ROM programmabile diverse volte (cancellabile e programmabile elettricamente), ha una grandezza di 1KB. La FLASH è la memoria di un programma ed è organizzata in parole da 16 bit, ogni locazione di memoria è grande 16 bit, infatti le istruzioni dell’ATMEGA sono a 16 bit (o 32 bit). Sul chip sono presenti 3 porte parallele (quelle che fanno capo i vari pin digitali (PORTB, PORTC E PORTD) e tre 3 porte seriali (SPI, TWI e USART). La USART è la classica porta seriale (sincrona e asincrona) che si usa pure in ARDUINO per interfacciarsi alla porta USB del PC. L'ATMEGA328 può comunicare con altri microcontrollori utilizzando uno tra i tre protocolli seriali disponibili: oltre a quello classico seriale, il protocollo I2C e l'SPI. All'interno del microcontrollore esiste anche un convertitore analogico-digitale multiplexato (a monte del convertitore c’è un multiplexer, che consente di mandare sullo stesso convertitore uno tra i 6 segnali analogici disponibili sui relativi pin) e un comparatore analogico all’interno che serve per confrontare due segnali analogici su due pin particolari del circuito integrato. Completano lo schema 3 timer: 2 a otto bit e 1 a sedici bit. I timer, normalmente, si chiamano anche timer/counter perché il loro lavoro è quello di contare degli impulsi digitali e nel contarli possono funzionare pure come timer (ad esempio:1 impulso al secondo, se contiamo 60 impulsi alla fine abbiamo stabilito un tempo di 60 secondi, cioè 1 minuto).