Hochvolt-AVR-Programmiergerät

Neben der ISP-Schnittstelle bei auf 0 V gehaltenem Reset-Eingang können AVRs auch mit 12 V am Reset-Eingang programmiert werden. Im Gegensatz zu PICs ist dann das Programmier-Interface (leider) völlig anders:

Hochvolt-Programmierung ist erforderlich, um den Reset-Anschluss als Ein/Ausgang zu benutzen und Änderungen an der Firmware machen zu können. Auch kann es passieren, dass man sich aus Irrtum oder mit einem defekten(?) Programmiergerät die RSTDISBL-Fuse setzt und sich so vom weiteren ISP-Programmieren aussperrt. „Verfused“ genannt. Das betrifft alle AVR-Controller mit < 40 Beinchen.

PIC-Controller sind davon nicht betroffen, diese erlauben das Setzen einer vergleichbaren Fuse nur bei hoher Programmierspannung. Zudem ist die Umfunktionierung des Reset-Anschlusses weniger interessant, weil dieser nur als Eingang dienen kann. (Bei AVR ist ein Push-Pull-Ausgang möglich, allerdings mit verringerter Treiberstärke.)

AVR-HV-Prog

Ausgehend von ElmChans Programmieradapter wurde auf www.mikrocontroller.net ein geeignetes Programmiergerät für alle Durchsteck-Chips veröffentlicht. Leider ist der Platinenentwurf nicht für die Produktion bei einer professionellen Platinenfertigung geeignet; die Löcher sind allesamt viel zu klein. Zudem gab es (bei mir) Schwierigkeiten mit dem 74HC299 in Verbindung mit einer langen Leitung zum Drucker. Obendrein benötigt man ein Kabel mit 2× Stecker.

Dafür habe ich das Windows+Linux-Programm avrpp geschrieben. Es hat eine auf Einfachheit optimierte Kommandozeile, lädt ELF-Dateien und kann Fuse-Bits dekodiert anzeigen. Der Zugang zum Parallelport kann sowohl direkt via giveio64 als auch indirekt via inpoutx64.dll erfolgen. Unter Linux immer direkt via ioperm(), der indirekte Zugriff über das Dateisystem /dev/port ist auskommentiert.

avrpp-usb

Nicht das Aussterben von Parallelports bewegt mich zu einer USB-Lösung, sondern der nervige Griff zum Steckernetzteil für die Stromversorgung bewegte mich schließlich zum Neuentwurf mit echtem USB. Da ich die Software avrpp selbst in die Hand genommen hatte, sollte es keine allzu große Schwierigkeiten bereiten, die Programmier-Routinen in einen USB-Mikrocontroller zu stecken.

Als Ausgangspunkt dienen tote Arduino Unos! Diese enthalten neben dem ATmega328 auch einen ATmega8U2 als USB-Seriell-Wandler. (Nicht bei den chinesischen Nachbauten.) Diesen wiederzuverwenden ist die Idee, ausgerechnet diesen etwas seltener verwendeten Controller zu verwenden. Auch „lebendigen“ Arduinos kann man den USB-Seriell-Wandler entreißen, dann geht's halt mit ISP weiter.

Schaltungs- und Platinenentwurf, Eagle-Quelle

Alles in allem ähnlich der Platine fürs Parallelport, mit folgenden Extras:

Gehäuse, SolidEdge-Quelle

Im Muster wurde ein AT90USB162 bestückt. Der Atmel-Urlader wurde durch (mein) UBA ersetzt, der bei dieser Gelegenheit korrigiert und modernisiert wurde.

In Arbeit

Sonstiges / Links

In Arbeit