USB AVR-Programmer

1

Viele Anfänger in der Mikrocontroller-Programmierung stehen vor dem Problem, dass sie eine Plattform zum Programmieren und für Experimente mit den Bausteinen benötigen. So ging es auch mir vor einigen Jahren, als ich mir vorgenommen hatte, eine solche “Plattform” zu entwickeln.

Optimalerweise bietet diese Plattform eine möglichst große Flexibilität und viele Funktionen, die später mit dem Mikrocontroller verknüpft werden können. In der Praxis bedeutet das, dass auf dem Board zumindest Taster, LCD, LEDs, Potentiometer usw. verbaut werden sollten. Auch eine Herausführung sämtlicher Aus- und Eingabepins des Mikrocontrollers mithilfe von Buchsenleisten ist sinnvoll. So kann man später bei etwas spezialisierteren Schaltungen auch auf ein Elektronik-Steckbrett zurückgreifen. Weiterhin könnte man auf ein solches Board auch einen Temperatur-, Beschleunigungs oder Drucksensor verbauen. Hält man den Aufbau des Boards flexibel genug, kann man solche Bausteine aber auch später nachrüsten – Stichwort: Modularität.
Von diesen Features einmal abgesehen, muss das Experimentier-Board aber auch die Grundbeschaltung für den Mikrocontroller bereitstellen, sprich eine geregelte Stromquelle mit einer Spannung von 3,3V oder 5V (je nach verwendetem Controller) bereitstellen. Des Weiteren empfiehlt sich ein externer Quarz mit einer Resonanzfrequenz von beispielsweise 4MHz. Die Grundbeschaltung variiert je nach Controller und kann dem entsprechenden Datenblatt [1] entnommen werden. Für den AtMega8 sieht die Grundbeschaltung so aus:

Die Stromversorgung wird über einen Festspannungsregler mit einer Ausgangsspannung von 5 Volt realisiert. An seinem Eingang können dabei eine unstabilisierte Spannung von bis zu 40 Volt anliegen, aber auch der Betrieb aus z.B. einer 9V-Blockbatterie ist möglich. Wenn man ein stabilisiertes Labornetzteil besitzt, kann man sich den Festspannungsregler sparen und den Mikrocontroller einfach mit 5 Volt speisen. Die Schaltung sieht folgendermaßen aus:

Neben der Experimentier-Platine braucht man aber auch einen sogenannten Flasher, mit dem die Software auf den Controller geschrieben wird. Hier gibt es entweder fertige Bausteine oder eine sehr empfehlenswerte Bastellösung von Ulrich Radig, die ich auch bei meinem Experimentierboard verwende. Hierbei handelt es sich um einen In-System-Programmer (ISP) [2], der den Mikrocontroller über einige spezielle Ports mit der Firmware beschreibt. Das Besondere hierbei ist, dass dies auch im eingebauten Zustand funktioniert. D.h. man muss den Controller zum Flashen nicht aus der Sockelhalterung nehmen oder gar von der Platine ablöten.

Auf den nachfolgenden Bildern ist meine Experimentierplatine zu sehen. Die kleinere Platine im oberen Bereich stellt den Programmer dar. Darunter liegt das eigentliche Experimentier-Board, in meinem Fall mit einem AVR AtMega8 im DIP-Gehäuse, einer 5V Festspannungsversorgung und einem externen Quarz. Auf oben genannte Features, wie Taster und LEDs habe ich verzichtet und stattdessen alle Pins über Stiftleisten nach außen geführt. So kann ich auf einem Steckbrett sehr flexibel Schaltungen aufbauen. Die Lochrasterkarte darunter enthält ein LCD (auf den Bildern nicht aufgesteckt), das über Zusatzbeschaltung (PCF8574) via I²C mit dem Mikrocontroller kommuniziert. Für einen Anfänger ist die Verwendung von I²C aber nicht empfehlenswert, da es nur unnötig kompliziert zu programmieren ist. Stattdessen sollte man auf die herkömmliche parallele Ansteuerung im 8- oder 4-bit Modus setzen. [3]

[1] AtMega8 Datenblatt
[2] In-System-Programmer
[3] Tutorial auf Mikrocontroller.net

Zum Abschluss empfehle ich allen Einsteigern das AVR-GCC Tutorial auf Mikrocontroller.net. Dort wird man sehr ausführlich und Schritt für Schritt an die Thematik der Mikrocontroller-Programmierung herangeführt.

Hinterlasse eine Antwort

Ihre Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert.

*

Kommentare umschalten

1 Kommentar zu "USB AVR-Programmer"

  • dl2we sagt:

    Hallo Lukas,
    du solltest so weitermachen. Die interdisziplinären Interessen machen dich zu einem echten Maker!
    Ich fand deine Seiten zufällig über die Infos zum Webserver mit Arduino…
    Mit dem Raspi und Arduino habe ich meine Bastelerfahrungen zum AVR-Flashen ins Internet gestellt.
    Das interessiert dich vielleicht.
    Werner