Um einen AVR Microcontroller mit Software zu versorgen (z.B. für ein MMC2IEC) braucht muss man ihn prigrammieren. Entweder man hat dafür ein AVR-Entwicklungsboard oder man bastelt sich für ein paar Cent mal eben selber ISP-Adapter und baut den Anschluss mit auf die Schaltung auf. Bauanleitungen zu einem solchen ISP-Adapter gibt es auf der PonyProg Webseite oder an vielen anderen Stellen.
Wenn man nun aber nicht jedesmal den ISP-Anschluss mit auf die Schaltung drauftun möchte, so kann man sich stattdessen ein Programmierboard kaufen oder selber bauen.
Ich habe mir auf einer Lochrasterplatine (20x26, es reicht aber auch 20x22) ein Board gebaut, welches sowohl ATMega32, als auch ATmega8 und ATTiny bespielen kann, indem ich für alle drei Sorten (und alle pinkompatiblen Varianten) IC-Fassungen auf das Board gesetzt habe.
Ein wichtiger Hinweis vorneweg: Es kann natürlich immer nur ein Chip eines Typs gleichzeitig geflashed werden und nicht etwa gleichzeitig ein ATMega8 und ein ATTiny45!
Ein zweiter wichtiger Hinweis vorneweg: Es können keine externen Taktgeber angeschlossen werden, d.h. man kann nur uCs bespielen, welche mit interner Clock arbeiten.
Nachtrag 22.02.2009: Ich habe nun einen externen Taktgeber mit eingebaut (s.u.).
Bild: AVR Board Layout v3 auf 20x22 Lochraster (klicken für Grossansicht)
Das GerÄt benötigt nur wenige Bauteile:
Im folgenden Bild sind die sechs Pins zur Programmierung jeweils rot gekennzeichnet. Diese gilt es zu verbinden.
Zur besseren Übersichtlichkeit habe ich für jede Leitung eine unterschiedliche Kabelfarbe verwendet.
Die Pinbelegung meines 6pin ISPs (kann man natürlich auch anpassen):
Pin | Line | Kabelfarbe |
---|---|---|
1 | MISO | Blau |
2 | VCC | Rot |
3 | SCK | Gelb |
4 | MOSI | Braun |
5 | RESET | Weiss |
6 | GND | Schwarz |
Pinkompatible Varianten:
ATMega32 = ATMega16/164/324/644 und ATmega8535
ATMega8 = ATmega48/88/168
Bild: Die Pin-Belegungen der drei AVR-Typen für mein Board (klicken für Grossansicht).
Aus den IC-Fassungen wurden (bis auf die Ecken zur Befestigung) alle Pins entnommen (von unten durchgedrückt), welche nicht zu Programmierung dienen, d.h. es verblieben nur Vcc, GND, MISO, MOSI, SCK und RESET - zusÄtzlich habe ich AVcc und das dazugehörige GND ebenfalls angeschlossen. Die verringerte Anzahl von Pins erleichtert das Einsetzen der Chips.
Da die Anzahl der Verbindungen nach ersten Zeichnungen auf Papier zu gross für eine übersichtliche Schaltung auf der Rückseite der Platine sein würde, habe ich mich entschlossen, diesmal beide Seiten zu verwenden und den Haupteil der Leitungen 'überirdisch' zu verlegen.
Bild: Vorgezeichnete Verbindungen und Vorzeichnung plus Fassungen.
Jetzt werden die Kabelstücke in Form gebogen und eingelötet. Danach müssen nur noch die Fassungen aufgesetzt und die letzten Kabel und Lötverbindungen auf der Rückseite aufgebracht werden.
Ein wichtiger Hinweis: Nachdem man die Fassungen eingesetzt hat, sollte man mit einem sehr feinen Schraubenzieher in die Kontaktlöcher gehen, welche mit einer Leitung 'untertunnelt' wurden und die Leitungen etwas zur Seite schieben, bis das darunterliegende Lötloch wieder komplett sichtbar ist (gegen Licht halten). Da die Leitungen auch unter den Pins langlaufen besteht sonst die Gefahr, mit den Pins eines der Kabel zu verletzen. Sicherheitshalber sollte man die Chips eh nicht bis zum Anschlag reindrücken, sondern nur auf Minimalkontakt einstecken. Man möchte Sie ja auch wieder rausbekommen...
Bild: Die Verbindungen auf der Oberseite, mit eingesetzten Fassungen und komplettierter Lötseite
Auch das war wieder kein Hexenwerk und ist auch noch leidlich anzusehen.
Kann man jetzt noch auf ein Holzbrett nageln oder so, damit die Lötkontakte geschützt sind.
Statt der PrÄzisionssockel kann man natürlich auch Nullkraftsockel verwenden - das macht das Layout entsprechend größer (mehr Platz für die Sockel) und deutlich teurer.
Bild: Das fertige AVR Programmier Board
Letzendlich benötigte ich für ein Projekt doch die Möglichkeit, einen externen Oszillator anzuschliessen, also musste ich nochmal an das Brett ran.
Der Umbau ermöglicht jetzt einen Einsatz eines externen Oszillators für den 40pin Slot. Dazu mussten zunächst wieder zwei Pins (XTAL1 und XTAL2) eingesetzt werden, die ich vorher entfernt hatte. Dann zwei Sockel für die Kondensatoren des Oszillators und ein Sockel für den Oszillator selber (damit man verschiedene Oszillatoren mit unterschiedlichen Kondensatoren verwenden kann). Für die beiden kleinen Slots habe ich die entsprechenden Kabel noch nicht angeschlossen, aber letztendlich ist das auch kein Hexenwerk.
Bild: Neu und verbessert: Jetzt mit externem Oszillator
Für ein anderes Project (SwinSID) benötigte ich die Möglichkeit, AVRs in der Bauform PLCC 44 bespielen zu können.
Dafür habe ich mir eine Adapterplatine gebastelt, welche auf das AVR-Board kopfüber aufgesteckt wird.
Die Belegung der Pins hat Peter Sieg im Forum64 gepostet.
Update 15.06.09: Ich habe - nachdem auch mir der Unterschied zwischen Oszillator und Taktgeber endlich komplett klar war - das Board noch um einen Sockel für Taktgeber erweitert. Das Ergebnis ist nicht sehr schön, aber tut genau das, was es soll. Der Zusatzsockel ist so gestaltet, dass ich entweder 14pin oder 8pin Taktgeber verwenden kann (der Oszillator und die zwei Kondensatoren werden dabei natürlich entfernt - dafür sind sie ja gesockelt...).
Bild: Die Pinbelegung (Peter Sieg)
Bild: Die Erweiterungsplatine für PLCC44 einzeln und aufgesteckt
Last update: 15.06.2009, AntaBaka at artful.de