Tja, ein hehres Ziel habe ich mir da vorgenommen, als ich beschloss, den Accessory Encoder zu programmieren, und ich muss zu meiner Schande gestehen, dass ich letztlich doch die Weichei-Lösung vorgezogen habe (nicht zuletzt, weil ich irgendwann mal diesen PIC programmiert haben wollte :-)
Doch der Reihe nach...
Meine Versuche, mit GiveIO / DirectIO den Parallelport unter XP für die Programmiersoftware “FPP” von David Tait zu öffnen, schlugen alle fehl, ich konnte zwar auf den Port zugreifen, aber das Programmieren mit dem Topic2icsp hat dennoch nicht geklappt. Pech. Oder Unvermögen?... Egal, Hauptsache klappt nicht :-(
Na ja, die zweitbeste Lösung, nämlich das leicht eingestaubte Notebook mit Win 95, gibt´s ja auch noch :-)
Dass ich dafür vorher noch den Akkupack mit 16 neuen NiMH-Zellen bestücken musste, weil die alten Zellen wohl
schon ziemlich marode waren und der Netzteil-Betrieb mit dem kaputten Akkupack nicht funktionierte, erzähle ich hier lieber nicht.
Da ich mir seinerzeit die Parameter für den InCircuit-Programmer von David Tait nicht aufgeschrieben hatte (und meine letzten Aktivitäten in dieser Richtung schon geraume Zeit zurück liegen) hatte ich wieder eine Menge Spaß dabei, die notwendigen Einstellungen für Portadressen, zu verwendende Bits am Port usw. zu eruieren. Dabei habe ich dann auch festgestellt, dass meine Anleitung zur Inbetriebnahme des Topic2icsp wohl nicht ganz vollständig ist. Diese Seite muss ich bei Gelegenheit mal ein bisschen aufpolieren... So, geschafft! Jetzt sollte man mit der Beschreibung zurecht kommen.
Das Alles konnte mich natürlich nicht davon abhalten, zuletzt doch die wesentlichen Einstellungen heraus zu finden (die Defaults für den Topic2, kaum zu glauben ;-)
Nur dieses verflixte Konfigurations-Wort wollte sich partout nicht programmieren lassen. Also war doch wieder Hirn einschalten angesagt, bzw. das neueste MPLAB von der Microchip-Seite laden und mal ein Bisschen mit den Bits spielen.
Na logisch! Der HEX-File von der MERG-Seite ist für High-Voltage-Programming compiliert, ich versuchte den Chip aber mit LVP in circuit zu programmieren. Kurze Zeit später war dieses Problem gelöst, der Chip ließ sich jetzt ohne Fehlermeldungen oder Warnungen programmieren. Den PIC-Typ hatte ich auch noch schnell von 16F628 auf den von mir verwendeten 16F627 umgestellt... das hilft ebenfalls ungemein :-)
Leider habe ich übersehen, dass der Pin RB4 als IO-Pin ausfällt, wenn man den Chip mit LVP programmieren will. Das Programm ist jetzt zwar im PIC drin und tut auch im Wesentlichen, was es soll, nämlich am DCC-Ausgang wackeln, wenn man irgend einen Schalter der (zur Zeit noch gedachten) Schaltermatrix betätigt, aber durch Wegfall von RB4 eine komplette Reihe von Schaltern zu streichen kommt natürlich letzlich nicht in Frage. Ich muss also eine Möglichkeit finden, den PIC mit HVP zu programmieren.
Der Versuch mit David Taits “Poor Mans in Circuit Programmer” PMICP hat nicht funktioniert. Folglich bin ich meinen schon länger gehegten Wunsch angegangen, einen Nachbau des ICD2 zu realisieren.
Ich habe dafür die Schaltungen von Lothar Stolz zu Grunde gelegt und lediglich ein neues, auf bedrahteten Bauteilen basierendes Layout erstellt. Ob das funktioniert weiß ich noch nicht, ich werde berichten.
Tage später... der neue ICD2_USB läuft, ich kann den Accessory Encoder mit dem ICD2 programmieren.
Dabei ist zu beachten, dass für die PICs 16F627 ein Erratum existiert, das für die Programmierung mittels ICD2 zutrifft. Dabei geht es um den Pin RB4, der normalerweise dazu verwendet wird, dem PIC zu signalisieren, dass er im LowVoltage-Modus programmiert werden soll. Wenn während der HighVoltage- Programmierung am ICD2 der Pin RB4 durch irgend eine Störung (Einkopplung einer Störspannung z.B.) einen Wert ungleich Null Volt annimmt, bricht der Programmiervorgang ab. Gleiches gilt auch für das Auslesen und Löschen des PIC.
Man muss also tunlichst dafür Sorge tragen, dass RB4 nicht rumzappelt. Am einfachsten geht das durch eine Strippe, die während des ersten Programmiervorgangs diesen Pin sauber auf Masse zieht.
Dieses Procedere ist nur solange notwendig, bis nach der ersten Programmierung das Config-Wort im PIC auf HVP steht. Nachfolgende Programmierungen eines bereits mit dem ICD2 programmierten PIC sind ohne diese Maßnahme möglich.