ATmega328P-Mikrocontroller: Der ultimative Leitfaden

Über den Mikrocontroller ATMEGA328P

Der ATmega328P ist ein energiesparender CMOS-8-Bit-Mikrocontroller, der auf der erweiterten AVR-RISC-Architektur basiert. Der Chip wurde von der Atmel Corporation (Microchip Technology) entwickelt. Er verfügt über eine Taktrate von 20 MHz, 32 KB Flash-Speicher, einen 16-Bit-Timer und 23 programmierbare E/A-Leitungen. Er wird häufig in Arduino-Boards und anderen mikrocontrollerbasierten Projekten verwendet.

ATMEGA328P Funktionen

  • Hochleistungsfähiger, stromsparender AVR-8-Bit-Mikrocontroller;
  • Fortschrittliche RISC-Architektur;
  • Hochbelastbarer nichtflüchtiger Speichersegment;
  • Power-On-Reset und programmierbare Brown-Out-Erkennung;
  • Intern kalibrierter Oszillator;
  • Externe und interne Interrupt-Quellen;
  • Sechs Schlafmodi: Leerlauf, ADC-Rauschunterdrückung, Energieeinsparung, Abschaltung, Standby und erweiterter Standby.

ATMEGA328P-Parameter

  • Flash-Speicherkapazität: 32 KB
  • SRAM: 2 KB
  • EEPROM-Speicherkapazität: 1 KB
  • Taktfrequenz: 20 MHz
  • Schnittstellentyp: I2C, SPI, USART
  • Versorgungsspannung min.: 1,8 V max.: 5,5 V
  • Versorgungsspannung für oberflächenmontierte Bauelemente: Oberflächenmontage
  • Gehäusetyp: PDIP/TQFP
  • Anzahl der Pins: 28-PDIP, 32-TQFP
  • Betriebstemperaturbereich: -40 °C bis +85 °C
  • Eingangs-/Ausgangsleitungen: 23
  • Anzahl der ADC-Eingänge: 8
  • 8-Bit-Timer/Zähler: 2
  • 16-Bit-Timer/Zähler: 1
  • PWM: 6 Kanäle
  • Programmiermethode: ISP, IAP, H/PV
  • Simulationsmethode: debugWIRE

ATMEGA328P-Pinbelegung

Der ATMEGA328P-Chip verfügt über 28 universelle Ein-/Ausgangs-Pins (GPIO), die jeweils als digitaler Eingang oder Ausgang konfiguriert werden können.

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

ATMEGA328P-Gehäuse

Der ATmega328P ist in verschiedenen Gehäuseoptionen erhältlich, beispielsweise PDIP (Plastic Dual Inline Package), TQFP (Thin Quad Flat Package) und QFN (Quad Flat No-Lead). Im Zusammenhang mit dem Mikrocontroller ATmega328P bezieht sich das „P“ auf den Gehäusetyp des Chips. Hier steht das „P“ also speziell für das PDIP-Gehäuse.

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

ATMEGA328P Blockdiagramm

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

Wie brennt man den Arduino-Bootloader auf ATMEGA328P?

Die online gekauften Arduino-Entwicklungsboards wurden mit BootLoader programmiert, sodass Sie die Arduino IDE direkt zum Hochladen von Programmen verwenden können.

Allerdings ist in einem neuen ATMEGA328P-Mikrocontroller kein BootLoader vorhanden, sodass die Arduino IDE nicht zum direkten Hochladen des Programms verwendet werden kann und das Programm nur über ICSP programmiert werden kann.

Wir müssen den BootLoader für den MCU selbst programmieren, um die Arduino IDE für die Entwicklung verwenden zu können.

Erforderliche Materialien

  • ATmega328P;
  • 16-MHz-Quarzoszillator;
  • 22-pF-Kondensator*2;
  • 10-kΩ-Widerstand;
  • Ein Arduino-Entwicklungsboard (Uno oder Nano).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Prozess

  1. Laden Sie das ArduinoISP-Programm auf den Arduino Uno hoch.
  2. Verbinden Sie den ATmega328P mit dem Arduino Uno.
  3. BootLoader auf ATmega328P brennen;
  4. Testen Sie das LED-Blinkprogramm auf dem ATmega328P.

Schritt 1: Laden Sie das ArduinoISP-Programm auf den Arduino Uno hoch.

Verbinden Sie das Arduino Uno-Entwicklungsboard mit dem Computer. Suchen Sie in der Arduino-Software „Datei > Beispiele > ArduinoISP“ und klicken Sie darauf.

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

Im ArduinoISP-Code können Sie sehen, dass die MOSI-, MISO- und SCK-Pins als 11, 12 bzw. 13 definiert sind, was mit den Pins auf dem Arduino Uno-Entwicklungsboard übereinstimmt.

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

Dann sind die Einstellungen unter „Tools“ in der IDE wie folgt:

  • Board: „Arduino Uno“
  • Port: „COM(Arduino Uno)“
  • Programmiergerät: „Arduino als ISP“
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

Klicken Sie auf das Upload-Symbol, und nach einer Weile wird das ArduinoISP-Programm auf Ihr Arduino Uno-Entwicklungsboard hochgeladen.

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to Arduino Uno

Schritt 2: Verkabelung des ATmega328P mit Arduino Uno

Gemäß der Definition der ISP-Pins im obigen ArduinoISP-Code lauten die Verdrahtungsmethode und das Diagramm zwischen Arduino und ATmega328P wie folgt:

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

Schritt 3: BootLoader auf ATmega328P brennen

Nachdem wir die Verkabelung zwischen Arduino Uno und ATmega328P abgeschlossen haben, müssen wir den Arduino Uno an den Computer anschließen. Klicken Sie dann auf „Tools>Burn Bootloader“, um den Bootloader auf ATmega328P zu brennen.

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on ATmega328P

Schritt 4: Testen Sie das LED-Blinkprogramm auf dem ATmega328P.

Verbinden Sie den Pluspol der LED mit PIN2 des ATmega328P und den Minuspol mit D. PIN2 des ATmega328P entspricht PD0, daher ist es im Code „0“.

				
					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

Wie Sie in der obigen GIF-Datei sehen können, läuft das LED-Blinkprogramm normal.

Teilen auf:

Nach oben scrollen

Instant Quote