Microcontrollore ATmega328P: Guida definitiva

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.

ATMEGA328P Pinout (28-pin PDIP)
ATMEGA328P Pinout (28-pin PDIP)

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.

ATmega328P 28-lead Plastic Dual Inline Package (PDIP)
ATmega328P 28-lead Plastic Dual Inline Package (PDIP)

Diagramma a blocchi ATMEGA328P

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

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).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Processo

  1. Carica il programma ArduinoISP sulla scheda Arduino Uno;
  2. Collega l’ATmega328P alla scheda Arduino Uno;
  3. Brucia il BootLoader sull’ATmega328P;
  4. 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.

Choose the ArduinoISP Program for Arduino Uno
Choose the ArduinoISP Program for Arduino Uno

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.

Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code
Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code

Quindi, le impostazioni in Strumenti nell’IDE sono le seguenti:

  • Scheda: “Arduino Uno”
  • Porta: “COM(Arduino Uno)”
  • Programmatore: “Arduino as ISP”
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

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

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to 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:

ArduinoATmega328P
10PIN1(RESET)
11PIN17(MOSI)
12PIN18(MISO)
13PIN19(SCK)
GNDGND
VCCVCC
Wiring Diagram the ATmega328P to Arduino Uno
Wiring Diagram the ATmega328P to Arduino Uno

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.

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on 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
}

				
			
LED Blinking Test on ATmega328P
LED Blinking Test on ATmega328P

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

Condividi con:

Torna in alto

Instant Quote