Inhaltsverzeichnis
Allgemein
Irgendwann kommt vermutlich jeder Elektronik-Bastler mal an den Punkt, an dem es an der Zeit ist, das erste Mal einen Mikrocontroller (µC) zu verwenden.
Entweder, weil man einfach neugierig ist und sich mehr Wissen aneignen möchte oder weil man gerade eine hochkomplexe Schaltung erstellt hat und sich dann hinterher denkt:
Das kann es doch nicht sein... das muss auch einfacher gehen.
Und in der Tat kann man sich oftmals sehr viele Bauteile sparen, wenn man einen µC verwendet. Für Neueinsteiger stellt sich nach ein bisschen googeln erstmal die allseits bekannte Frage: AVR oder PIC?
Das sind zumindest die zwei größten Mikrocontrollerfamilien der beiden Hersteller Atmel (AVR) und Microchip Technology Inc. (PIC). Die einen Leute sagen, AVRs sind besser und die anderen Leute sagen, PICs sind besser. Mein Fazit nach ein bisschen Recherche lautet: Einen großen Unterschied gibt es wohl nicht. Ich habe mich damals also einfach nach dem Zufallsprinzip für Atmel entschieden. Mit PICs hatte ich nur mal kurz in der Berufsschule zu tun, aber das reicht bei Weitem nicht aus, damit ich mir eine eigene Meinung bilden kann. Soweit, so gut. Das heißt jetzt natürlich auch, dass ich mich hier im Weiteren nur noch mit Atmel-µCs befassen werde.
AVR-Programmer
Wenn man sich jetzt also wie in meinem Fall für Atmel entschieden hat, dann stellt sich als nächstes die Frage, wie bzw. womit man die µCs programmiert. Für den Anfang sollte man sich auf jeden Fall ersteinmal einen fertigen Programmer kaufen. Da heutzutage eigentlich jeder PC eine USB-Schnittstelle besitzt, ist es am sinnvollsten, sich einen Programmer mit USB-Anschluss zuzulegen. Ich habe mich für einen Programmer namens "mySmartUSB" von myAVR entschieden (die Version von meinem Programmer lautet 2.11). Genau genommen habe ich nicht nur den Programmer gekauft, sondern das "myAVR Board MK2 PLUS" (mit Display-Modul).
Diese Investition kann ich jedem nur empfehlen, da man damit bei den ersten Programmierversuchen sicherstellen kann, dass es bei Problemen nicht an der Hardware liegt (und man kann gleich anfangen, herumzuprobieren und muss nicht erst noch eine Schaltung auflöten). Aber natürlich kann man auch jeden anderen AVR ISP-Programmer verwenden. Damit der Programmer funktioniert, muss noch der passende Treiber heruntergeladen und installiert werden. In meinem Fall ist das dieser hier.
ISP-Schnittstelle
ISP bedeutet In System Programming und dies heißt nichts anderes, als dass ein Mikrocontroller programmiert werden kann, ohne ihn aus der Schaltung entfernen zu müssen. Ein AVR wird üblicherweise mit Hilfe von vier Signalleitungen programmiert: RESET, MOSI, MISO und SCK. Standardmäßig werden hierfür entweder 6- oder 10-polige Wannenstecker bzw. Pfostenbuchsen verwendet. Die üblichen Pinbelegungen sehen wie folgt aus:
Software
Als Software zum Programmieren des µC verwendet man am besten das "AVR Studio" bzw. das "Atmel Studio". Die Download-Links finden sich auf dieser Seite.
Hinweis: Wenn man das "AVR Studio" in der Version 4 oder älter installieren möchte, muss man sich zuerst WinAVR downloaden und anschließend installieren (zumindest wenn man in C programmieren möchte).
Nach der Installation des Atmel Studio 6 kam zumindest bei mir die Meldung, dass ich noch Microsoft Visual Studio Service Pack 1 installieren müsse, damit alles korrekt läuft. Nachdem das erledigt wurde, startete das Programm (zumindest bei mir) problemlos, allerdings konnte ich meinen Programmer nicht zum Laufen bringen. Es kam ständig die Fehlermeldung "Unable to connect to tool STK500 (COM4)". Nach ein bisschen googeln habe ich mehrere Kommentare gelesen, in denen geraten wurde, beim "AVR Studio 4" zu bleiben, da es mit dem "Atmel Studio" scheinbar des öfteren Probleme gibt und es außerdem sehr lange Ladezeiten hat (was ich bestätigen kann). Also habe ich zunächst das Atmel Studio 6 wieder deinstalliert und danach WinAVR und anschließend das AVR Studio 4 installiert. Da die Version 4.19 bei mir allerdings die WinAVR-Installation nicht erkannt hat, habe ich die etwas ältere Version 4.18 + SP3 installiert. Mit dieser Version funktioniert bei mir alles einwandfrei.
Man sollte es übrigens vermeiden, WinAVR bzw. das AVR Studio 4 in das Verzeichnis "C:\Program Files (x86)" zu installieren, da dies scheinbar zu Problemen aufgrund der Klammern führen kann.
Beispielschaltung
Mikrocontroller
Eine gute Wahl für den ersten Mikrocontroller stellt z.B. der Atmega8 dar. Dieser µC hat relativ viele programmierbare Ein- und Ausgänge und stellt auch sonst eine Vielzahl an hilfreichen Funktionen bereit. Ein Blick ins Datenblatt verrät uns unter anderem die Pinbelegung.
Schaltung
Eine erste Schaltung könnte z.B. wie folgt aussehen:
Erstes Programm (Mit AVR Studio 4)
Für unser Erstes Programm starten wir das AVR Studio und klicken dann auf New Project. Im nächsten Fenster klicken wir auf AVR GCC, schreiben einen Namen in das Feld Project name und wählen einen Speicherort aus. Anschließend gehen wir auf Finish. Danach wird unter Project → Configuration Options → Device der richtige Mikrocontroller ausgewählt (atmega8). Im jetzt geöffneten Fenster schreiben wir unser Programm hinein:
#define F_CPU 1000000 // Taktfrequenz des µC #include <avr\io.h> // AVR Register und Konstantendefinitionen #include <util\delay.h> // Bibliothek mit Warteroutinen //---------------------------------------------------------------------- int main(void) { DDRC = 0b00100000; // Pin PC5 wird als Ausgang definiert, alle anderen Pins von PortC sind Eingänge while(1) { PORTC = 0b11111111; // PC5 = High _delay_ms(1000); PORTC = 0b11011111; // PC5 = Low _delay_ms(1000); } return 0; }
Anschließend klicken wir auf Build Active Configuration (F7). Nun stellen wir sicher, dass der Programmer sowohl mit dem PC als auch mit unserer Beispielschaltung verbunden ist. Dann gehen wir auf Tools → AVR Prog... Danach mit Browse das erstellte Hex-file im Speicherordner\default auswählen. Nachdem dies erledigt ist, bei Flash auf Program klicken und schon sollte die LED blinken (eine Sekunde an, eine Sekunde aus). Um sicher zu gehen, dass die LED auch wirklich mit der richtigen Frequenz blinkt, klicken wir auf Advanced und stellen sicher, dass der Wert Int RCosc, Frequency 1MHz ausgewählt ist.
Sonstiges
Bei größeren und umfangreicheren Projekten ist es ratsam, noch eine kleine Compiler-Einstellung vorzunehmen, damit auch wirklich alle möglicherweise vorhandenen Errors und Warnungen angezeigt werden. Hierzu werden unter Project → Configuration Options → Custom Options folgende Einträge hinzugefügt: -pedantic und -pedantic-errors.