Viele Einsteiger fragen sich: "Wie bekommt man eigentlich die Software in den Mikrocontroller hinein?" Auf dieser Seite möchte ich zeigen, dass das gar nicht so schwierig ist und hierfür auch keine
speziellen Kenntnisse erforderlich sind. Mit einem preiswerten USB-Programmiergerät sowie der kostenlosen Software AVR Studio 4 können die AVR Mikrocontroller aller Projekte dieser
Seite programmiert werden. Am Beispiel des Projektes Wohnraumuhr wird demonstriert, wie die Hard- und Software unter Windows richtig konfiguriert und bedient wird.
Letzte Bearbeitung: 08.08.2010
| Bezugsquelle für das USB-Programmiergerät mySmartUSB light | shop.myavr.de/index.php?sp=article.sp.php&artID=200006 |
| Treiber für das USB-Programmiergerät mySmartUSB light | shop.myavr.de/index.php?sp=download.sp.php&suchwort=dl46 |
| Konfigurationsprogramm mySmartUSB light - SupportBox | shop.myavr.de/index.php?sp=download.sp.php&suchwort=dl197 |
| Programmier-Software AVR-Studio 4 | www.atmel.com/dyn/products/tools_card_v2.asp?tool_id=2725 |
| Stückliste mit den Bauteilen für das Adapterkabel auf 5-poligen ISP | avr-prog-stkl.htm |
| Allgemeines | Allgemeine Informationen über die Programmierung von Mikrocontrollern |
| Hardware | Installation des Programmiergerätes mySmartUSB light |
| Software | Installation und Konfiguration der Software mySmartUSB light - SupportBox und AVR-Studio 4 |
| Programmieren | Programmieren eines Mikrocontrollers am Beispiel der Wohnraumuhr |
| Fuse-Bits | Setzen der Fuse-Bits am Beispiel der Wohnraumuhr |
| Andere Programmiergeräte | Weitere Programmiergeräte und Programmieradapter für AVR-Mikrocontroller |
| Begriff | Beschreibung |
|---|---|
| Flash-Speicher | In diesem Speicher wird das Programm für den Mikrocontroller abgelegt. Wird der Controller eingeschaltet, dann beginnt er mit dem Lesen des Flash-Speichers bei Adresse 0 und interpretiert diese Informationen als Befehle. Der Flash-Speicher muss also in jedem Fall programmiert werden, damit der Controller überhaupt arbeiten kann. Zu jedem Mikrocontroller-Projekt gehört eine Datei projektname.hex - diese enthält immer das Programm für den Flash-Speicher des Controllers. |
| EEPROM-Speicher | Dieser Speicher ist dafür gedacht, Daten aller Art aufzubewahren (z.B. Einstellungen oder vom Benutzer eingegebene Daten). Bei einigen älteren Projekten ist es erforderlich, Daten in den EEPROM-Speicher zu programmieren. Dies erkennt man daran, dass dem Projekt eine Datei projektname.eep beiliegt. Fehlt diese Datei, dann braucht man sich nicht um den EEPROM-Speicher zu kümmern. |
| Fuse-Bits | Über diese Bits werden grundsätzliche Funktionen des Controller eingestellt: Taktquelle, Start-Bedingungen, Debug-Funktionen, Bootloader, Speicherschutz und anderes. Die Fuse-Bits können leider nicht als Datei in den Controller geladen werden. Sie müssen zunächst in einer Eingabe-Maske gesetzt bzw. gelöscht und anschließend an den Controller gesendet werden. Bei allen Projekten dieser Seite zeigt ein Bild die richtigen Einstellungen, außerdem befindet sich eine Datei projektname-fusebits.gif im Download-Paket jedes Projektes. |
Gute Erfahrungen habe ich mit dem Programmiergerät mySmartUSB light gemacht. Dieses kann man bei
shop.myavr.de/index.php?sp=article.sp.php&artID=200006 zum Preis von 14,95€ bestellen (Stand 08/2010). Neben dem abgebildeten
Programmiergerät bekommt man noch ein 6-poliges Programmierkabel und eine gedruckte Anleitung mit Hinweisen zur Treiber-Installation und weiteren Informationen.
Die nebenstehende Schaltung zeigt, wie das Adapter-Kabel verdrahtet werden muss. Mit einem Stück 5-poligen Flachbandkabel werden ein 6-poliger Wannenstecker und eine 5-polige IC-Sockelleiste verbunden. In den
Wannenstecker wird später das Kabel eingesteckt, welches dem Programmiergerät beiliegt und der 5-polige Stecker kommt später in das entsprechende Gegenstück am Projekt. Der Anschluss
VCC bleibt hier ungenutzt. Diese Stückliste enthält die benötigten Bauteile.
So sieht das Adapter-Kabel in der Realität aus. Bei einem Stück Flachbandkabel werden an beiden Enden die Adern getrennt und abisoliert. Anschließend wird der Wannenstecker und die IC-Sockelleiste
angelötet. Bei der Sockelleiste muss man sehr vorsichtig löten, sonst können sich die Plastikteile verformen. Falls man farbiges Flachbandkabel so wie im Bild verwendet, dann sollte man eine markante Farbe
für die Masseleitung wählen (hier schwarz). Beim üblichen grauen Flachbandkabel wählt man die rote Ader als Masseleitung.
Damit die Kabel an den Lötstellen nicht abbrechen, habe ich die kritischen Stellen mit reichlich Zweikomponentenkleber gesichert. Die Klebestelle am 5-poligen ISP-Stecker ermöglicht außerdem ein gutes
Greifen beim Einstecken und Lösen der Verbindung. Übrigens: Die Länge des Adapter-Kabels sollte 10cm nicht überschreiten. Muss eine größere Entfernung zwischen PC und Projekt überwunden
werden, dann sollte man ein USB-Verlängerungskabel zwischen PC und Programmiergerät stecken.
Das Programm findet normalerweise automatisch den richtigen COM-Port und das angeschlossene Programmiergerät und zeigt dies im oberen Auswahlfeld an. Im großen Feld darunter wird zunächst eine Info-Seite
angezeigt. Nach dem Klick auf Konfiguration erscheint das nebenstehende Bild, wobei im Auslieferungszustand die Option Stromversorgung beim Brennen
auf aktiv gesetzt ist.
Über die Einstellung Versorgungsspannung wird der Programmieranschluss auf die Spannung des angeschlossenen Projektes eingestellt. Hier wird nicht nur die Ausgangsspannung zur
Versorgung des Projektes geändert, sondern auch die Logikpegel auf den Programmierleitungen. Diese Einstellung muss unbedingt beachtet werden, auch wenn das angeschlossene Projekt nicht vom Programmiergerät
versorgt wird. Bis auf den Akku-Alarm für Modell-Helikopter arbeiten alle Projekte auf meiner Seite mit 5V. Beim Akku-Alarm
sind 3V einzustellen.
Die Einstellung Stromversorgung beim Brennen legt fest, ob das Programmiergerät das angeschlossene Projekt während des Programmiervorgangs mit Strom versorgen soll oder nicht.
Alle Projekte auf meiner Seite haben eine eigene Stromversorgung und sind nicht für eine Versorgung über das Programmiergerät geeignet. Aus diesem Grund empfehle ich die dargestellte Einstellung
Stromversorgung beim Brennen - inaktiv.
Über die beiden Buttons Power On und Power Off lässt sich die Versorgungsspannung zu Testzwecken ein- und ausschalten. Diese Funktion wird
hier nicht benötigt.
Hier sind viele Symbolleisten und auch einige Statusfenster zu sehen. Wir wollen uns aber nur auf die beiden folgenden Symbole bzw. Menü-Optionen konzentrieren:
| Menü-Option | Beschreibung | |
|---|---|---|
![]() | Tools - Program AVR - Connect | Über dieses Symbol wird dem AVR-Studio das verwendete Programmiergerät und der genutzte Port mitgeteilt. |
![]() | Tools - Program AVR - Auto Connect | Mit diesem Symbol wird eine Verbindung mit dem zuletzt verwendeten Programmiergerät aufgebaut. |
Über Tools - Options... kann das nebenstehende Fenster aufgerufen werden. Hier muss die Einstellung ganz unten Number of COM-ports to try
geändert werden. Wurde beispielsweise unserem Programmiergerät bei der Installation COM12 zugeordnet, dann tragen wir in das Eingabefeld 12 ein.
klicken bzw. die Menü-Option Tools - Program AVR - Connect aufrufen. Danach erscheint folgendes Fenster:
Hier wird jetzt im linken Bereich Platform die Option STK500 ausgewählt. Zwar benutzen wir hier kein STK500, aber unser Programmiergerät
spricht sozusagen die gleiche Sprache. Anschließend muss auf der rechten Seite im Bereich Port der COM-Port ausgewählt werden, den wir uns bei der Installation des
Programmiergerätes im Abschnitt Hardware gemerkt oder notiert haben. Bei meinem Programmiergerät ist das der Port COM7. Im Zweifelsfall kann man auch
die Auswahl Auto versuchen.
Sind alle Einstellungen getätigt, dann wird mit einem Klick auf Connect... die Verbindung zum Programmiergerät hergestellt.
Wenn sich das nebenstehende Bild zeigt, dann wurde erfolgreich eine Verbindung zwischen dem AVR-Studio und dem Programmiergerät hergestellt.
Damit sind alle Komponenten fertig konfiguriert und alle Voraussetzungen zum Programmieren von AVR-Mikrocontrollern erfüllt. Die gesamte Prozedur bis hierher ist übrigens nur einmal erforderlich.
oder durch Auswahl der Menü-Option Tools - Program AVR - Auto Connect
startet das Programmer-Modul des AVR-Studio.
Jetzt wird das Programmierkabel an den ISP-Anschluss des Projektes gesteckt und danach die Stromversorgung des Projektes eingeschaltet. Als Testobjekt für die weitere Beschreibung habe ich hier die
Wohnraumuhr gewählt, andere Projekte können nach dem gleichen Muster programmiert werden.
Vor dem Programmiervorgang muss zunächst der richtige Controller-Typ ausgewählt werden, dies erfolgt auf der Seite Main. Die Wohnraumuhr arbeitet mit einem ATmega8535, also wird im Feld
Device and Signature Bytes der Controller ATmega8535 ausgewählt.
Zur Kontrolle empfehle ich einen Klick auf den Button Read Signature. Dabei passiert folgendes: Das Programmer-Modul liest aus dem angeschlossenen Mikrocontroller die so genannten
Signatur-Bytes aus und vergleicht diese mit dem ausgewählten Controller-Typ. Wenn das Ergebnis so aussieht wie im nebenstehenden Bild, dann kann man sicher sein, dass die Kommunikation mit dem Controller funktioniert
und außerdem der richtige Controller ausgewählt wurde.
| Datei | Beschreibung |
|---|---|
| wohnuhr.asm | Diese Datei enthält den Quelltext für die Wohnraumuhr-Software und wird hier nicht benötigt. |
| wohnuhr.hex | Diese Datei enthält das Programm für den Mikrocontroller, diese muss in den Flash-Speicher programmiert werden. |
| wohnuhr.eep | Diese Datei enthält Daten für die Grundeinstellung der Wohnraumuhr, diese muss in den EEPROM-Speicher programmiert werden. |
| wohnuhr-fusebits.gif | Dieses Bild zeigt die richtige Einstellung der Fuse-Bits, diese werden im nächsten Abschnitt behandelt. |
Nun geht es endlich zur Sache. Zunächst wird auf die Seite Program gewechselt. Hier sind mehrere Bereiche zu sehen:
Device: Hier empfehle ich die Einstellungen wie im dargestellten Bild. Diese bewirken ein automatisches Löschen des Flash-Speichers vor dem Programmieren sowie ein automatisches
Lesen des Speichers nach jedem Programmiervorgang zur Kontrolle.
Flash: Hier wird der Dateiname der zu programmierenden HEX-Datei eingegeben bzw. über den Button rechts neben dem Feld ausgewählt. In diesem Beispiel ist das die Datei
wohnuhr.hex. Mit einem Klick auf den Button Program wird der Programmiervorgang gestartet, der im Fall der Wohnraumuhr ungefähr 4s dauert. In
dieser Zeit wird der Flash-Speicher gelöscht, mit den Daten der HEX-Datei beschrieben und anschließend nochmals zum Vergleich gelesen. Im unteren Bereich des Programmer-Fensters kann man den Ablauf verfolgen.
Das nebenstehende Bild zeigt den Zustand nach dem erfolgreichen Programmiervorgang des Flash-Speichers.
EEPROM: Hier wird der Dateiname der zu programmierenden EEP-Datei eingegeben bzw. über den Button rechts neben dem Feld ausgewählt. In diesem Beispiel ist das die Datei
wohnuhr.eep. Auch hier wird mit einem Klick auf den Button Program der Programmiervorgang gestartet, dieser dauert bei der Wohnraumuhr ungefähr
2s.
Anmerkung: In der Software des Programmiergerätes (Version 1.07.1770) scheint noch ein kleiner Fehler zu stecken. Beim automatischen Vergleich nach dem Schreiben der EEPROM-Datei kommt eine Fehlermeldung. Die Daten
werden aber korrekt geschrieben, was man mit einem manuellen Vergleich über den Button Verify prüfen kann. Der Fehler scheint nur beim ATmega8535 aufzutreten, bei anderen
Controllern klappte bisher alles fehlerfrei.
Zum Einstellen der Fuse-Bits wird auf die Seite Fuses gewechselt, dabei erfolgt automatisch das Auslesen der aktuellen Fuse-Bit-Einstellungen aus dem Controller.
Das nebenstehende Bild ist in der Beschreibung des Projektes Wohnraumuhr im Abschnitt Software dargestellt und außerdem als
wohnuhr-fusebits.gif im Download-Paket der Wohnraumuhr-Software enthalten. Es zeigt die erforderliche Fuse-Bit-Einstellung für die Wohnraumuhr.
Sind alle Einstellungen wie im Bild getätigt, was man übrigens gut durch den Vergleich der Werte HIGH und LOW (bei einigen Controllern
zusätzlich EXTENDED) überprüfen kann, dann wird durch einen Klick auf den Button Program die neue Einstellung in den Controller
übertragen. Auch hier sollte man den Status-Bereich im Auge behalten und wenn alles so wie im Bild fehlerfrei durchläuft, ist auch die Fuse-Bit-Einstellung geschafft.
Damit ist der Controller fertig und einsatzbereit.