Sei sulla pagina 1di 2

L'ATmega328P, contenuto in Arduino, fa parte dei microcontrollori embedded.

L'ATmega, sviluppato dalla Atmel, un microcontrollore Cmos a bassa potenza ad 8bit basato su una avanzata architettura RISC (Reduced Instruction Set Compuntig) dell'AVR. Un diagramma a blocchi semplificato, che contiene le componenti pi importanti dell' Atmega, riportato qui sotto:

L'ATmega328P composto dalle seguenti caratteristiche: 32KB di ISP (In-Sistem Programmable) flash per lo stoccaggio dei programmi; 2KB di SRAM per mantenere le variabili di tempo di esecuzione; una EEPROM da 1KB per raccogliere tutti i dati che i programmi che vogliono conservare dopo che si tolta l'alimentazione; 23 linee GPIO (General Purpose Input/Output); 32 registri polivalenti; 3 Timer/Counters con modalit di comparazione; interrupts interni ed esterni; un Ricevitore/Trasmettitore Sincrono/Asincrono universale; una porta seriale TWI (2-Wire serial Interface); una porta seriale SPI (Serial Peripheral Interface); un ADC a sei canali a 10bit.

Tutte queste periferiche vengono controllate dai settaggi di specifici registr, ognuno dei quali connesso al data bus ad 8bit. Cos, un programma, interagisce con ogni periferica tramite l'accesso a vari registrimappati in memoria, ovvero utilizzano lo stesso bus per indirizzare sia la memoria che i dispositivi I/O e le stesse istruzioni della cpu utilizzate per leggere e scrivere la memoria, sono utilizzate anche per accedere ai dispositivi I/O. Ogni porta pu essere configurata tramite esse per permettere l'accesso di diverse gunzioni ai pin esterni, questo processo viene chiamato pinmultiplexing. Il boot loader di arduino utilizza una usart configurata appositamente per l'RS-232 tramite un convertitore usb-seriale.

Avr CPU
La funzione principale della CPU quella dell'assicurarsi che il programma venga svolto correttamente. La CPU quindi deve poter accedere alle memorie, fare calcoli, controllare le periferiche e gestire gli interrupt. La AVR utilizza una anchitettura Harvard con stoccaggio e bus

separati fisicamente per i programmi ed i dati, in modo tale che mentre viene eseguita una istruzione, la successiva viene pre-caricata (pre-fetching) tramite la memoria del programma. Questo processo di pre-fetching fa si che le istruzioni siano eseguite ad ogni ciclo di clock. Ogni AVR, dal pi piccolo al pi grande ha un general purpose register file generale. Ci sono 32 registri nel file, numerati da R0 a R31. Molte delle istruzioni aritmetico/logiche della CPU possono leggere e scrivere i singoli registri direttamente all'interno dei file di registro, solitamente in un unico ciclo di clock. Questo registro permette di eseguire velocemente gli algoritmi senza bisogno di copiare i dati o forzarli dalla memoria SRAM. Sei di questi registri hanno una speciale funzione. Essi possono essere combinati in modo da formare tre puntatori indice allo spazio dati a 16bit. Questi registri sono chiamati X,Y e Z. Il registro X composto dai registri R26 (basso ad 8bit) e R27 (alto ad 8bit). Il registro Y composto dai registri R28 e R29 e il registro Z dai registri R30 e R31.