Einleitung
Ursprünglich ist der high voltage (HV)-Programmer von Chan auf http://elm-chan.org/works/avrx/report_e.html entstanden. Nachdem ich diesen aufgebaut, ihn für sehr nützlich und gut befunden hatte, entschloss ich mich, diese Anleitung und das Layout dazu zur Verfügung zu stellen. Der ISP-Programmer ist eine Version mit dem HCT125 (ähnlich Atmel AVR ISP Dongle), welcher im Layout mit eingeschlossen ist. Beide Programmer arbeiten unabhängig voneinander, der HV-Programmer ist dafür gedacht, bei falsch gesetzten Fuse-Bits diese zurückzusetzen, falls man an den Mikrocontroller sonst nicht mehr herankommt. Durch entsprechende Jumper kann man zwischen dem ISP- und HV-Programmiermode umschalten.
Problem
Die meisten der heutigen Mikrocontroller werden normalerweise mit einer Software und einem Hardwareadapter (ISP=In-System-Programmer) programmiert. Da die Atmel-Controller sogenannte Fuse-Bits besitzen, gibt es hier ein Problem, wenn diese Fuse-Bits „irgendwie“ gesetzt werden. Die Fuse-Bits geben z.B. an, ob der Controller mit einem externen Quarz getaktet oder die Reset-Leitung als normaler Pin fungieren soll. Bei unüberlegtem oder versehentlichem Setzen dieser Fuse-Bits kann der Controller nicht mehr über den ISP-Adapter programmiert werden, der Controller bleibt sozusagen für den ISP verschlossen.
Lösung
Zur Lösung dieses Problems kann man sich entweder ein STK500 Programmiergerät von Atmel kaufen (ca. 100,- €) oder diesen preiswerten Adapter selber zusammenbauen. Dieser Programmer bietet die Möglichkeit der „high voltage“ (HV)-Programmierung, nur mit dieser ist es möglich, die Fuse-Bits wieder in einen default-Zustand zu setzen und danach wiederum mit dem ISP-Programmieradapter den Controller wie gewohnt zu programmieren. „High voltage“ bedeutet, dass der Controller mit 5V und 12V gebrannt wird.
Vor- und Nachteile
Die Vorteile dieses HV-Programmers liegen darin, dass man keinen zusätzlichen, bereits programmierten Controller benötigt, um den HV-Programmer aufzubauen. Der Programmer kann diverse Atmel-Controller programmieren, siehe dazu auch die Liste am Ende dieses Dokuments, in der diverse Controller aufgeführt werden. Die Bauteile des Programmer kosten ca. 15€, er ist also sehr preiswert.
Als Nachteil wäre zu erwähnen, das durch die Anzahl der Bauteile ein gewisser Zeitaufwand benötigt wird, um ihn aufzubauen. Für diejenigen, die nur Windows-Oberflächen und Mausklicks gewohnt sind, könnte das Kommandozeilentool auch ein Nachteil sein. Dazu jedoch später, die Bedienung ist kinderleicht!
Bauteileliste
Wer diesen hier beschriebenen Programmer nachbauen will, benötigt zunächst folgende Bauteile:
Halbleiter:
1 x B80C500
1 x BC327
3 x LED 3mm
1 x 78L05
1 x 78L12
1 x 74HCT299*
2 x 2SA1345**
2 x 2SC3402**
* (ein „HC“-Typ hat sich als ungeeignet herausgestellt!)
** („digitaler“ Transistor mit internen Widerständen)
Kondensatoren:
1 x 220µF – 470µF 35V
2 x 100µF 12V
6 x 100µF
Widerstände:
2 x 100 Ohm
1 x 470 Ohm
1 x 680 Ohm
3 x 4,7kOhm
18 x 1kOhm
Sonstiges:
SUBD-Stecker, 25-polig, männlich
Buchsenleisten für ICs etc.
Stromlaufplan
Der Stromlaufplan auf der nächsten Seite wird zugrunde gelegt. Wie man erkennen kann, gibt es drei Jumper, die vor jeder Programmierung gewissenhaft und richtig gesetzt werden müssen. Folgende Tabelle zeigt die notwendigen Jumperstellungen, wenn man den ISP oder HV Modus benutzen möchte:
Jumper
ISP
HV
JP1
2-3
1-2
JP2
1-2
2-3
JP3
Nicht relevant
Für 8-poligen µC
1,2 : Signal R/B 3 : Signal BS1
JP4
STK200 oder 300 kompatibel
STK200: 1-2 STK300: offen
offen
Erläuterung zu den Jumpern:
Bei JP1 wird die 5V Versorgungsspannung entweder auf das IC1 (ISP programmieren) oder IC7 gelegt.
Bei JP2 wird vom DSUB-Stecker Pin12 im ISP Modus mit Pin 2 verbunden, im HV Modus wird Pin 12 mit Pin 9 verbunden.
JP3 ist nur für den HV-Modus relevant. Siehe Verdrahtung für 8-polige Atmels.
JP4 ist für die Kompatibilität von STK200/300 im ISP Modus da (Default: offen).
Desweiteren sind im Stromlaufplan diverse Buchsen- und Stiftleisten zu erkennen. Hier die Erklärungen für alle Steckverbinder:
X1
Parallelport, Stecker (männlich), wird mit 1zu1 Verlängerungskabel an den PC angeschlossen.
X2
Spannungsversorgung, sollte zwischen 14 und 16V AC oder DC betragen.
ST1
Adapter Stiftleiste für Erweitungsboard, z.B. QFP Gehäuse etc. Hier sind alle Signale vorhanden, um den Controller im parallelen Modus zu brennen.
ST2
ISP Adapter, 6-polig. Nach Standard aufgebaut. Ebenfalls für Erweiterungsboards.
JP1
5V Spannungsversorgung entweder zum ISP- oder HV Brennen (siehe Tabelle oben).
JP2
Pin 12 von X1 entweder zum ISP- oder HV Brennen (siehe Tabelle oben).
JP3
R/B und BS1 Signal für 8-polige Controller (siehe Tabelle oben).
JP4
Entweder STK200 oder STK300 kompatibel
BU1A, BU1B
Die Signale an diesen Buchsen müssen, je nach MC-Typ, mit IC-BU1 und IC-BU2 verbunden werden. Eine genaue Anschlussbelegung ist unten zu finden.
BU2
ISP Signale zum Verbinden nach IC-BU1 oder IC-BU2.
BU1-40,BU2-40, BU3-28
Buchsenleisten für die Controller (8 bis 28-polig und 40-polig)
LEDs
LED1 – Programmier-LED für HV
LED2 – 12V Programmierspannung vorhanden
LED3 – Zeigt an, dass JP1 auf den HV Programmiermodus eingestellt ist
LED4 – Zeigt an, dass JP1 auf den ISP Programmiermodus eingestellt ist
Belegung der Buchsenleiste BU1A/BU2A und ST1 (HV Programmierung)
Um einen Controller im HV-Modus wieder in einen default-Zustand zurückzusetzen, sind die Signale an den Buchsenleisten BU1A/BU1B oder ST1 notwendig. Wenn ein Controller z.B. die Datenleitungen D0 bis D7 nicht benötigt (z.B. Tiny 15 o.ä.), bleiben diese unbenutzt. Die Belegung geht aus dem linken Bild hervor:
Der ISP Anschluss (rechtes Bild) entspricht der „Norm“ des 6-poligen Atmel-Verbinders. Auch hier besteht mit ST2 die Möglichkeit, diesen Anschluss für externe Boards zu nutzen.