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 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 ISP-Software, die es auf der
ATMEL-Seite kostenlos gibt.
Zum Seitenanfang
Damit es was zum Programmieren gibt, hier eine einfache Schaltung mit einem schon etwas
größeren AVR-Typ. 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. Leicht erhältlich ist das
STK500 von ATMEL. Es bietet u.a.:
- Sockel für die Programmierung der meisten AVR-Typen,
- serielle und parallele 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 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.
Damit dürften alle Hardware-Bedürfnisse für den Anfang abgedeckt sein.
Zum Seitenanfang
©2002 by http://www.avr-asm-tutorial.net