Einstieg in die Mikrocontrollertechnik mit AVR ATmega

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Dieser Artikel nimmt am Artikelwettbewerb 2012/2013 teil.

Dieses Hands-On Schritt-für-Schritt Tutorial soll einen sehr einfachen Einstieg in die Nutzung und Programmierung von Mikrocontrollern (MC oder µC) liefern. Er erhebt keinen Anspruch auf Vollständigkeit oder umfangreiche Erläuterung der Techniken. Der Nutzen soll vielmehr darin zu finden sein, daß es jedem Interessierten möglich ist, ein eigenes Mikrocontrollerprojekt aufzubauen und in Betrieb zu nehmen nur durch das Studium dieses einen Beitrages und ohne Recherche in anderen Beiträgen.

Hintergrund und Entstehungsgeschichte

Dieser Beitrag entstand vor allem aus einem Grund: In zahlreichen Foren zum Thema findet man immer wieder die Frage, wie man einsteigen kann, was man braucht und wie sich ein spezielles Projekt verwirklichen lässt. Die Antworten sind immer wieder die gleichen: Meistens wird der Fragesteller mit einer Vielzahl an gut gemeinten, in meinen Augen aber zu ambitionierten, Tipps überschüttet. Ich denke, der Einstieg sollte einfach gehalten werden. Anschließend kann man immer noch expandieren und dabei das bis dahin gelernte Wissen mitnehmen.

Geht es darum, dass ein unbedarfter fragt, wie er sein individuelles Projekt verwirklichen soll, liegt der Knackpunkt meistens darin, dass der Fragesteller keine Ahnung von der Materie hat (was er auch zugibt und was nicht schlimm ist) und nun aber auf eine Antwort hofft, bei der entweder jemand anderes die Arbeit für ihn macht oder jemand in wenigen Sätzen seine Lösung komplett beschreibt. Zweites ist nur selten möglich, für erstes wird sich nur selten jemand finden. Es wird also darauf hinaus laufen, selbst zu lernen, wie es geht. Das ist oft mühsam und zeitaufwendig, wird aber mit einem Ergebnis honoriert, auf das man dann Stolz sein kann.

Diese Einführung ist bewusst einfach gehalten. Sie soll keine Kenntnisse im Bereich Elektronik oder Programmierung vermitteln. Dafür gibt es genügend Fachliteratur und Webseiten. Es geht auch nicht darum, den ultimativen Einstieg aufzuzeigen, der auch den Profi befriedigt und Sie zu einem Profi macht. Das Projekt soll dafür aber Narrensicher sein: Alles, wirklich alles, was Sie für Ihren ersten Aufbau benötigen, wird hier vorgestellt. Anschließend haben Sie Ihr erstes Erfolgserlebnis und wissen, ob Sie weiter machen wollen (und dann auch bereit sind, Ihre Ausstattung ggf. zu erweitern). Die Verweise zu anderen Seiten dieses Wiki dienen vor allem dazu, Ihnen das Auffinden zusätzlicher Informationen zu erleichtern, wenn Sie denn anschließend tiefer in die Materie einsteigen wollen - ein Studium dieser Texte ist vorerst nicht erforderlich.

Da der Text ursprünglich für die Publikation auf einer privaten Webseite geschrieben wurde, weicht er vor allem im Schreibstil von dem einer Enzyklopädie (oder einem Wiki) ab. Er ist eher etwas launisch gehalten und spiegelt teilweise auch die individuelle Meinung des Autors wieder. Da ich finde, dass ein Tutorial Spaß machen soll und nicht durch eine zu abstrakte und wissenschaftliche Darstellung abschrecken soll, wurde der Stil weitestgehend bei der Transkription beibehalten. Ich bitte dies zu respektieren und ggf. auf die Diskussionsseite zu diesem Text auszuweichen.

Material

Das einzige, was Sie vorerst an Equipment benötigen sind (ca. € 15,-):

Zusätzlich empfiehlt sich folgende Ausstattung (ca. € 30,-):

Diese Ausstattung benötigen Sie immer. Auch wenn Sie sich später ausführlicher mit Mikrocontrollern befassen wollen oder sich anderen elektronischen Aufgaben widmen. Es handelt sich also um keine unnütze Ausgabe.

