MCU: Introduzione al microcontrollore ATMEGA328

31/03/21, Nicola Morra | (la videolezioneUn 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. 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).