Ein ISP-Programmer für AVR-Mikrocontroller

Noch einer... - Denn es gibt ja schon genug Versionen... - Und dann auch noch inkompatibel zum Rest der Welt... Aber das hat seine Ursachen und Gründe...
Zuerst mal zur Schaltung.
Der Adapter ist am Parallelport (LPT1) angeschlossen. Die Leitungen Reset, SCK, MOSI und MISO werden über einen Bustreiber 74HCT245 geführt, der vom Programm auf Tristate (hochohmig) geschaltet werden kann. Der 245er schaltet mit seinen anderen 4 Gattern die 4 Zweifarb-LEDs für die Pegelanzeige. Eine Transistorschaltung schaltet die Betriebsspannung des zu brennenden AVRs, die Zielschaltung muss also spannungsfrei (ausgeschaltet) sein. Hier das Schaltbild:
Da ich keine Lust hatte, erst noch Eagle-Symbole für Zweifarb-LED (2-Pin) und Glühlampe zu entwerfen, habe ich vorhandene LED-Symbole benutzt.
Die Schaltung wurde auf eine gefräste Platine aufgebaut, wobei fast alle Bauteile nach SMD-Manier auf die Leiterseite montiert wurden. Nur die LEDs, der Schalter und die Glühlampe befinden sich auf der anderen Seite. Somit ist die Leiterplatte gleichzeitig die "Frontplatte"... Das Bild zeigt die Ansicht der Platine mit Leiterzügen (wie sie geätzt werden würde)...

Und mit Fräsbild. Es werden nur die Trennlinien gefräst, keine großen Flächen.

Das Bild zeigt die Innenseite des fertigen Gerätes. Als Gehäuseboden wurde ein Stück Kabelkanal-Abdeckung verwendet, das mit Tesafilm angeklebt wurde. Die Kabel wurden mit Zugentlastungen befestigt. Das Leiterbild entspricht noch einer älteren Version, weshalb die MISO-Leitung verlängert werden mussten.

Das Bild zeigt den ISP-Adapter am Laptop angeschlossen. Der PS/2-Stecker mit nur einem Pin dient der Stromversorgung mit +5V. Am ISP-Target-Stecker ist ein Tiny12/15-Adapter angesteckt in dem sich ein Tiny15 befindet.

Hier sieht man den Adapter für Tiny12 bzw. Tiny15 im Einsatz mit und ohne Target-Board.

Für den Einsatz am 8535 und den pinkompatiblen Megas ist dieser Adapter vorgesehen. Er enthält zusätzlich noch einen Reset-Taster, da ich diesen mal beim Debuggen eines 8535-Programms brauchte. Am oberen Ende des Adapters ist wieder der übliche 2x3 Pfostensteckverbinder. Dieser Adapter kommt auch beim Mega8 (4433) zum Einsatz, da dort (außer Reset) die Anschlussreihenfolge an den AVR-Pins auch passt, was ein einfaches Leiterbild auf der Platine ermöglicht. Auch für 1200/2313 gibt es ein Adapter, und zwar in Form einer Klemmzange (Kontaktclip), die auf den Chip aufgesetzt wird.

Die dazugehörige Software ist in QBASIC (naja, in QB, Version 4,5, damit man compilieren kann und eine ausführbare EXE-Datei erhält) geschrieben. Da das Programm direkt auf den I/O-Bereich zugreift, läuft es nur unter DOS oder WINDOWS bis 98SE (ME nicht getestet). Das Programm spricht den AVR langsamer an als andere ISP-Programme. Dadurch dauert der Brennvorgang zwar etwas länger, es sind aber längere Leitungen möglich. Die Oberfläche des Programms ist menüorientiert. Die Auswahl erfolgt mit den Cursortasten und den Tasten Enter und ESC. Steuerung per Maus wäre zwar machbar (siehe Fräsprogramm), mir war aber nicht danach.

Hier ein Screenshot des Programms:
Es ist ein neuer Mega8 angeschlossen (Auslieferungszustand), was ja auch im linken Teil das Bildschirms zu erkennen ist. Schon beim Aktivieren des Programmiermodus werden Signature-Bytes, Calibrationsbytes, Fusebits und Lockbits eingelesen und angezeigt. Es wird auch erfasst, wie oft der Chip (im aktuellen Projekt, also in diesem Ordner) bereits gelöscht wurde. Dabei dient das 1MHz-Calibrationsbyte als Chipnummer zum Identifizieren mehrerer Chips. Das Schreiben von Flash und EEPROM ist noch gesperrt, da noch keine Programm-Datei geöffnet wurde.

Das ist der Bildschirm zum Einstellen der Lockbits und Fusebits. Von links nach rechts sieht man Bezeichnung, Zustand, Auslieferungszustand laut Datenblatt und eine Beschreibung. Rechts wird in Höhe der Clock-Select-Bits die Taktquelle in verständlichem Text angezeigt. Dies verringert die Gefahr eines Irrtums beim Einstellen der Taktquelle. Wenn später mal die Megas mit 3 Fusebytes implementiert werden wird der Bildschirm etwas anders organisiert, vsl. links die 24 Fusebits und rechts unten die Lockbits.

Hier sieht man wieder den Hauptbildschirm. Inzwischen ist der Mega8 auf 8MHz intern eingestellt. Es ist auch eine HEX-Datei geöffnet, jetzt darf programmiert werden. Übrigens wird die ausgewählte HEX-Datei vor jedem Programmiervorgang neu eingelesen, somit kann man das Programm während des Debuggens mit AVR-Studio offen lassen und braucht nicht nach jeder Programmänderung die Hexdatei neu einlesen.

Das Programm (Quelltext) (als einteiliges Exe-Programm compiliert) läuft bei mir unter WINDOWS98SE in der DOS-Box. Das Programm unterstützt derzeit nicht alle verfügbaren AVR-Typen, sondern nur die, mit denen ich bisher gearbeitet habe. Dies wären:

AT90S... 1200, 2313, 4433, 8515, 8535
Tiny... 12, 15, 26
Mega... 8, 8515, 8535, 32
Kann sein, dass Mega16 auch schon drin ist, habe ich aber noch nicht benutzt.

Das Speichern ausgelesener Programmdateien ist vorerst nicht vorgesehen. Zum Brennen selbstgeschriebener oder ehrlich erworbener Programme ist dies auch nicht erforderlich.

Das Dateisystem unterstützt keine Ordner, es arbeitet nur im aktuellen Ordner. Dies ist aber kein Problem, denn ich lege mir in jeden Projektordner eine Kopie der PIF-Datei. Damit arbeitet das Programm, das nur einmal auf der Platte vorhanden ist, durch Doppelklick auf die PIF-Datei im jeweiligen Projektordner und zeigt nur die hier vorhandenen Dateien an. Auch die Datei für die Lösch-Statistik wird im Projektordner abgelegt.

Im Allgemeinen habe ich AVR-Studio, ISP-Programm, Speedcommander und Acrobat-Reader mit Datenblatt gleichzeitig offen und schalte mit Alt-Tab zwischen den Tasks hin und her...