Ü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-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 Blockdiagramm

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).

Prozess
- Laden Sie das ArduinoISP-Programm auf den Arduino Uno hoch.
- Verbinden Sie den ATmega328P mit dem Arduino Uno.
- BootLoader auf ATmega328P brennen;
- 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.

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.

Dann sind die Einstellungen unter „Tools“ in der IDE wie folgt:
- Board: „Arduino Uno“
- Port: „COM(Arduino Uno)“
- Programmiergerät: „Arduino als ISP“

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

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:
| Arduino | ATmega328P |
|---|---|
| 10 | PIN1(RESET) |
| 11 | PIN17(MOSI) |
| 12 | PIN18(MISO) |
| 13 | PIN19(SCK) |
| GND | GND |
| VCC | VCC |

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.

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
}

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




