Es gibt im Web viele Schaltungsvorschläge für brauchbare Programmierschaltungen für AVRs. In der Regel wird das Programm für einen AVR auf einem PC geschrieben und in AVR-Maschinencode übersetzt. Das erledigen Assembler wie ATMEL-AVR-Studio oder Hochsprachencompiler in Basic, Pascal oder C. Nach der Übersetzung muss das Maschinenprogramm aber noch in den Flashspeicher des Prozessors übertragen werden. Das erledigen die "Programmer", eine Verbindung aus Hardware (die an eine am PC verfügbare Peripherieschnittstelle angeschlossen wird) und einem Treiberprogramm, das es erlaubt, dass der PC die übersetzten Assemblerbefehle direkt in den Programmspeicher des Microprozessors übertragen kann.
Es gibt sehr schnelle Hardware, welche die Daten über die USB-Schnittstelle überträgt. Weil in der Regel dafür ein eigens programmierter Controller nebst zusätzlicher Bausteine nötig ist, sind solche Programmer nicht gerade billig. Der im Folgenden vorgestellte Programmer nutzt die serielle Schnittstelle des PCs. Ältere Modelle haben noch eine solche, bei neueren PCs kann man bei fehlender RS232-Schnitstelle einen Adapter benutzen, der einen seriellen Port am USB-Bus emuliert. Nicht immer funktioniert ein solcher Adapter auf Anhieb, Versuche und ein geduldiger Händler sind in jedem Fall anzuraten.
Der Schaltplan zum ISP-Interface sieht wie folg aus (Abb. 1). Für eine größere Darstellung im PDF-Format bitte auf die Abbildung klicken. Die Leitungen 6 (DSR) und 7(RTS) der RS232 am PC stellen das Signal für den seriellen Takt der Übertragung. Pin 4 (DTR) liefert den Pegel für die Leitung MOSI (Master out/ Slave in) des Controllers. Die Zenerdioden auf den Leitungen begrenzen die DIN-Pegel der RS232 von 12 V auf controllerverträgliche 5V. Auf Leitung 8 (CTS) werden die Rückmeldungen vom AVR durch den PC abgehört. Die Resetleitung wird durch einen Transistor gesteueret, dessen Basis über den 10 k-Widerstand mit Pin 3 (TXD) verbunden ist. Der Widerstand von 10 k am Vcc-Anschluss der ISP-Schnittstelle wird eigentlich nur benötigt, falls der RST-Pin des AVR (Pin1 des ICs) nicht bereits mit einem 10k-Widerstand an Vcc liegt, was aber meist der Fall ist.
Abb. 1: Schaltplan des ISP nach http://www.lancos.com/siprogsch.html
Abb. 2 und Abb. 3 zeigen das Layout und den Bestückungsplan der Version 2.0. Dieser Aufbau ist dafür gedacht, in eine sogenannte Posthaube als Gehäuse eingebaut zu werden. Die Postehaube ist schlicht nur die Griffschale für die SUBD-9-Buchse. Der 15k-Widerstand und der 4,7k-Widerstand ganz oben sind von der Rückseite eingelötet, wobei der linke (freie) Anschluss des 4k7-Widerstands gleich an die Pins 6 und 7 des Steckers, die oberhalb der Platine liegen, gelötet wird.
Abb. 2 Layout und Abb. 3: Bestückungsplan der Version 2.0, die in eine
Posthaube als Gehäuse passt
Abb. 4 zeigt den Herstellungsprozess der Platine(n)
Abb. 4: Aufgebügeltes Layout (links) - Geätzt (Mitte) - Gebohrt
und gefräst (rechts)
Vor dem Auflöten des Steckers müssen die Pins 1 und 5 ein Stück gekürzt werden.
Abb. 5: Fertig bestückte Platine
Die sechs Leitungen zur ISP-Schnittstelle der Controllerplatine werden an die entsprechend gekennzeichneten rechteckigen Lötaugen angelötet. Der Anschluss MISO wir gemäß Schaltbild direkt an Pin 8 des Steckers gelötet. Beim Einlöten ist die Reihenfolge der Leitungen so einzuhalten, wie es im Schaltplan vorgegeben ist. Es beginnt also mit der besonders gekennzeichneten Leitung 1 (Reset). Es folgen Vcc (+5V), SCK, MISO, MOSI, GND. Die einzelnen Kabelchen sind entsprechend einzukürzen.
Abb. 6: Interfacekabel an einem anderen Modell
An das andere Ende des Interfacekabels kommt ein Stecker, der aus einem Stück Lochrasterplatine mit 6 Lötstreifen und einem 6er-Streifen gedrehter IC-Fassungen besteht (Abb. 7), wie sie auch auf der Experimentierplatine als Steckbuchsen eingesetzt wurden. In die Fassungen werden 6 Drahtenden gesteckt, die von den Widerständen der Schaltung abgezwickt wurden. Das Sixpack wird auf die Leiterbahnen der Platine gelötet, und zum Abschluss werden die Drähtchen auch noch in den Fassungen verlötet. Die Anschlussbeinchen der Fassungen dienen als Steckkontakte.
Abb. 7a Lochrasterplatine und IC-Sockel als ISP-Stecker
Abb. 7b: Kabeldurchführung zur Zugentlastung, mit 2,5 mm vorbohren,
die Stege dann mit dem gleichen Bohrer herausfräsen
Das sechpolige Flachkabel wird aufgedröselt und die Drähtchen der Reihe nach auf die Leiterbahnen gelötet. Als Zugentlastung kann man auch zwei Querschlitze in die Platine machen und das Kabel vor dem Anlöten durchfädeln. In den meisten Fällen genügt es wohl auch, wenn man die Steckerplatine zusammen mit dem Kabel in Schrumpfschlauch oder ein paar Runden Klebeband verpackt. Eine gute Idee ist es, das Pin 1 (Reset) des Steckers deutlich zu kennzeichnen. Wie man in Abb. 8 erkennen kann, läuft das blau markierte Kabel an den Pin 1 des Steckers.
Abb. 8: Fertiger ISP-Stecker in Schrumpfschlauch verpackt
Neben dem oben dargestellten neueren ISP-Interface gibt es noch das Vorgängermodell. Die Schaltung ist die gleiche nur das Layout ist anders. Die Platine passt auf 45° schräggelegt ohne weitere Bohrungen auch in eine Posthaube.
Layout
Dazu der Bestückungsplan
Version 3 der gleichen Schaltung entbehrt eines Gehäuses. Statt dessen wurde Wert auf einen möglichst einfachen, einheitlichen Aufbau gelegt, weil sich in zwei Kursen gezeigt hat, dass Leute, die zwar nach dem Aufbau der anderen Baugruppen bereits eine gewisse Übung im Löten haben und trotz Beschriftung der Anschlüsse an beiden Enden des Interfaces trotzdem bei der engen Bestückung ins Schwitzen geraten und Fehler machen. Ich hatte mir eigens ein Testgerät gebaut, mit dem ich die fertigen Schaltungen auf einwandfreie Funktion prüfen konnte, dennoch dauerte das eigentliche Aufspüren von Fehlern trotzdem vielfach zu lang. Deshalb muss man jetzt nur noch die SUBD-9-Buchse richtig herum auf die ein- besser zweiseitige Platine stecken, Die Bauteile wie in der Abbildung platzieren (alle Dioden schauen dabei in die gleiche Richtung) und das 6-fach-Verbindungskabel zum AVR anlöten. Die Reihenfolge der Anschlüsse ist wieder die gleiche wie schon gehabt aber man muss keine Drähte mehr kreuzen oder irgendwo in der Schaltung anlöten, alles passiert jetzt an einer Stelle. Die Zugentlastung kann man auch von einer Seite her aufsägen, das Kabel einlegen und dann wenigstens auf einer Seite mit einem Stück Draht zulöten (für Leute, die den Schlitz nicht fräsen, bohren oder feilen wollen.)
Zur Platinenherstellung kann man sich die PDF-Datei herunterladen. Nach dem Ausdrucken müssen die beiden Layoutteile mit der Druckseite genau aufeinander gelegt werden. Dann kommt die Platine zum Bügeln dazwischen. Alles Weitere passiert dann wie gehabt, wässern, rubbeln, ätzen, bohren ... Beim Ätzen muss man darauf achten, dass die Unterseite der Platine nicht durch Krümel verkratzt wird. Ich verwende gerne so eine Plastikschiene, wie man sie zum Zusammenklemmen von mehreren Papierblättern benutzt. Links und rechts ein Stück davon auf den Rand der Platine geklemmt, dann kann die Säure drunter locker durchpfeifen. Die Unterseite braucht in der Regel etlich länger wie die obere, deshalb wende ich die Platine, wenn die Oberseite schon kräftig angeätzt ist.
Wer keine zweiseitige Platine herstellen kann/möchte, kann die nötigen Verbindungen auf der Oberseite auch mit kurzen isolierten Drahtstücken realisieren. Es empfiehlt sich dann auch, den 4k7-Widerstand (der rechte im Bestückungsplan) von der Kupferseite her einzulöten, dann kann man das obere Ende an die Pins 6 und 7 des Steckers und den anderen Anschluss mit dem darunter liegenden Pin für das SPI-Kabel (im oberen Layout das linke) verbinden. Isolierhülle verwenden, damit es keine Kurzen gibt!
Aufs Bild klicken für eine größere Darstellung
Die beiden Zenerdioden liegen gleich in der ersten Reihe nach der SUBD-9-Buchse neben den 4k7 Widerständen. In der Mitte liegt der 10k-Widerstand, der über die normale Diode 1N4148 die Basis des Transistors aufsteuert und damit die RST-Leitung auf Masse zieht. Obacht geben, beim Einsetzen des Transistors, die flache Seite des BC548 zeigt wie im Bild nach unten. Die Kabelaustritte aus Stecker und Interface werden wie üblich wieder durch Schrumpfschlauch oder ein Paar Runden Tesa fixiert. Ich glaube, die Schaltung ist jetzt auch Daniel-sicher.
Hier auch noch ganz kurz das Testgerät. Ein NE555 erzeugt mit einer 9V-Blockbatterie als astabiler Muvib ein asymmetrisches Rechtecksignal von 980 Hz und einem Dutycycle von 68 %, das an dem Pin mit dem roten Kreuz zur Verteilung auf die drunterliegenden Pins (die mit den Kreisen) ansteht. Das Interface wirde am SUB-D-Stecker rechts oben und an der Programmerleiste im roten Rechteck rechts unten angesteckt. An den drunterliegenden Pins kann man schließlich mittels Oszi oder wenigstens einem Frequenzmessgerät, das auch den Dutycycle anzeigt, nachschauen, ob das Signal richtig durchkommt.
Messvorschrift mit DVM mit Frequenzbereich:
Bestückung und Beschreibung des Testgeräts fürs ISP-Interface (Klicken für PDF-Vorlage)
Weitere Informationen zu Programmern und Interfaces findet man z. B. unter
http://www.mikrocontroller.com/de/isp.php
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm
Aber Vorsicht! Die Pinbelegung der Stecker ist unterschiedlich!