Pfad: Home =>
AVR-deutsch =>
Programmiertechniken => Hardware
Hardware für die AVR-Assembler-Programmierung
Damit es beim Lernen von Assembler nicht zu trocken zugeht, braucht es etwas Hardware
zum Ausprobieren. Gerade wenn man die ersten Schritte macht, muss der Lernerfolg schnell
sichtbar sein.
Hier werden mit wenigen einfachen Schaltungen im Eigenbau die ersten Hardware-Grundlagen
beschrieben. Um es vorweg zu nehmen: es gibt von der Hardware her nichts einfacheres als
einen AVR mit den eigenen Ideen zu bestücken. Dafür wird ein Programmiergerät
beschrieben, das einfacher und billiger nicht sein kann. Wer dann größeres vorhat,
kann die einfache Schaltung stückweise erweitern.
Wer sich mit Löten nicht herumschlagen will und nicht jeden Euro umdrehen muss, kann
ein fertiges Programmierboard erstehen. Die Eigenschaften solcher Boards werden hier ebenfalls
beschrieben.
Zum Seitenanfang
Bevor es ins Praktische geht, zunächst ein paar grundlegende Informationen zum
Programmieren der Prozessoren. Nein, man braucht keine drei verschiedenen Spannungen, um
das Flash-EEPROM eines AVR zu beschreiben und zu lesen. Nein, man braucht keinen
weiteren Mikroprozessor, um ein Programmiergerät für einfache Zwecke zu bauen.
Nein, man braucht keine 10 I/O-Ports, um so einem Chip zu sagen, was man von ihm will.
Nein, man muss den Chip nicht aus der Schaltung auslöten, in eine andere Fassung
stecken, ihn dann dort programmieren und alles wieder rückwärts. Geht alles
viel einfacher.
Für all das sorgt ein in allen Chips eingebautes Interface, über das der Inhalt des
Flash-Programmspeichers sowie des eingebauten EEPROM's beschrieben und gelesen
werden kann. Das Interface arbeitet seriell und braucht genau drei Leitungen:
- SCK: Ein Taktsignal, das die zu schreibenden Bits in ein Schieberegister im AVR eintaktet
und zu lesende Bits aus einem weiteren Schieberegister austaktet,
- MOSI: Das Datensignal, das die einzutaktenden Bits vorgibt,
- MISO: Das Datensignal, das die auszutaktenden Bits zum Lesen durch die Programmiersoftware
ausgibt.
Damit die drei Pins nicht nur zum Programmieren genutzt werden können, wechseln sie
nur dann in den Programmiermodus, wenn das RESET-Signal am AVR (auch: RST oder Restart
genannt) auf logisch Null liegt. Ist das nicht der Fall, können die drei Pins als beliebige
I/O-Signalleitungen dienen. Wer die drei Pins mit dieser Doppelbedeutung benutzen
möchte und das Programmieren des AVR in der Schaltung selbst vornehmen möchte,
muss z.B. einen Multiplexer verwenden oder Schaltung und Programmieranschluss durch
Widerstände voneinander entkoppeln. Was nötig ist, richtet sich nach dem, was die
wilden Programmierimpulse mit dem Rest der Schaltung anstellen können.
Nicht notwendig, aber bequem ist es, die Versorgungsspannung von Schaltung und
Programmier-Interface gemeinsam zu beziehen und dafür zwei weitere Leitungen
vorzusehen. GND versteht sich von selbst, VTG bedeutet Voltage Target und ist die
Betriebsspannung des Zielsystems. Damit wären wir bei der 6-Draht-ISP-Programmierleitung.
Die ISP6-Verbinder haben die nebenstehende, von ATMEL standardisierte Pinbelegung.
Und wie das so ist mit Standards: immer gab es schon welche, die früher da waren, die
alle verwenden und an die sich immer noch (fast) alle halten. Hier ist das der 10-polige
Steckverbinder. Er hat noch zusätzlich einen LED-Anschluss, über den die
Programmiersoftware mitteilen kann, dass sie fertig mit dem Programmieren ist. Auch nicht
schlecht, mit einer roten LED über einen Widerstand gegen die Versorgungsspannung ein
deutliches Zeichen dafür zu setzen, dass die Programmiersoftware ihren Dienst versieht.
Zum Seitenanfang
So, Lötkolben anwerfen und ein Programmiergerät bauen. Es ist denkbar einfach
und dürfte mit Standardteilen aus der gut sortierten Bastelkiste schnell aufgebaut sein.
Ja, das ist alles, was es zum Programmieren braucht. Den 25-poligen Stecker steckt man in den
Parallelport des PC's, den 10-poligen ISP-Stecker an die AVR-Experimentierschaltung. Wer
gerade keinen 74LS245 zur Hand hat, kann auch einen 74HC245 verwenden. Allerdings
sollten dann die unbenutzten Eingänge an Pin 11, 12 und 13 einem definierten Pegel
zugeführt werden, damit sie nicht herumklappern, unnütz Strom verbraten und HF
erzeugen.
Den Rest erledigt die alte ISP-Software, die es auf der
ATMEL-Seite kostenlos gibt, PonyProg2000 oder andere Brenn-Software. Allerdings ist
bei der Brennsoftware auf die Unterstützung neuerer AVR-Typen zu achten.
Wer eine serielle Schnittstelle hat (oder einen USB-Seriell-Wandler) kann sich zum
Programmieren aus dem Studio oder anderer Brenner-Software auch den kleinen,
süßen AVR910-Programmer bauen (Bauanleitung und Schaltbild siehe
die Webseite von Klaus Leidinger).
Zum Seitenanfang
Dies ist ein sehr kleines Experimentierboard, das Tests mit den vielseitigen Innereien des
ATtiny13 ermöglicht.
Das Bild zeigt
- das ISP10-Programmier-Interface auf der linken Seite, mit einer Programmier-LED, die
über einen Widerstand von 390 Ω an die Betriebsspannung angeschlossen ist,
- den ATtiny13, dessen Reset-Eingang an Pin 1 mit einem Widerstand von 10 kΩ an die
Betriebsspannung führt,
- den Stromversorgungsteil mit einem Brückengleichrichter, der mit 9..15 V aus
einem ungeregelten Netzteil oder einem Trafo gespeist werden kann, und einem kleinen
5 V-Spannungsregler.
Der ATtiny13 braucht keinen externen Quarz oder Taktgenerator, weil er einen internen
9,6 MHz-RC-Oszillator hat und von der Werksausstattung her mit einem Vorteiler von
8 bei 1,2 MHz arbeitet. Die Hardware kann auf einem kleinen Experimentierboard aufgebaut
werden, wie auf dem Bild zu sehen.
Alle Pins des ATtiny13 sind hier über Lötnägel zugänglich und können
mit einfachen Steckverbindern mit externer Hardware verbunden werden (im Bild eine LED mit
Vorwiderstand).
Damit es was mehr zum Programmieren gibt, hier eine einfache Schaltung mit einem schon etwas
größeren AVR-Typ. Verwendbar ist der veraltete AT90S2313 oder sein neuerer
Ersatztyp ATtiny2313. Die Schaltung hat
- ein kleines geregeltes Netzteil für den Trafoanschluss (für künftige
Experimente mit einem 1A-Regler ausgestattet),
- einen Quarz-Taktgenerator (hier mit einem 10 MHz-Quarz, es gehen aber auch
langsamere),
- die Teile für einen sicheren Reset beim Einschalten,
- das ISP-Programmier-Interface (hier mit einem ISP10PIN-Anschluss).
Damit kann man im Prinzip loslegen und an die vielen freien I/O-Pins des 2313 jede Menge
Peripherie dranstricken.
Das einfachste Ausgabegerät dürfte für den
Anfang eine LED sein, die über einen Widerstand gegen die Versorgungsspannung geschaltet
wird und die man an einem Portbit zum Blinken animieren kann.
Zum Seitenanfang
Wer nicht selber löten will oder gerade einige Euros übrig hat und nicht weiss, was
er damit anstellen soll, kauft sich ein fertiges Programmierboard.
ATMEL STK500
Leicht erhältlich ist das STK500 von ATMEL. Es bietet
u.a.:
- Sockel für die Programmierung der meisten AVR-Typen,
- serielle und parallele Low- und High-Voltage-Programmierung,
- ISP6PIN- und ISP10PIN-Anschluss für externe Programmierung,
- programmierbare Oszillatorfrequenz und Versorgungsspannungen,
- steckbare Tasten und LEDs,
- einen steckbaren RS232C-Anschluss (UART),
- ein serielles Flash-EEPROM,
- Zugang zu allen Ports über 10-polige Pfostenstecker.
Die Experimente können mit dem mitgelieferten AT90S8515 oder ATmega8515 sofort beginnen.
Das Board wird über eine serielle Schnittstelle (COMx) an den Rechner gekoppelt und von
den neueren Versionen des Studio's von ATMEL bedient.
Für die Programmierung externer Schaltungen besitzt das Board einen ISP6-Anschluss. Damit
dürften alle Hardware-Bedürfnisse für den Anfang abgedeckt sein.
Für den Anschluss an eine USB-Schnittstelle am PC braucht man noch einen
handelsüblichen USB-Seriell-Wandler. Für eine gute automatische Erkennung durch
das Studio ist im Gerätemanager eine der Schnittstellen COM2 bis COM4 für den
Wandler und eine Geschwindigkeit von 115 kBaud einzustellen.
Damit dürften alle Hardware-Bedürfnisse für den Anfang abgedeckt sein.
AVR Dragon
Wer an seinem PC oder Notebook keine RS232-Schnittstelle mehr hat, ist mit dem preiswerten AVR
Dragon gut bedient. An das kleine schmucke Board kann man eine ISP6- oder ISP10-Schnittstelle
anbringen und damit externe Hardware programmieren. Das Board hat auch Schnittstellen für die
Hochspannungsprogrammierung.
Andere Boards
Es gibt eine Vielzahl an Boards. Eine Einführung in alle verfügbare Boards kann hier
nicht gegeben werden.
Zum Seitenanfang
©2002 by http://www.avr-asm-tutorial.net