Im Text finden Sie immer wieder Weblinks zu Shops, wo Sie die genannten Artikel kaufen können. Dies ist keine Führsprache für einen bestimmten Anbieter. Vielleicht bekommen Sie den Artikel bei anderen Elektronikversendern auch (billiger). Es soll Ihnen einfach nur die Beschaffung vereinfachen. Oft werden die billigsten Artikel gelistet. Gerade bei Werkzeug etc. lohnt es sich aber oft, wenn man (teurere) Qualitätsmarkenprodukte kauft.

Für alle im folgenden benötigten Elektronikteile gibt es einen fertigen Warenkorb, sodass Sie wirklich alle Teile zusammen haben, die Sie für einen Nachbau des gesamten Workshops benötigen. Zum Zeitpunkt des ersten Entwurfs dieses Workshops kosteten diese Teile zusammen lediglich € 6,46. Inzwischen ist der Preis auf € 8,05 angestiegen (Stand: Dez. 2012).

Fertige Experimentierboards mit µC

In diesem Workshop wird bewusst auf die Verwendung eines fertigen Experimentierboards verzichtet. Es gibt zahlreiche Vertreter. Bekannt sind vor allem das preiswerte Pollin ATMEL Evaluations-Board, und der Klassiker wie das STK500 von Atmel. Aber auch viele private User haben ähnliches entwickelt. Die Boards sind alle praktisch und bieten zahlreiche Funktionen, die hier im Workshop für die ersten Schritte aber nicht benötigt werden. Sobald es etwas mehr sein darf, würde ich das Evaluations-Board von Pollin empfehlen, da es unschlagbar günstig ist. Mit dem Mini-Mega-Board von Elektor bekommt man ein kompaktes Board, welches sich auch gut für die ersten eigenen Projekte eignet, die man in ein Gehäuse einbauen will und wo nicht mehr möglichst viele Steckplätze für diverse Prozessortypen benötigt werden. Zudem ist hier der einfache Anschluss eines LCDs bereits vorgesehen. Will man nur einen allerersten Einstieg (und um den geht es hier), bieten die Boards aber immer zu viel nebensächliches und kosten mehr als die hier gezeigte Lösung.

Die Spannungsversorgung

Es wird eine primitive, aber ausreichende Spannungsversorgung auf dem Steckbrett aufgebaut. Die abgebildete Schaltung genügt vollends für die ersten Experimente.

Das Steckernetzteil stellt eine einfache, meist nur schlecht oder gar nicht geregelte Spannung bereit, die für einen MC zu ungenau ist. Deshalb wird die Spannung stabilisiert. Schneiden Sie ggf. vom Ausgangskabel des Steckernetzteils den Niedervoltstecker ab. An den beiden Adern liegt Plus und Minus (Masse/GND). Stellen Sie ggf. die Ausgangsspannung am Steckernetzteil auf 9 V.

Auf dem Steckboard platzieren Sie den 7805 und die weiteren Bauteile. Achten Sie auf die Polung der LED: kurzes Bein/abgeschrägte Gehäuseseite = Kathode (Minus). Verbinden Sie den mittleren Pin des 7805 mit Masse vom Steckernetzteil und den linken Pin mit der Anodenseite der Diode (der Strich auf dem Diodengehäuse wird wie der Querstrich im Schaltbild ausgerichtet).

Die 5 V Ausgangsspannung des 7805 und Masse wird an die waagerecht durchgehenden Kontaktleisten am Rand des Experimentierboards gelegt. Achten Sie darauf, daß bei den meisten Boards diese Stege nicht durchgängig, sondern meistens auf der Hälfte der Boardlänge unterbrochen sind. Wenn Sie jetzt die Ausgänge des Steckernetzteils mit dem Aufbau verbinden und das Steckernetzteil einstecken, muß die LED leuchten.

Diese Spannungsstabilisierung lassen Sie stets aufgebaut.

Der Mikrocontroller

Zum Einsatz kommt ein AVR ATmega8-16 DIP von Atmel. Das Datenblatt ist englischsprachig (wie bei fast allen Datenblättern, da müssen Sie einfach mit leben) und als PDF downoladbar. Die AVRs haben den Vorteil, daß sie einfach zu programmieren sind, zahlreiche Funktionen integriert haben, eine große Akzeptanz besitzen und preiswert sind. Der mega8 hat zudem den Vorteil, daß er Pinkompatibel zum ATmega168 ist. So können Sie von kleinen Projekten ganz bequem auf größere expandieren. Beachten Sie aber, daß Pinkompatibel niemals heißt, daß die µC auch Codekompatibel sind. Der Sourcecode muß für den jeweiligen Prozessor passend (minimal) angepaßt und neu übersetzt (compiliert) werden.

