Informazioni sul microcontrollore ATMEGA328P
L’ATmega328P è un microcontrollore CMOS a 8 bit a basso consumo basato sull’architettura RISC avanzata AVR. Il chip è sviluppato da Atmel Corporation (Microchip Technology). Ha una velocità di clock di 20 MHz, 32 KB di memoria flash, un timer a 16 bit e 23 linee I/O programmabili. È comunemente usato nelle schede Arduino e in altri progetti basati su microcontrollori.
Caratteristiche ATMEGA328P
- Microcontrollore AVR a 8 bit ad alte prestazioni e basso consumo;
- Architettura RISC avanzata;
- Segmento di memoria non volatile ad alta resistenza;
- Reset all’accensione e rilevamento programmabile della sottotensione;
- Oscillatore calibrato internamente;
- Sorgenti di interruzione esterne e interne;
- Sei modalità di sospensione: Inattiva, Riduzione del rumore ADC, Conservazione dell’energia, Spegnimento, Standby e Standby estesa.
Parametri ATMEGA328P
- Capacità della memoria flash: 32 KB
- SRAM: 2 KB
- Capacità della memoria EEPROM: 1 KB
- Frequenza di clock: 20 MHz
- Tipo di interfaccia: I2C, SPI, USART
- Tensione di alimentazione min: 1,8 V max: 5,5 V
- Dispositivi a montaggio superficiale per la tensione di alimentazione: Montaggio superficiale
- Tipo di confezione: PDIP/TQFP
- Numero di pin: 28-PDIP, 32-TQFP
- Intervallo di temperatura operativa: da -40°C a +85°C
- Linee di input/output: 23
- Numero di ingressi ADC: 8
- Timer/Contatore a 8 bit: 2
- Timer/Contatore a 16 bit: 1
- PWM: 6 canali
- Metodo di programmazione: ISP, IAP, H/PV
- Metodo di simulazione: debugWIRE
Schema dei pin ATMEGA328P
Il chip ATMEGA328P ha 28 pin di input/output (GPIO) generici, ciascuno dei quali può essere configurato come input o output digitale.

Confezione ATMEGA328P
L’ATmega328P è disponibile in varie opzioni di confezione, come PDIP (Plastic Dual Inline Package), TQFP (Thin Quad Flat Package) e QFN (Quad Flat No-Lead). Nel contesto del microcontrollore ATmega328P, la “P” si riferisce al tipo di confezione del chip. Quindi, qui la “P” indica specificamente la confezione PDIP.

Diagramma a blocchi ATMEGA328P

Come bruciare il Bootloader Arduino su ATMEGA328P?
Le schede di sviluppo Arduino acquistate e vendute online sono state programmate con BootLoader, quindi puoi utilizzare direttamente l’IDE Arduino per caricare i programmi.
Tuttavia, non c’è BootLoader in un nuovo Microcontrollore ATMEGA328P, quindi l’IDE Arduino non può essere utilizzato per caricare direttamente il programma e il programma può essere programmato solo tramite ICSP.
Dobbiamo programmare il BootLoader per la MCU da soli per poter utilizzare l’IDE Arduino per lo sviluppo.
Materiali richiesti
- ATmega328P;
- Oscillatore a cristallo da 16 MHz;
- Condensatore da 22 pf*2;
- Resistore da 10 K;
- Una scheda di sviluppo Arduino (Uno o nano).

Processo
- Carica il programma ArduinoISP sulla scheda Arduino Uno;
- Collega l’ATmega328P alla scheda Arduino Uno;
- Brucia il BootLoader sull’ATmega328P;
- Testa il programma LED Blinking sull’ATmega328P.
Passaggio 1: Carica il programma ArduinoISP sulla scheda Arduino Uno
Collega la scheda di sviluppo Arduino Uno al computer. Trova e fai clic su “File>Esempi>ArduinoISP” nel software Arduino.

Nel codice ArduinoISP, puoi vedere che i pin MOSI, MISO e SCK sono definiti rispettivamente come 11 12 13, che corrispondono ai pin sulla scheda di sviluppo Arduino Uno.

Quindi, le impostazioni in Strumenti nell’IDE sono le seguenti:
- Scheda: “Arduino Uno”
- Porta: “COM(Arduino Uno)”
- Programmatore: “Arduino as ISP”

Clicca sull’icona di caricamento e, dopo un po’, il programma ArduinoISP verrà caricato sulla tua scheda di sviluppo Arduino Uno.

Passaggio 2: Collegamento dell'ATmega328P ad Arduino Uno
Secondo la definizione dei pin ISP nel codice ArduinoISP di cui sopra, il metodo di cablaggio e lo schema tra Arduino e ATmega328P sono i seguenti:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

Passaggio 3: Caricamento del BootLoader sull'ATmega328P
Dopo aver terminato il cablaggio tra Arduino uno e ATmega328P, dobbiamo collegare Arduino Uno al computer. Quindi clicca su “Strumenti>Burn Bootloader” per caricare il BootLoader sull’ATmega328P.

Passaggio 4: Test del programma LED Blinking sull'ATmega328P
Collega il polo positivo del LED al PIN2 dell’ATmage328P e il polo negativo a D. Il PIN2 dell’ATmega328P rappresenta PD0, quindi è “0” nel codice.
const int LED_PIN = 2; // Define the LED pin
void setup() {
pinMode(0, OUTPUT); // Set the LED pin as output
}
void loop() {
digitalWrite(0, HIGH); // Turn on the LED
delay(1000); // Wait for one second
digitalWrite(0, LOW); // Turn off the LED
delay(1000); // Wait for one second
}

Come puoi vedere nell’immagine GIF di cui sopra, il programma LED Blinking funziona normalmente.




