PICProg

by Martin Clausen (mc AT rotgradpsi DOT de)

Flash-PIC-Programmer zum Anschluß über die parallele Schnittstelle

Inhaltsverzeichnis:

Features

Systemanforderungen

8086, etwas RAM, ca. 50kb Festplattenspeicher, parallele Schnittstelle DOS oder Windows (siehe diese Notiz)

Bedienung des Programms

picprog [/h] [/info] [/list] [/init2] [/standby] [/read] [/continue] [/compare] [/noF84] [lpt1|lpt2] [/w:FILENAME]

Die Zeichen bedeuten folgendes:

/h Hilfe
/log schreibt Ausgabe in picprog.log, erzwingt /info
/info Erweiterte Anzeige der Statusmeldungen
/list Liste der unterstützten PICs
/init2 /MCLR vor Vpp Power-up Modus
/standby Wiederholte Ausführung des Programmiervorgangs
/continueFortführung des Programmiervorgangs auch bei Fehlern
/noF84blockiert PIC16F84 Modus
/lptX Angabe der parallelen Schnittstelle
/readAuslesen des PIC in Hex-Datei, kehrt /w: command um
/compareVergleich von PIC und Hex-Datei, übersteuert /w: command
/w: löscht und brennt PIC mit folgender Hex-Datei, die Extension wird nicht beachtet und auf .hex gesetzt

Wenn man ein Programm entwickelt und WinXX benutzt, ist es sehr praktisch eine Verknüpfung zu PICProg auf den Desktop zu legen. Dort kann dann die Kommandozeile eingegeben werden und mit nur einem Klick hat man den PIC programmiert und einem weiteren das Fenster geschlossen.

Alternativ ist es auch möglich die /standby Option zu benutzen. Dann muß man nur das Fenster aktivieren und eine Taste drücken. Das ist besonders nützlich bei der Programmentwicklung oder wenn mehrere gleiche Chips zu programmieren sind.

Das Programm speichert die Hex-Datei nicht zwischen, sondern ließt sie während des Programmiervorganges ein. Daher wird bei richtiger Einstellung des Compilers immer die aktuelle Version der Datei in den Chip übertragen.

Beim Auslesen werden zur Sicherheit alle Daten zweimal abgefragt und dann verglichen. Eine Datei, die durch das Auslesen eines Chips erzeugt wurde, unterscheidet sich von der, mit der der Chip programmiert wurde, weil beim Auslesen der gesamte Speicher ausgelesen werden muß, das Original aber meist nicht dem gesamten Speicher Werte zu weist. Wird diese Hex-Datei wieder in einen PIC programmiert, so ergibt sich natürlich die gleiche Funktion wie beim ausgelesenen Chip. Jedoch wird die Hex-Datei größer und die Brennzeit dadurch länger sein.

Um den Batchmode zu unterstützen, kann der Status via Errorlevel abgefragt werden:

Error
level
Nachricht
0Befehl ausgeführt
1Befehlsausführung fehlgeschlagen
2Fehler in der Hex-Datei
3Keine Programmieraufgabe, keine Datei oder Druckerschnittstelle ausgewählt
4Fataler Fehler

ID, configuration word und EEPROM data sollten in Hex-Datei enthalten sein auf :

AdresseSpeichertyp
00000H - 01FFFHProgrammspeicher
02000H - 020FFHID, configuration word
02100H -EEPROM

Zur Veranschaulichung hier ein Beispiel von Thorsten Klose:

Unterstützte PICs

Erkannt werden von dem Programm:

12F629; 12F675
16F72; 16F73; 16F74; 16F76; 16F77
16F84A; 16F84A REV2; 16LF84A; 16F87; 16F88
16F627; 16F627 REV2; 16F627A; 16F628; 16F628 REV2; 16F628A; 16F628A REV2; 16LF627; 16LF628
12F629; 16F630; 16F648A; 12F675; 16F676; 16F818; 16F819
16F870; 16F871; 16F872; 16F873; 16F873A; 16F874; 16F874A; 16F876; 16F876A; 16F877; 16F877A

Auch programmiert, aber nicht erkannt werden:

16C84; 16CL84; 16F83; 16F84