Der Aufbau ist relativ einfach: Es wird auf einen externen Quarz verzichtet und der interne Taktgenerator mit 1 MHz wird genutzt. Die Stiftleiste ISP dient der Programmierung des Prozessors. C3 ist ein Abblockkondensator und muß möglichst dicht an Pin 7 und 8 des ATmega platziert werden. Für die ersten einfachen Experimente steht ein Taster und eine LED zur Verfügung. Der Taster benötigt keinen Pull-Up Widerstand, da der ATmega intern einen aktivieren kann.

Der Programmieradapter

AVRs werden per In Sytem Programming (ISP) mit dem Programmcode beschrieben. Auf dem PC erzeugen Sie mit einem Compiler und einer Programmiersprache die Maschinenbefehle, die der µC dann abarbeiten kann. Vom PC müssen die Daten dann in den µC übertragen werden, wozu ein Programmieradapter benötigt wird. Hier wird der einfachste Adapter vorgestellt, der denkbar ist. Dieser ist wirklich nur für die ersten Schritte geeignet und sollte später durch eine hochwertigere Schaltung oder einen aktiven Brenner (bspw. mit JTAG) ersetzt werden.

Der Adapter besteht nur aus einem 25-poligen männlichen Sub-D Stecker, der über ein paar Widerstände und etwas Kabel mit einer fünfpoligen Buchsenleiste verbunden ist. Diese Buchsenleiste wird auf die ISP-Pfostenleiste am ATmega gesteckt (Polung beachten, so daß die einzelnen Datenleitungen zueinander passen), wobei der dort vorhandene Pin für +5 V unbenutzt bleibt.

Angeschlossen wird der Adapter dann an den parallelen Druckerport des PCs, wofür ggf. noch ein Verlängerungskabel sinnvoll ist.

Verfügt Ihr Rechner aus Geiz-ist-geil-Gründen nicht mehr über einen Parallelport, können Sie diesen preiswert nachrüsten: 1x Parallel und 2x Seriell - PCI Karte. Auch serielle Anschlüsse werden Sie sicherlich bei späteren Experimenten mit einem µC benötigen und hier handelt es sich um echte RS-232 Ports - wesentlich zuverlässiger und streßfreier als jeder USB-Konverter.

Die Software

Notwendige Einstellungen in BASCOM AVR

Es artet in Glaubenskriegen aus, wenn man eine Empfehlung für eine bestimmte Programmiersprache gibt. Jeder hat seinen Favoriten. Hören Sie nicht auf die Assembler-Jünger, die meinen, daß man nur in Assembler einen MC ordentlich programmieren kann oder nur so wirklich lernen kann, wie ein MC intern tickt - das interessiert eigentlich keinen mehr heutzutage und auch ohne dieses Wissen kann man einen MC gescheit nutzen, programmieren und verstehen. Diese Einstellung zur Notwendigkeit von Assemblerkenntnissen ist antiquiert und würden die Anhänger nicht Ihr Gesicht vor sich und denen verlieren, denen sie so oft Assembler angepriesen haben, täten sie es sich auch eingestehen. Wer mit Assembler glücklich wird, soll es werden. Für Neueinsteiger ist das nichts - oder meinen Sie, nur wer einen Motor zerlegen und reparieren kann, ist fähig Auto zu fahren? Sie können einen MC in vielen Hochsprachen programmieren: C, Basic, Pascal usw. Es ist völlig egal, womit Sie anfangen, der Code wird auf dem Prozessor annähernd gleich schnell ausgeführt und erst wenn es um größere Projekte geht, treten die Unterschiede deutlicher hervor. Haben Sie erst einmal eine Sprache verstanden, können Sie später immer noch wechseln, denn das Grundprinzip beim Programmieren ändert sich nicht.

