Dieser ArtikelBenutzerSuche |
AVR-Tutorial: Equipment
[bearbeiten] AVR-Tutorial - Benötigte Ausrüstung[bearbeiten] HardwareEin Mikrocontroller alleine ist noch zu nichts nützlich. Damit man etwas damit anfangen kann, braucht man eine Schaltung, in die der Controller eingesetzt wird. Dazu werden bei Elektronikhändlern Platinen angeboten, die alles nötige (Taster, LEDs, Steckverbinder...) enthalten. Häufig enthalten diese Platinen nicht nur Platz für den Mikroprozessor, sondern auch einen ISP-Programmierer (Näheres dazu später). [bearbeiten] Fertige Evaluations-Boards und Starterkits[bearbeiten] AVR Starterkit aus dem Mikrocontroller.net-ShopSehr gut für dieses Tutorial geeignet ist das AVR-Starterkit aus dem Mikrocontroller.net-Shop. Das Kit enthält eine Platine mit dem Controller ATmega8, einen USB-ISP-Programmieradapter und ein Steckernetzteil. [bearbeiten] STK500Das STK500 ist das Standard-Board für AVR Entwicklung, direkt von Atmel. Es enthält auch einen ISP-Programmer und ist fertig aufgebaut. Es ist unter Entwicklern sehr beliebt und wird natürlich von Atmel unterstützt. Es gilt allgemein als gute Investition, wenn man ernsthaft in das Thema einsteigen möchte.
Das STK500 kostet bei Reichelt ca. 80 Euro. [bearbeiten] Pollin Eval.-Board v2.xBei Pollin Elektronik gibt es für 15 Euro ein Evaluation Board zum Selbstlöten (mit Platine und Bauteilen, aber ohne Mikrocontroller). Auch dieses Board enthält einen ISP-Programmer, allerdings der einfacheren Sorte. Im Vergleich zum STK500 ist das Board recht unflexibel und hat weniger Features. Die Beschreibung zum Zusammenlöten des Boards ist ausreichend, zur Benutzung des Boards erfährt man außer dem Schaltplan praktisch nichts. Der Schaltplan und dieses AVR-Tutorial zusammen sind allerdings ausreichend. Siehe: http://www.pollin.de [bearbeiten] Pollin Funk-AVR-Evaluationsboard v1.xBei diesem Board besteht die Möglichkeit, Funkmodule wie das RFM12, RFM01 oder RFM02 auf dem Board aufzulöten. Siehe: [bearbeiten] ATmega8-EntwicklungsplatineEine weitere Möglichkeit ist die ATmega8-Entwicklungsplatine von shop.mikrocontroller.net. Diese enthält eine Fassung für den Controller, einen Spannungswandler, die Beschaltung für die serielle Schnittstelle und einen Anschluss für den Programmieradapter. Die restliche Hardware wie LEDs und Taster kann man sich selber nach Belieben auf das Lochrasterfeld löten. [bearbeiten] AndereDas Angebot an AVR-Evaluationboards, -Experimentierplatinen, -Entwicklerplatinen oder wie die jeweiligen Hersteller ihre Produkte auch immer bezeichnen, ist mittlerweile recht groß geworden. Sie alle zu bewerten ist unmöglich geworden. [bearbeiten] SelbstbauEin fertiges Board ist gar nicht nötig, man kann die benötigte Schaltung auch selbst auf einem kleinen Steckbrett oder einer Lochrasterplatine aufbauen. So kompliziert wie das STK500 wird es nicht, es reichen eine Hand voll Bauteile. Wie man das macht wird im Folgenden beschrieben. Die folgende Schaltung baut man am besten auf einem Breadboard (Steckbrett) auf. Solche Breadboards gibt's z.B. bei Reichelt, ConeleK, ELV oder Conrad. Über den Takteingang XTAL1 ist der Mikrocontroller mit dem Quarzoszillator verbunden, der den benötigten Takt von 4 MHz liefert (siehe unten). Achtung: die Pins werden, wenn man den Oszillator mit der Schrift nach oben vor sich liegen hat, von unten links aus abgezählt. Unten links ist Pin 1, unten rechts Pin 7, oben rechts Pin 8 und oben links Pin 14 (natürlich hat der Oszillator nur 4 Pins. Die Nummerierung kommt daher, dass bei einem normalen IC dieser Größe an den gleichen Positionen die Pins Nr. 1, 7, 8 und 14 wären). PD0-PD7 und PB0-PB5 sind die IO-Ports des Mikrocontrollers. Hier können Bauteile wie LEDs, Taster oder LCDs angeschlossen werden. Der Port C (PC0-PC5) spielt beim Atmega8/AT90S4433 eine Sonderrolle: mit diesem Port können Analog-Spannungen gemessen werden. Aber dazu später mehr! An Pin 17-19 ist die Stiftleiste zur Verbindung mit dem ISP-Programmer angeschlossen, über den der AVR vom PC programmiert wird (Achtung: PINs in Abbildung entsprechen nicht der Belegung des AVRISP mkII. Die korrekte Pin-Belegung kann im Handbuch des AVRISP mkII eingesehen werden). Die Resetschaltung, bestehend aus R1 und C1, sorgt dafür, dass der Reseteingang des Controllers standardmäßig auf Vcc=5V liegt. Zum Programmieren zieht der ISP-Adapter die Resetleitung auf Masse (GND), die Programmausführung wird dadurch unterbrochen und der interne Speicher des Controllers kann neu programmiert werden. Zwischen Vcc und GND kommt noch ein 100nF Keramik- oder Folienkondensator, um Störungen in der Versorgungsspannung zu unterdrücken. Dieser Abblockkondensator sollte so nah wie möglich am Controller plaziert werden. Hier die Liste der benötigten Bauteile:
Beim Breadboard ist darauf zu achten, dass man die parallel laufenden Schienen für GND (blau) und Vcc (rot) jeweils mit Drähten verbindet (nicht Vcc und GND miteinander!). Eine Zusammenstellung der benötigten Bauteile befindet sich in der Bestellliste. [bearbeiten] Ergänzende Hinweise zur Taktversorgung (kann übersprungen werden)Ein Mikrocontroller benötigt, wie jeder Computer, eine Taktversorgung. Der Takt ist notwendig, um die internen Abläufe im Prozessor in einer geordneten Reihenfolge ausführen zu können. Die Frequenz des Taktes bestimmt im Wesentlichen, wie schnell ein Computer arbeitet. Bei einem ATMega8 gibt es 2 Möglichkeiten zur Taktversorgung
[bearbeiten] interner TaktDies ist der Auslieferungszustand bei einem Mega8. Dabei wird der Takt von einem internen Schwingkreis geliefert. Vorteil: Keine externe Beschaltung notwendig. Die Pins, an denen ansonsten ein Quarz oder ein Quarzoszillator angeschlossen wird, sind daher als normale Portpins für Ein/Ausgaben verwendbar. Nachteil: Der Schwingkreis ist nicht sehr genau. Bei Temperaturänderungen verändert er seine Frequenz. Nur 4 Frequenzen (1MHz, 2MHz, 4MHz und 8MHz) sind bei einem Mega8 realisierbar. Es gibt zwar die Möglichkeit, die interne Frequenz in Grenzen noch zu verändern, dies ist aber aufwändig und erfordert mindestens einen Frequenzzähler, wenn man eine bestimmte Frequenz erreichen will. [bearbeiten] externer TaktHier gibt es diesmal drei Möglichkeiten:
Vorteil: Die Taktfrequenz ist so stabil, wie es der Quarz, Oszillator oder Keramikschwinger vorgibt. Und das ist wesentlich genauer als der interne Oszillator. Kein Abgleich notwendig, wenn eine bestimmte Frequenz erreicht werden soll, solange es einen Quarz bzw. Oszillator oder Keramikschwinger in dieser Frequenz gibt. Ein spezieller Vorteil des Keramikschwingers ist, dass dieser keine Kondensatoren nach Masse braucht, weil er die schon eingebaut hat. Es muss lediglich ein dritter Pin mit Masse verbunden werden. Nachteil: Die Pins an denen der Quarz bzw. Oszillator oder Keramikschwinger angeschlossen wird, sind nicht mehr als I/O Pins nutzbar. Spätestens dann, wenn eine RS232-Verbindung zu einem anderen Computer aufgebaut werden soll, ist eine exakte Taktversorgung einer der Schlüssel, um diese Verbindung auch stabil halten zu können. Aus diesem Grund wird in diesem Tutorial von vorne herein mit einem externen Takt gearbeitet. Es spielt dabei keine Rolle, ob dafür ein Quarzoszillator, ein Quarz oder ein Keramikschwinger benutzt wird. Achtung: Ein ATMega8 wird mit aktiviertem internen Takt ausgeliefert. Um einen Quarzoszillator oder einen Quarz zu aktivieren, müssen die Fuse-Bits des Prozessors verändert werden. Details dazu finden sich hier. [bearbeiten] Quarz statt QuarzoszillatorWird anstelle eines Quarzoszillators ein Quarz eingesetzt, so sieht die Anbindung des Quarzes so aus: Die beiden Kondensatoren C3 und C4 sind zum Betrieb des Quarzes notwendig. Ihre Größe ist abhängig von den Daten des Quarzes. 22pF sind ein Wert, der bei den meisten Quarzen funktionieren sollte. [bearbeiten] Keramikschwinger/Resonator- statt Quarz/OszillatorWird anstelle eines Quarz/Oszillators ein Keramikschwinger eingesetzt, so sieht die Anbindung des Keramikschwingers so aus: Es werden keine Kondensatoren benötigt, daher ist der Anschluss eines Keramikschwingers kinderleicht. [bearbeiten] StromversorgungDie Versorgungsspannung Vcc beträgt 5V und kann z.B. mit folgender Schaltung erzeugt werden:
An den Eingang (+ und - im Schaltplan) wird ein Steckernetzteil mit einer Spannung von 9 - 12V angeschlossen. Eine Stromversorgung mit Batterien ist grundsätzlich auch möglich, wenn die elektrischen Grenzdaten des µC eingehalten werden (max. Spannung, min. Spannung). Bei der geregelten Stromversorgung oben sollte die Batteriespannung ca. 1.5 - 2.5V (Dropout-Spannung des Linearreglers) grösser sein als die Versorgungsspannung des µC. Die Versorgung aus einer Zelle ist ein Thema für Fortgeschrittene. [bearbeiten] Der ISP-ProgrammiererDann braucht man nur noch den ISP-Programmieradapter, über den man die Programme vom PC in den Controller übertragen kann. Eine Übersicht über mögliche ISP-Programmer Varianten findet sich im Artikel AVR_In_System_Programmer. Fertige ISP-Programmer zum Anschluss an den Parallelport oder USB gibt es z.B. auf http://shop.mikrocontroller.net/. Eine Bauanleitung gibt es u.a. auf http://rumil.de/hardware/avrisp.html. Den ISP-Adapter schließt man an den Parallelport an und verbindet ihn mit der Stiftleiste SV1 über ein 6-adriges Kabel (siehe Schaltplan). So sieht die Anordnung also aus:
[bearbeiten] SonstigesWer vorausschauend kauft, kauft mehr als einen Mikrocontroller. Bis der erste Controller defekt ist oder man durch Austauschen sicher gehen möchte, ob der Fehler im Programm oder im Controller ist, vergeht nur wenig Zeit. Für die anderen Teile des Tutorials sollte man sich noch die folgenden Bauteile besorgen: Teil 2 (I/O-Grundlagen)
Teil 4 (LC-Display)
Teil 6 (Der UART)
Für weitere Bauteile, die man als angehender µC Bastler auch des Öfteren mal benötigt, empfiehlt sich ein Blick in die Liste der Standardbauelemente bzw. in die Grundausstattung [bearbeiten] SoftwareIn diesem Tutorial wird nur auf die Programmierung in Assembler eingegangen, da Assembler für das Verständnis der Hardware am besten geeignet ist. [bearbeiten] AssemblerZuerst braucht man einen Assembler, der in Assemblersprache geschriebene Programme in Maschinencode übersetzt. Windows-User können das AVR-Studio von Atmel verwenden, das neben dem Assembler auch einen Simulator enthält, mit dem sich die Programme vor der Übertragung in den Controller testen lassen; für Linux gibt es tavrasm, avra und gavrasm. Um die vom Assembler erzeugte ".hex"-Datei über den ISP-Adapter in den Mikrocontroller zu programmieren, kann man unter Windows z.B. das Programm yaap verwenden, für Linux gibt es uisp, für beide avrdude. [bearbeiten] CWer in C programmieren möchte, kann den kostenlosen GNU-C-Compiler AVR-GCC (unter Windows "WinAVR") ausprobieren. Dieser C-Compiler kann auch in das für Assembler-Programmierung notwendige AVR-Studio integriert werden. In der Artikelsammlung gibt es ein umfangreiches Tutorial zu diesem Compiler; Fragen dazu stellt man am besten hier im GCC-Forum. [bearbeiten] PascalWer in Pascal programmieren muss, kann AVRPascal ausprobieren. Dieser Pascalcompiler ist kostenfrei bis 4kb Code und bietet viele ausgereifte Bibliotheken. E-LAB. [bearbeiten] BasicAuch Basic-Fans kommen nicht zu kurz, für die gibt es z.B. Bascom AVR ($69, Demo verfügbar). [bearbeiten] ForthWer einen direkten und interaktiven Zugang zum Controller haben will, sollte sich Forth anschauen. Voraussetzung ist ein serieller Anschluß (Max232), also etwas mehr als die Minimalbeschaltung. [bearbeiten] LiteraturBevor man anfängt, sollte man sich die folgenden PDF-Dateien runterladen und zumindest mal reinschauen: Das Datenblatt eines Controllers ist das wichtigste Dokument für einen Entwickler. Es enthält Informationen über die Pinbelegung, Versorgungsspannung, Beschaltung, Speicher, die Verwendung der IO-Komponenten und vieles mehr. Im Befehlssatz sind alle Assemblerbefehle der AVR-Controllerfamilie aufgelistet und erklärt. |