Weitere PICs bei vergleichbarem Programmierverfahren sicherlich möglich. Bei Bedarf mich bitte kontaktieren. Es wird vor dem Programmieren die ID des PIC in picdata.dat gesucht. Wird kein passender Chip gefunden, wird der Befehlssatz des PIC16F84 verwendet. Es wird nicht geprüft ob PIC und Hex-Datei zusammen passen.

Schaltungsprinzip

Spannungsversorgung

Die Diode D3 schützt die Schaltung vor Verpolung. C14 und C7 stabilisieren und enstören die Betriebsspannung. Ein Standard Spannungsregeler vom Typ 70L05 erzeugt eine 5 Volt Spannung zur Versorgung aller Chips.
Der TL317 bildet mit dem Transistor eine zwischen 13 und 0,8 Volt umschaltbare Spannungsquelle. Die höheren Spannung wird durch den Spannungsteiler R5 und R11 nach folgender Formel bestimmt: Uout = (1 + R5/R11) * Uref . Dabei ist Uref die Referenzspannung des TL317 also 1,25 Volt. Wird die niedrigere Spannung benötigt, so schaltet der Transistor durch und es gilt die Formel Uout = Uref + Vce . Vce ist die Kollektor-Emitter-Spannung des Transistors. Diese Spannung ist mit 1,55 Volt zu hoch um von dem PIC sicher als low erkannt zu werden. Daher wird Uout durch die Diode D5 um 0,7 Volt reduziert. R10 stellt eine minimalen Strom durch die Diode sicher, sonst kann sich durch den Leckstrom der Diode bei sehr niedriger Belastung eine zu hohe Spannung aufbauen.
Drei der CMOS-Schalter des 74HC4066 erlauben es die Betriebsspannung des PIC ein- und auszuschalten. Nur durch die Verwendung aller drei Schalter eines HC Bausteines kann die minimale Versorgungsspannung des PIC garantiert werden. Ein CMOS-Schalter der 4000er Serie hätte einen zu hohen Innenwiderstand.

PC Anschluß

Die Pullup-Widerstände am Eingang des 74LS14 sorgen für definierte Pegel. Wichtig ist die Wahl des bipolaren LS-Chips. Bei einem CMOS-Chip könnten die ESD-Schutzdioden zum Latchup führen, wenn die Schaltung schon an den PC angeschlossen ist, aber nicht mit Strom versorgt wird. Außerdem hat die LS-Serie die richtigen Schaltpegel für die parallele Schnittstelle.
Der Datenpin des PIC wird während des Programmierens bidirektional benutzt, doch der parallel Port kennt in der Standardversion keinen solchen Datenaustausch. Daher muß ein CMOS-Schalter verwendet werden, um das Signal entsprechend der Datenflußrichtung umzuschalten.

Bauteilliste

Bautips

Aus den drei 40 pol. Fassungen den Steg in der Mitte entfernen. Präz. Fassungen der jeweiligen Größe ineinander stecken. Beim Aufbau 18 pol. Fassung in der 40 pol. plazieren. Erst dann verlöten. Platine direkt an der 40 pol. Fassung in das Gehäuse schrauben. Sub-D-Buchse im Gehäuse verschrauben und mit der Platine durch Schaltlitze verbinden. KEIN 4066 oder 74HC 14 verwenden! Der Aufbau sollte nicht höher als 8 mm werden, da sonst die Fassungen zum Programmieren nicht mehr aus dem Gehäuse ragen. U. U. je 4 präz. Fassungen verwenden.

Datenblätter stehen z. B. bei Fairchild zum Download bereit.

Fehlerquellen

Download von Programm und Schaltplan

Die Bauteilebeschriftung ist wie folgt zu lesen:
Bauteiltyp + Wert in exponential Form + Gehäusebezeichnung + Unternummer der Funktionseinheit
zum Beispiel: C1040805,1 ist ein Kondensator, 100nF, Gehäuse SMD 0805, erste Funktionseinheit im Gehäuse

Sollten Probleme auftauchen, bitte immer mitsenden:

Ähnliche Projekte

BeschreibungAutor
IC-Prog serieller Universal-Programmer mit Windows Software (Englisch)Bonny Gijzen
Pony Prog serieller Universal-Programmer mit Windows Software (Englisch)

Disclaimer: No warranty at all!
Copyright by Martin Clausen, Germany.
Kontakt zum Autor: mc AT rotgradpsi PUNKT de
Impressum