Nachdem ich mich ein wenig mit der Programmierung von "PIC"-Microcontrollern beschäftigt hatte, und mein erstes Testprogramm innerhalb der Simulations-Software funktionierte, stellte sich die Frage "Und wie bekomme ich nun mein Programm in den Chip?". Die meisten der bei "www.gnupic.org" (Link entfernt, diese Seite wurde gehackt oder verkauft → Enthält nur noch "Müll", die "sinnvollen" Infos sind nun bei gputils.sourceforge.net zu finden) verfügbaren Programme waren für aufwendige und/oder kommerzielle Programmier-Schaltungen am Parallelport vorgesehen. Das das einzige Programm (PKT4L), welches mit einer einfachen Schaltung auskam, verwendete ein eigenes Format für die zu programmierenden Daten anstatt des Formats, welches der Assembler "ausspuckte" :-(
Die meisten kommerziellem Programmiergeräte "verstehen" das "Intel-Hex"-Format und können auch etliche verschiedene Microcontroller und EPROMs programmieren, nur ist das ein Grund sich ein Gerät zu kaufen, welches in der Preisklasse von ca. 100 Controllern (oder "einen Pfund" TTL-Chips) liegt (und mit Software geliefert wird, die bei mir sowieso nicht läuft)? Neee, bestimmt nicht! Ich bin ja schliesslich nicht so ganz unerfahren im Schreiben von Programmen, die Daten von einem in ein anderes Format wandeln. Also habe ich mir ein Programm geschrieben, welches das (recht verbreitete) Intel-Hex-Format in das "Spezialformat" des Prommer-Programms umsetzt. Damit liess sich erstmal leben (und die ersten Testprogramme in den Microcontroller schaffen). Jedoch mit der Zeit wurde mir der Zwischenschritt der Format-Umwandlung doch recht lästig.
Also versuchte ich erstmal, das (im Sourcecode vorhandene) existierende Programm mit meinen Funktionen zum Lesen/Schreiben des Intel-Hex-Formats "aufzubohren". Das Programm war zwar recht ordentlich (englisch) kommentiert, jedoch die spanische Benennung der Variablen und Funktionen bereitete mir doch einiges Kopfzerbrechen... Irgendwann habe ich dann den Entschluss gefasst, ein komplett neues Programm zur Steuerung der seriellen Schnittstelle - und damit der Programmierschaltung - auf Basis der PIC-Programmier-Dokumentation zu schreiben. Nach einigen Bugfixes und Modifikationen ist daraus dass das geworden, was hier zum Download bereit liegt.
Da die Pegel, mit der die "Original"-Schaltung den PIC-Chip versorgte, doch "ein wenig" ausserhalb der Chip-Spezifikationen lagen, habe ich gleichzeitig die Programmier-Schaltung etwas erweitert/modifiziert.
Als ich zum ersten Mal für ein Projekt die 20MHz-Version eines PIC16F84 einsetzen musste, bekam ich den Oszillator nicht zum Schwingen. PIC defekt ? Nein, denn mit einem 4MHz-Quarz funktionierte es anstandslos. Experimente mit der Veränderung der Bürdekapazität sowie die Verwendung von SMD-Quarzen brachten keinen Erfolg. In einem "Ein-Transistor-Primitiv-Oszillator" konnte ich alle Quarze zum Schwingen überreden, also waren auch diese in Ordnung. Na gut, dann muss ich eben einen externen TTL-Oszillator verwenden. Aber auch mit diesem war - trotz "sauberem" Taktsignal - der PIC nicht zum arbeiten zu bekommen. Das kann doch nicht möglich sein ! Erst das Auslesen des Konfigurationswortes aus dem PIC brachte mich der Ursache des Problems näher: Da stand doch was anderes drin, als ich hineingeschrieben hatte ! Die beiden Bits zur Konfiguration des Oszillatortyps standen auf "RC-Oszillator" anstatt auf "High Speed" So kann es ja nicht funktionieren ! Es ist schon erstaunlich, daß diese Einstellung bei Verwendung eines 4Mhz-Quarzes noch funktioniert. Also habe ich die Funktion zum Schreiben des Konfigurationswortes erstmal um eine Prüfung erweitert, ob auch das geschrieben wurde, was geschrieben werden sollte. Ergebnis: Bei jedem Versuch, mein Programm in dem PIC zu schreiben, wurde ein Fehler gemeldet. Hmmm, schon wieder Timimg-Probleme ? Nein, denn sowohl Programm als auch Daten wurden korrekt geschrieben (an der Stelle gab es auch schon eine Prüf-Funktion). Auch ein intensives Studium der (in diesem Bereich etwas unklaren und mehrdeutigen) Programmier-Beschreibung brachte mich nicht weiter. Durch empirische Versuche bekam ich dann heraus, daß das Schreiben des Konfigurationswortes nur sicher klappt, wenn es nicht zusammen mit dem Schreiben der ID-Informationen (benutzt die jemand ?) erfolgt. In diesem Zuge der Programmänderung habe ich auch gleich noch die Löschfunktionen von den Schreibfunktionen getrennt, wobei dieser Quellcode entstand.
picprommer_0.9.2.tgz Programm-Source incl. Grafiken der Programmierschaltung (42kB).
picprommer_0.9.5_src.tgz Modifizierter Programm-Source (V0.9.5, enthält nur "picprommer.c", 12kB).
Startseite Linux Rechtliches Kontakt Darstellung