Programmieren (flashen) eines Atmega328 mit einem Arduino Uno
Mit einigen wenigen Bauteilen um wenig Geld (3-5 Euro) kann man auf einer Steckplatine oder Lochrasterplatine mit einem Atmega328 Prozessor einen "Uno" aufbauen. Zum flashen des Atmega braucht man aber, wie auch beim Attiny, einen Uno als Arduino-ISP (In System Programmer), mit dem man den Bootloader (der Bootlader macht den Atmega328 kompatibel zum Uno) und Sketches auf den Atmega brennen kann.
Schaltungsaufbau:
Nachfolgend der Verdrahtungsplan, wobei Reset-Taster und LED zum flashen nicht erforderlich, aber für das erste Testprogramm ganz nützlich sind.
Verbindung Arduino Uno -> Atmega328:
Arduino-Pin Atmega-Pin
10 -> 1 (Reset)
11 -> 17
12 -> 18
13 -> 19
Für den Testaufbau verwende ich folgende Komponenten:
- 1 Prozessor Atmega328
- 1 Quarz 16 MHz
- 2 Kondensatoren 22 pF
- 1 Programmierstecker
- 1 Arduino Uno
- 1 Elektrolytkondensator 10 µF
optional:
- 1 Resettaster
- 1 LED
- 1 Widerstand 220 Ohm
Info zum 10 µF Elektrolytkondensator (+Seite mit Reset, -Seite mit Gnd verbunden):
Der Kondensator soll ein Reset verhindern (was den Bootloader starten würde), wodurch sichergestellt wird, dass die Arduino-IDE mit ArduinoISP während dem Hochladen von Sketches kommuniziert.
Flashen:
Auf den Uno ist das Programm "ArduinoISP", welches unter "Datei - Beispiele" zu finden ist, hochzuladen (Achtung: Noch ohne 10 µF Kondensator).
Weiters ist nun in der Arduino-IDE unter "Werkzeuge - Programmer" die Vorwahl "Arduino als ISP" einzustellen.
Achtung: ab hier ist nun der 10 µF Kondensator erforderlich: Bei erstmaliger Verwendung eines neuen Atmega328-Chips ist der Bootloader auf den Atmega zu übertragen. Das geschieht in der Arduino-IDE über "Werkzeuge - Bootloader brennen" bzw. über "Tools - Bootloader installieren".
Ist die Installation des Bootloaders erfolgreich, erscheint in der Statusanzeige der Arduino-IDE die Meldung: "Bootloader wurde installiert".
Nun kann über den Uno ein in der Arduino-IDE erstellter Sketch auf den Atmega328 hochgeladen werden. Dazu noch einmal die Einstellungen in der Arduino-IDE unter "Werkzeuge":
- Board: Uno
- Port: COMx des Unos
- Programmer: Arduino als ISP
ACHTUNG: Beim Betätigen der Taste "Hochladen" muss die SHIFT-Taste gedrückt werden!! Im Feld daneben erscheint dabei die Meldung "Hochladen mit Programmer", oder man wählt im Menü "Sketch" die Funktion "Hochladen mit Programmer".
Ist der Atmega mit dem richtigen Programm geflashed, kann der Uno abgesteckt werden. Aber solange der Uno angesteckt ist, muss auch der Uno z.B. über das USB-Kabel spannungsversorgt bleiben, auch wenn der Atmega bereits über eine eigene Spannungsversorgung verfügt. Ansonsten läuft das Programm auf dem Atmega nicht (Reset-Zustand).
Eine Anleitung zum Flashen findet ihr z.B. auch hier: www.frag-duino.de/index.php/maker-faq/35-programmieren-eines-atmel-atmega-328p-mit-dem-arduino-uno-bootloader