In meiner Bastelkiste fand ich etliche ungebrauchte und
einige programmierte Eproms aus alten C64 Zeiten. Ich hatte es seinerzeit
geschafft, C64 Programme auf Eprom zu speichern und mit einer Erweiterungskarte
im Expansion Slot zum Laufen zu bringen. Mein C64 ist lange verkauft.
Heute werden Eproms nur noch selten verwendet. Ich könnte die Dinger eigentlich
wegwerfen. Es siegte aber die Neugier. Ob die Programme nach 12 Jahren
noch vorhanden sind? Könnte man die Eproms noch programmieren?
Aus diesen Überlegungen entstand die Idee ein Eprom Programmiergerät zu
bauen. Solche Geräte sind recht spezielle Teile. Da die handelsüblichen
Geräte Alleskönner sind und in relativ kleinen Stückzahlen hergestellt
werden, sind die Preise entsprechend hoch. Ich wollte ein einfaches Gerät,
das die Standardtypen lesen und beschreiben kann. Da die M-Unit steckbar
ausgelegt ist braucht man sie nur, wenn man wirklich einen Eprom Lesen
oder Schreiben möchte. Somit ist der Hardwareaufwand nicht allzu groß.
Herausgekommen ist ein Gerät mit folgenden Daten:
Stromversorgung: 220V Netzspannung
Eprom Typen: 2716 - 2732 - 2764 - 27128 - 27256
Verbindung mit PC: COM1 oder COM2 mit Nullmodem Kabel
Steuerung: Windows Programm lauffähig ab W98
!!! Achtung Lebensgefahr !!!
Dieses Gerät arbeitet mit 230V Netzspannung. Diese Schaltung dürfen nur
Leute mit entsprechender Ausbildung aufbauen.
Die Hardware habe ich auf zwei einseitige Leiterplatten
verteilt. Auf einer Platine 100mmx160mm befinden sich die Stromversorgung,
die M-Unit und die COM Schnittstelle. Die Spannungsregler sind auf Standard
Kühlkörper geschraubt.
Der Belastungswiderstand wurde nachträglich direkt auf
die Platine gelötet. Ohne Belastung entsteht sonst am Eingang von IC2
eine zu hohe Leerlaufspannung.
Die Programmierspannung kann bis 25V betragen. Der Wert
wird durch DA1 der M-Unit eingestellt. Die Zuschaltung erfolgt durch P16
der M-Unit. Welcher Wert in das DA Register geschrieben werden muss, um
eine gewünschte Spannung zu erzeugen, muss man einmalig ausprobieren.
Die Werte im C-Control Programm sind nur Richtwerte, da durch die Bauteile
Toleranzen entstehen. Ansonsten ist mit dem Einstellregler R2 im Netzteil
eine Vpp von 28V einzustellen. Mit dem Relais K5 kann man die Betriebsspannung
für den Eprom auf 6V erhöhen. Einige Eprom brauchen das, wenn sie im Schnellverfahren
programmiert werden sollen. Ich habe das vorgesehen aber in dieser Software
Version nicht realisiert. Die Gründe sind in der Beschreibung der Software
nachzulesen.
Auf der zweiten Platine 100mmx80mm befinden sich drei
Zwischenspeicher IC (2x Eprom Adressen, 1x Relaisansteuerung), vier Relais
um einige Leitungen umzuschalten und die Programmierfassung. Bei dieser
Fassung habe ich aus Kostengründen auf einen Textoolsockel verzichtet.
Beide Platinen sind mechanisch mit Kunststoff Abstandsbuchsen
verbunden. Elektrisch erfolgt die Verbindung über einfache Litze, die
an der oberen Platine fest verlötet ist. Zur unteren Platine gibt es einen
Steckverbinder. Diese einfache Lösung ist bei den geringen Taktgeschwindigkeiten
der M-Unit möglich. Die Programmierfassung wird auf Steckverbinder gesetzt,
damit sie durch das Gehäuse durchragt.
Schaltung und Platinen sind mit dem Leiterplatten
Programm EAGLE erstellt. Die Freeware Version lässt eigentlich keine
100mmx160mm große Platine zu. Netzteil und der Rest der Schaltung sind
zuerst getrennt erstellt worden. Dabei muss man dann gleich beachten,
dass die entsprechenden Leiterzüge später zusammen passen. Ich habe die
Platinen so per Hand entworfen, dass man später die Belichtungsfolien
zum Belichten der Platine etwas überlappend anordnen kann. Bei einfachen
Platinen funktioniert das sehr gut.
Als Gehäuse benutze ich ein handelsübliches Standard
System für das Europa Platinen Format. Die Deckel rasten ein und somit
ist das Gehäuse ohne Werkzeug zu öffnen. Innen sind Nuten für die Platinen
sowie die Front- und Rückplatte. In der Rückplatte befinden sich der Netzschalter
und die Netzleitung.
In der Frontplatte sind die COM Buchse sowie ein Schalter
für den Autostart der M-Unit angeordnet. Der Schalter ist einfach mit
Komponentenkleber in die Frontplatte geklebt. Somit ist die M-Unit jederzeit,
ohne das Gehäuse zu öffnen, neu zu programmieren. Man darf aber beim Einsetzen
der M-Unit nicht vergessen den Autostart Jumper zu entfernen. Mit den
Schrauben der COM Buchse wird die Platine im Gehäuse fixiert.
Neben dem Programmiersockel ragen oben noch zwei LED
zur Statusanzeige aus dem Gehäuse heraus. Die Beschriftung der Frontplatte
erfolgt mit einem Tintenstrahl Drucker auf selbstklebende Folie.
Beim Einschalten des Gerätes ist zu beachten, dass ein
Eprom erst gesteckt ist, wenn die M-Unit ihr Programm abarbeitet. Sonst
können undefinierte Zustände an den Anschlüssen der Fassung entstehen,
was für einen Eprom schädlich sein kann.
Die Hardware kann nicht prüfen, ob der entsprechende
Eprom gesteckt ist, welcher in der Software ausgewählt wurde. Man muss
da schon selbst alles richtig machen.
1. C-Control Basic Programm
2. C# Windows Steuerprogramm
Die Kommunikation erfolgt über die Standard COM1 oder
COM2 eines PC. Es ist ein handelsübliches Null Modem Kabel erforderlich.
Das C-Control Basic Programm ist weitgehend selbsterklärend. Zugunsten
der Übersichtlichkeit habe ich auf Geschwindigkeit und Platzbedarf weniger
Wert gelegt. Die M-Unit muss mit der Standard Taktfrequenz arbeiten. Mit
Basic dauert das Lesen eines Byte etwa 20ms, das Schreiben eines Byte
etwa 60ms. Das ist viel aber für den Hobby Bereich akzeptabel. Der Flaschenhals
ist nicht die serielle Schnittstelle. Basic ist eben nicht so schnell.
Deshalb habe ich auch bewusst auf den Schnellprogrammier Algorithmus einiger
Eprom verzichtet. Will man die Zeiten verkürzen müssten die Lese- und
Schreibroutinen in Assembler programmiert werden. Dann lohnt auch die
Schnellprogrammierung. Die Hardware ist dafür vorbereitet.
Alle Eprom werden mit einem Programmierimpuls von etwa
40ms beschrieben. Das ist nicht ganz in der Norm (45-55ms) aber im Hobby
Bereich zu vertreten.
Das Windows Steuerprogramm ist in der Programmiersprache
C# geschrieben. Diese Sprache wird von der MS Programmier Plattform .NET
unterstützt. Um das Programm ausführen zu können muss auf dem PC das MS
.NET Framework installiert sein. Damit ist das C# Programm ab W98 lauffähig.
Für die Entwicklungsumgebung ist das MS .NET SDK erforderlich. Das funktioniert
ab WXP. .NET Framework und SDK werden auf der MS Webseite frei zum Download
bereitgestellt, finden sich aber auch in Zeitschriften oder Fachbüchern
zum Thema .NET. Als Programmierumgebung reicht schon ein einfacher Texteditor
aber ich nutze SharpDevelop Beta Version
0.94. Es ist eine freie Entwicklungsumgebung unter anderem für C#. Es
sind noch viele Bugs drin aber ich denke, nur mit einem Texteditor währe
ich nicht so schnell soweit gekommen. SharpDevelop ist OPEN SOURCE und
unterliegt der GNU General Public License. Ein Dankeschön an die Entwickler.
Für die Verbindung C# Programm und Windows API nutze
ich die RSCOM.DLL von Burkhard Kainka.
Der Autor hat diese DLL auf seiner Hompage für private Nutzung freigegeben.
Das Protokoll auf der COM ist sehr einfach. Da nur RX und TX Leitungen
von C-Control benutzt werden, muss man die Kontrolle der Schnittstelle
über Software realisieren. In diesem Fall wird über die COM immer nur
ein Byte ausgetauscht. Es braucht kein Puffer eingerichtet zu werden.
Das jeweils sendende Gerät wartet immer, bis es eine Antwort bekommt.
Die Kommandos bestehen somit immer nur aus einem Byte. Das Windows Programm
sendet zuerst ein Kommando (1Byte) und dann einen Header mit 5 Byte:
1.bis 4. Byte: Eprom Adressen
5. Byte: Wert für Programmierspannung
Jedes Byte muss C-Control bestätigen. Auf der C-Control
Seite werden PUT und GET benutzt. Auf der PC Seite ist eine Zeitschleife
eingebaut, die ohne Antwort von C-Control nach etwa zwei Sekunden den
Vorgang abbricht. Je nach Kommando erfolgt dann der Austausch der eigentlichen
Daten zwischen PC und C-Control.
Die vollständige
Software mit kommentierten Quelltexten kann als ZIP Datei geladen
werden. Die Zip Datei einfach in ein Verzeichnis auspacken. Das Programm
EpromV10.exe starten. MS .Net Framework muss vorher installiert sein.
In der Hilfe Datei Hilfe.htm im Verzeichnis EPGIF findet man weitere Hinweise.
Zum Löschen der Eproms nutze ich ein handelsübliches
UV Eprom Löschgerät. Übrigens sind meine C64 Eproms (Programmiert 1991)
noch völlig in Ordnung. Nur einige, noch ältere, 2716 aus DDR Produktion
(Programmiert um 1987) haben ihre Daten teilweise verloren. Sie sind aber
nach dem Löschen wieder zu verwenden.