Weil es so einfach ist, wird hier BASCOM-AVR genutzt. Die Demoversion kann bis zu 4 KB Code generieren, also die Hälfte eines ATmega8 füllen. Das genügt für die ersten Schritte.

  • Laden Sie das Demopaket von BASCOM-AVR herunter und installieren Sie es wie gewohnt.
  • Laden Sie die zwei Demoanwendungen (s. u.) für diesen Einstiegsworkshop herunter und entpacken Sie die Dateien in einen neuen Unterordner des BASCOM-AVR Installationsordners.
  • Starten Sie BASCOM-AVR
  • Wählen Sie Options/Programmer und stellen Sie beim Listenfeld Programmer STK/200/STK300 Programmer ein. Dies ist nur einmalig notwendig. OK.

Der erste Test

  • Verbinden Sie die Spannungsversorgung mit dem Mikrocontrolleraufbau.
  • Verbinden Sie den PC über den ISP-Adapter mit dem ISP Anschluß am Mikrocontrolleraufbau. Achten Sie darauf, daß die Ausrichtung der Pins übereinstimmt (GND and GND).
  • Starten Sie ggf. BASCOM-AVR.
  • Wählen Sie File/Open und öffnen Sie die Datei led1.bas aus dem gleichnamigen Verzeichnis der heruntergeladenen Demodateien.
  • Wählen Sie Program/Compile. Der Compiler sollte fehlerfrei durchlaufen. Fehlerausgaben werden ansonsten am unteren Fensterrand aufgelistet.
  • Wählen Sie Program/Send to chip/Program.
  • Im neuen Fenster muß im Listenfeld Chip der Eintrag ATmega8 stehen, wenn Ihr Aufbau korrekt erkannt wurde.
  • Rufen Sie im Programmierfenster den Menüpunkt Chip/Autoprogram auf. Das Programm wird nun in den Controller übertragen.
  • Die einfache ISP-Schaltung sorgt dafür, daß die Reset-Leitung permanent aktiv ist. Deshalb müssen Sie den ISP-Adapter vom Mikrocontrolleraufbau abziehen, damit das Programm ausgeführt wird.
  • Das Programm sorgt dafür, daß die LED am µC endlos blinkt. Sie ist jeweils eine halbe Sekunde aus und eine halbe Sekunde an.
  • Herzlichen Glückwunsch!

LED + Taster

Nun können Sie auch gleich das zweite Programm ausprobieren und so den Taster in die Bedienung einbinden:

  • Verbinden Sie die Spannungsversorgung mit dem Mikrocontrolleraufbau.
  • Verbinden Sie den PC über den ISP-Adapter mit dem ISP Anschluß am Mikrocontrolleraufbau
  • Starten Sie ggf. BASCOM-AVR.
  • Wählen Sie File/Open und öffnen Sie die Datei taster.bas aus dem gleichnamigen Verzeichnis.
  • Wählen Sie Program/Compile. Der Compiler sollte fehlerfrei durchlaufen. Fehlerausgaben werden ansonsten am unteren Fensterrand aufgelistet.
  • Wählen Sie Program/Send to chip/Program.
  • Rufen Sie im Programmierfenster den Menüpunkt Chip/Autoprogram auf. Das Programm wird nun in den Controller übertragen.
  • Ziehen Sie den ISP-Adapter vom Mikrocontrolleraufbau ab, damit das Programm ausgeführt wird.
  • Das Programm sorgt dafür, daß die LED am µC jedesmal zehnmal blinkt, sobald Sie den Taster gedrückt haben. Mechanische Schalter prellen beim Ein- und Ausschalten, d.h sie schalten schnell aus und ein, verursacht durch mechanisches Vibrationen des Schaltkontaktes. Deshalb kann es sein, daß einzelne Tastendrücke nicht sauber erkannt werden.

Abschluß

Hiermit endet der kleine Workshop. Sie haben nun erfolgreich einen Mikrocontroller aufgebaut und programmiert. Damit haben Sie einen Einblick bekommen, wie einfach das geht und hoffentlich haben Sie jetzt Appetit auf mehr. Auch mit diesem einfachen Aufbau können Sie noch eine Reihe weiterer Experimente starten. Vielleicht wollen Sie aber nun auch ein konkretes Projekt angehen. Dann hilft Ihnen vielleicht eins der bereits oben angesprochenen Experimentierboards. Ein typisches Anwendungsgebiet für MCs sind kleine Roboter. Wie wäre es mit dem Asuro?

Downloads

Siehe auch