Atmega328: indroduzione al microcontrollore

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