PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
Zu diesem Artikel gibt es auch ein Video auf Youtube: ATMega328 Mikrocontroller - AVRISP mk2 Bootloader brennen mit Amtel Studio
In diesem Beitrag zeigen wir, wie auf einem ATmega328 der Bootloader über einen Programmer ohne Arduino gebrannt wird. Für den Aufbau haben wir alle Bauteile in Verwendung, die unbedingt für den Betrieb vom Mikrocontroller ohne ein Board benötigt werden. Neben einer stabilen Stromversorgung für das Flashen wird auch ein 16 MHz Quarz und 2x22pF Kondensatoren benötigt. Wenn der physikalische Aufbau fertig ist, werden wir den Optiboot Bootloader, der auch am Arduino Board verwendet wird, auf den Controller brennen.
Der Mega328 von Amtel ist genau derselbe Controller, der auch im herkömmlichen Arduino Uno Board verwendet wird. Daher kann er auch mit dem Arduino IDE programmiert werden und unterstützt den vollen Funktionsumfang. Auch die Schnittstellen für andere Komponenten oder Shields sind vollständig kompatibel. Der Mikrocontroller kann aber auch mit dem Amtel Studio programmiert werden. Für Anfänger ist es aber am Anfang doch etwas komplizierter als mit dem Arduino IDE. Damit der Controller eigenständig läuft, ist ein Taktgeber erforderlich. Der Oszillator besteht aus einem Schwingquarz und zwei 22 pF Kondensatoren. Wichtig ist, dass sich diese drei Bauteile sehr nahe am Mikrocontroller befinden und möglichst kurze Leitungen haben. Der Oszillator gibt den Takt für den Controller vor, der z. B. für den Zeitzähler benötigt wird. Der Controller hat auch einen internen Oszillator, der auch für einfache Projekte verwendet werden könnte. Der ATMega328 hat folgende technische Eckdaten:
Speicher | 32 KB |
RAM | 2KB |
Spannung | 5 V |
Anz. Pins | 28 |
Pins (vereinfacht) | 14 Digital I/O, 5 Analog IN |
Um den Mikrocontroller zu programmieren, wird ein Programmer benötigt. Dieser kann den Bootloader auf den Controller brennen bzw. flashen und in späterer folge auch die Software auf den Controller laden. Dazu werden in summe sechs Leitungen an den Controller angeschlossen. Programmer gibt es am Markt sehr viele. Den Kauf von den wirklich günstigen Programmern raten wir den Anfängern definitiv ab, da hier oft die Einrichtung für das Amtel Studio sehr kompliziert ist, Treiber nicht funktionieren oder die Firmware von diesen Programmern oft veraltet ist. Der originale Programmer von Atmel kostet ca. 30 bis 40 Euro, jedoch ist es diese einmalige Investition definitiv wert. Die Leitungen werden wie folgt angeschlossen und haben folgende Aufgaben:
PIN 1: MISO
Der erste PIN am Programmer ist der MISO-PIN. MISO steht für Master In/Slave Out und empfängt die Daten vom Mikrocontroller.
PIN2: +5V
Die 5V sind für die Stromversorgung notwendig, also ist das der Pluspol. Achtung: Diese 5 Volt sind nicht die Spannungsversorgung vom Mikrocontroller!
PIN3: SCK
Der SCK (Clock) gibt den Takt an. Der Takt wird immer vom Master bestimmt. Der Mikrocontroller weiß, dass er der Slave ist.
PIN4: MOSI
Der MOSI (Master Out/Slave In) verhält sich gleich wie der MISO, allerdings ist die Senderichtung hier vom Master zum Slave.
PIN5: RESET
Der Reset funktioniert wie ein herkömmlicher Reset-Knopf. Wird die Masse (GND) mit dem Reset verbunden wird der Controller zurückgesetzt und startet das Programm neu.
PIN6: GND
Der GND-PIN ist die Masse. Also der Minus-Pol.
Das Amtel Studio ist unsere Entwicklungsumgebung. Mit dieser Software wird dann der Mikrocontroller programmiert oder wie in diesem Fall der Bootloader gebrannt. Wenn Amtel Studio installiert ist, kann der AVRISP Programmer angeschlossen werden. Wenn die grundsätzliche Verdrahtung zwischen ATMega328 und dem Programmer stimmt, muss die LED permanent grün leuchtet. Leuchtet die LED rot, liegt der höchstwahrscheinlich an der Verdrahtung zwischen den Controller und dem Programmer. Wichtig ist auch, dass die externe 5 Volt Stromversorgung vom Mikrocontroller aktiv ist. Wenn bis hier hin alles funktioniert, dann kann man im Amtel Studio unter Extras -> Device Programming das Tool zum Flashen aufrufen. In diesem Fenster wird dann der Programmer ausgewählt (AVRISP mk2) und das Device (ATMega328P). Durch einen klick auf "Apply" werden die Einstellungen gespeichert, und wenn es keine Fehlermeldung gibt, wurde die Verbindung vom PC zum Programmer bereits hergestellt. Falls eine Meldung kommt, dass der Programmer ein Update benötigt, so kann das jetzt durchgeführt werden. Wenn man jetzt auf den Read-Button klickt, sollte das Tool eine Device Signatur anzeigen und die Spannung auf ca. 5 Volt sein. Wenn das alles funktioniert hat, dann wurde alles korrekt angeschlossen und der Bootloader kann installiert werden.
Unter "Memories" muss jetzt der Pfad zur Bootloader-Datei angegeben werden. Der Optiboot Bootloader befindet sich bereits am Computer, wenn der Arduino IDE einmal installiert wurde. Ansonsten kann das HEX-File von Github heruntergeladen werden. Das benötigte File heißt "optiboot_atmega328.hex". Anschließend wird auf "Program" geklickt und das Tool fängt an, den Bootloader zu brennen.
Im Flash-Tool muss nach dem Brennen vom Optiboot Bootloader noch ein Register geändert werden. Klickt man auf "Fuses", so findet man im Fuse-Register drei Parameter, die auf folgenden wert geändert werden müssen:
EXTENDED: 0x05
HIGH: 0XDE
LOW: 0xFF
Fuses sind Sicherheitseinstellungen, die später nicht mehr geändert werden können. In der Dokumentation eines Mikrocontrollers sind die verschiedenen Fuse-Bits beschreiben. Abschließend klickt man noch einmal auf "Program" und der Bootloader ist fertig auf den Controller gebrannt.
Wenn der Bootloader installiert ist, ist es möglich, den Mikrocontroller zu programmieren. Das geht dann über das Amtel Studio, oder beispielsweise auch mit dem Arduino IDE. Alle weiteren Beispiele bei uns basieren immer nach den Aufbau dieser Schaltung, wo der ATMega328 mit einem externen Oszillator betrieben wird und über ISP programmiert wird.
Benötigte Bauteile:
In diesem Artikel zeigen wir, wie mit dem ATMega328 ein 16x2 Zeichen LCD Display mit 4-Bit angesteuert wird. Programmiert wird alles in C mit dem Amtel Studio
WeiterlesenIn diesem Artikel zeigen wir, wie eine LED mit dem ATMega328 gesteuert wird. Programmiert wird alles in C++ mit Amtel Studio
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved