Forum: Mikrocontroller und Digitale Elektronik Eprom programmieren


von prom (Gast)


Lesenswert?

Hallo,

wie kann ich mit dieser Schaltung... :
http://cpuville.com/images/Z80/eprom_2.GIF

diesen Code...:
http://cpuville.com/EPROM_code.htm

in den Eprom 2716 programmieren?

Welche Data Input Switches und Adress Switches müssen geschaltet werden?

Kann mir das jemand Schritt für Schritt erklären?
Ich währ sehr Dankbar!

Gruß

--
Titel angepasst, es geht um ein EPROM, nicht um ein EEPROM.
-rufus

: Bearbeitet durch User
von Tom (Gast)


Lesenswert?

Sowas haben wir während des Studiums (1982 ff.) tatsächlich im Labor
gemacht, allerdings viel weniger Programmzeilen.

Alle Datenschalter und alle Adressschalter offen
/OE Schalter auf GND
Vpp Schalter auf 25V

erste Programmzeile:
0004   0000   C3 20 00     JP 0020H   ;Jump to start of programs

Adressschalter auf Adresse 0 (= alle offen)
Datenschalter auf C3 = 11000011 = zu zu auf auf auf auf zu zu
50ms Puls (5V) auf Eingang PGM

Adressschalter auf Adresse 1 (nur der rechte geschlossen)
Datenschalter auf 20 = 00100000
50 ms Puls

Adressschalter auf Adresse 2 (nur der zweite von rechts geschlossen)
Datenschalter auf 00 = 00000000
50 ms Puls

Und das dann mit allen restlichen Programmzeilen.

Das möchtest du hoffentlich nur verstehen und nicht wirklich machen ;-)

von Carsten S. (dg3ycs)


Lesenswert?

prom schrieb:
> wie kann ich mit dieser Schaltung... :
> [...]
> in den Eprom 2716 programmieren?
Ernsthaft? Na, dann viel Spass!
Das wird eine spassige Sache...


> Welche Data Input Switches und Adress Switches müssen geschaltet werden?
Vermutlich fast alle...
In jeweils unterschiedlicher Kombination!

> Kann mir das jemand Schritt für Schritt erklären?
> Ich währ sehr Dankbar!

OK, mal ernsthaft:

ICh erkläre es für die ersten beiden Relevanten zeilen:
Also Line 4 und 6. (1,2,3,5 kannst du Ignorieren, die sind für dich 
nicht relevant)

Mit dieser Simpelschaltung programmierst du immer Byte für Byte...
Ein Bbyte bestehet aus 8 Bit. Jedes Byte hat eine eigene Adresse.
Ein Offener Schalter bedeutet 0, ein geschlossener 1!

Die Adressen sowie die Daten musst du mit dne Schaltern als Binärzahl 
eingeben.


In deiner Tabelle hast du eine Spalte Line Code - Die ist nur 
Informativ...
Dann eine Spalte LOCATION: Diese gibt an wie du ADRESSBITS zu setzen 
hast.
Danach kommt CONTENTS: Das ist der Inhalt der an diese Adresse (und die 
folgenden) kommen muss. Das sind die Befehle, Sprungadressen usw. in 
MAschinencode.

Die nächsten beiden Zeilen sind die ASM Befehle (der Maschinencode in 
Menschenlesbarer form) und die Kommentare. Dies kommt nicht in den 
Eprom...
(ISt der Quelltext...)

Dein Vorgehen für die Zeilen.
Die erste Signifikante Adresse (Location) ist 0000 in Zeile 4.
(Da an einer Adresse immer nur ein Wert stehen kann, musst du bei 
mehreren geleichen Adressen immer die LETZTE Zeile mit dieser Adresse 
beachten, die vorherigen verwerfen.
Da Zeile 1 bis 4 die Adresse 0000 haben ist also nur Zeile 4 wichtig!

Also: 0000h bedeutet 0000 im Hexadezimalen Zahlensysten. ISt auch 000000 
im Binären Zahlensyten.

Inhalt ab Adresse 0000 soll später sein CA 20 00

Also stellst du zuerst an den Adressbits die Adresse 0h == 0b = Alle 
Schalter offen ein.
Dann an den Datenschaltern den Wert CA (Hex)
CAh ist 1100 1010b
Eine 1 bedeutet SCHALTER AN, eine 0 SCHALTER AUS!

Daher stellst du an den Datenschaltern ein:
D7 = AUS
D6 = EIN
D5 = AUS
D4 = EIN
D3 = AUS
D2 = AUS
D1 = EIN
D1 = EIN

Jetzt mit der LEitung PGM einen Programmierpuls setzen.
Damit ist der erste WErt dieser Zeile Programmiert.

Dann kommt nun 20h.
Da dieser Wert nicht an derselben Adresse stehen kann musst du diese 
eine
Hochzählen. Also Schalter A0 Einschalten, alle anderen Aus!

Jetzt noch den Wert 20h ins Binärsystem übersetzen: sind 0010 0000b
Daher stellst du an den Datenschaltern ein:
D7 = AUS
D6 = AUS
D5 = AUS
D4 = AUS
D3 = AUS
D2 = EIN
D1 = AUS
D1 = AUS

PGM Puls setzen und auch diese Daten sind im Eprom.

Dann noch das letzte Bzte aus Zeile 4: 00h
Zuerst wieder die Adresse um 1 erhöhen. Damit sind wir bei Adresse 2.
Bedeutet: Schalter A1 einschalten, ALLE anderen ADressschalter auf AUS!

00h sind auch Binär 0000 0000b
Also alle Datenschalter auf AUS, dann PGM Signal senden!

Und schon ist die erste Zeile fertig...

Jetzt kommt die nöchste Relevante Zeile: 6

Hier steht wieder eine neue einzustellende Adresse: 0020
Dies ist 00 0010 0000 Also Adresseschalter A5 einschalten, alle anderen 
aus.
Erstes Datenbyte ist DBh = 1101 1011b
Daher stellst du an den Datenschaltern ein:
D7 = EIN
D6 = EIN
D5 = AUS
D4 = EIN
D3 = EIN
D2 = AUS
D1 = EIN
D0 = EIN

PGM Impuls geben und das nächste Byte:
Also wieder die Adresse um eins erhöhen. Bedeutet Adresse 21h, also A5 
und A0 EIN, alle anderen AUS.
00h ist 0000 0000b, also alle D Schalter auf Aus.
PGM Impuls geben und nöchste Zeile.

Hier steht Adresse 22h, also diese Einstellen usw.

ICh hoffe das war einigermaßen verständlich...
GEnauer werde ich jetzt aber nicht mehr!

Gruß
Carsten




Danach

>>
>
> Gruß

von Tom (Gast)


Lesenswert?

@ Carsten Sch.

Sehr gut und ausführlich beschrieben.
Zwei gaaanz kleine Fehlerchen sind drin:
Bei den Daten sind Msb und Lsb vertauscht und der jmp Befehl
beim Z80 ist C3 und nicht CA.
Nichts für ungut, ist nur für die Nachwelt gedacht ;-)

Gruß, Tom

von Michael U. (amiga)


Lesenswert?

Hallo,

das will er nicht wirklich...
Habe ich damals (tm) mit MH74188 so gemacht, das waren 32x8 Bit.
Trotzdem einige geschrottet, weil man sich vertan hat.
Beim 2716 hieße das, daß man den Fehler beim 2047. Byte macht und ihne 
wieder löschen und von vorn anfangen kann...

Einen passenden AVR, Daten, Adressen und Steuerleitungen an den 2716, 
die Programmierspannung noch mit 2 Transistoren schaltbar.
Die 2k Daten mit ins Flash, 2 Tasten (programmieren und verify) und 2 
LED (ok und Fehler) dran. Die Software wäre mehr als simpel.

Gruß aus Berlin
Michael

von Rene H. (Gast)


Lesenswert?

Das könnte für Dich interessant sein: 
http://www.avrfreaks.net/forum/project-atmega-based-eeprom-programmer

Grüsse,
René

von Georg G. (df2au)


Lesenswert?

Wenn du nur ein einziges Eprom (2716 ist nicht EEprom) brauchst, melde 
dich per Mail. Mit Kälberzähnen wird das nichts, da bist du monatelang 
beschäftigt, bis der Code fehlerfrei drin ist. Hast du eine Löschlampe 
für den Fall, dass du dich bei einem der 16000 Bits irrst?

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn man noch ne Win98 Kiste mit Druckerport hat - hier ist ein simpler 
EPROM Programmer für den engagierten Bastler. Funktioniert recht gut.
http://www.qsl.net/iz7ath/web/02_brew/17_eprom/english/pag01_eng.htm

von michael_ (Gast)


Lesenswert?

So groß ist das genannte Programm ja auch nicht.

prom schrieb:
> diesen Code...:
> http://cpuville.com/EPROM_code.htm

Und wenn man dann Kodierschalter nimmt, braucht man sich um die 
einzelnen BIT auch nicht kümmern.

von michael_ (Gast)


Lesenswert?

Matthias S. schrieb:
> Wenn man noch ne Win98 Kiste mit Druckerport hat - hier ist ein simpler
> EPROM Programmer für den engagierten Bastler. Funktioniert recht gut.
> http://www.qsl.net/iz7ath/web/02_brew/17_eprom/english/pag01_eng.htm

Zu dem Kabelgefitze sagst du einfach?

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Hallo prom (gast),

ich befürchte, dass Du nicht den 50ms-Impuls vorliegen hast, den Du zum 
Programmieren des EPROMs benötigst. Der ist auf dem Schaltplan nämlich 
so ganz lapidar vorausgesetzt worden!

Optimal konvertierst Du das vorliegende Assembler Listing per Hand in 
ein Binärfile und versendest dieses per Mail an jemanden, der 
entsprechende EPROMs brennen kann.

Solltest Du Bedarf haben, ich habe passende Brenner und Rohlinge von 
2704 bis 27C322.

: Bearbeitet durch User
von Jürgen D. (poster)


Lesenswert?

Wolfgang R. schrieb:
> ich befürchte, dass Du nicht den 50ms-Impuls vorliegen hast, den Du zum
> Programmieren des EPROMs benötigst. Der ist auf dem Schaltplan nämlich
> so ganz lapidar vorausgesetzt worden!

Da gibt es noch einen zweiten Schaltplan auf der Seite, zum generieren 
des Impulses.

So ähnlich hatten wir damals auch unsere ersten Eproms programmiert.
nur wir hatten da ein zusätzlichen RAM Speicher in den man erstmal alles 
einprogrammiert hat und auch wieder ändern konnte. von dort wurde es in 
Eprom übertragen

von Soul E. (Gast)


Lesenswert?

Wolfgang R. schrieb:

> ich befürchte, dass Du nicht den 50ms-Impuls vorliegen hast, den Du zum
> Programmieren des EPROMs benötigst. Der ist auf dem Schaltplan nämlich
> so ganz lapidar vorausgesetzt worden!

Die pulse circuit ist hier versteckt: 
http://cpuville.com/images/Z80/eprom_1.GIF

Wenn man über die Projektseite reinkommt http://cpuville.com/Z80.htm 
dann versteht man den Zusammenhang. Das Ganze ist wirklich darauf 
ausgelegt, von Hand ins EPROM getackert zu werden. Daher ist der Code 
auch nur 120 bytes lang und hat am Anfang einen Bereich für eine Liste 
von Sprungbefehlen. Die kann man der Reihe nach aus-NOP-en (mit 00 
überbrennen) und durch neue ersetzen.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Ah, den Pulser hatte ich nicht gesehen.

Dann ist ja alles ganz einfach.

;-)

von prom (Gast)


Lesenswert?

Danke erst mal für eure Hilfe, auch wenn ich nicht alles ganz verstanden 
habe. Mit Bytes und Bits hatte ich noch nie im Leben was zu tun, bin 
aber sehr interessiert daran, mal einen eigenen Z80 zu bauen.
Es würde mir vollkommen reichen, wenn der Z80 erst mal nur eine LED 
blinken lassen kann, oder sowas in der Art.

Das Programmerboard würde ich erst mal aufbauen, hinterher dann den 
eigentlichen Z80.
Löt und Elektronikerfahrung habe ich schon eine Menge, seit ungefähr 7 
Jahren bastle ich an allerlei Dingen rum.

Wenn ich das Projekt beginne melde ich mich noch mal zurück.

Gruß

von michael_ (Gast)


Lesenswert?

Aber so primitiv muß man nicht anfangen.
Das habe ich damals nicht mal gemacht.
Kauf dir einen Programmer aus China für 40 EUR.
Der kann zwar die 24V 2716 nicht, aber par. EEPROM 2816 o.ä.
EPROM mit 12V wie 27128 usw. gehen da problemlos.

von prom (Gast)


Lesenswert?

Kann man denn diese 2716 mit diesem Programmer programmieren?
https://upload.wikimedia.org/wikipedia/commons/3/3c/Programmer_SE4942.jpg

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

prom schrieb:
> Kann man denn diese 2716 mit diesem Programmer programmieren?
> https://upload.wikimedia.org/wikipedia/commons/3/3c/Programmer_SE4942.jpg

Der hier behauptet, das es geht:
http://www.augusta.de/~mars/electrical.htm

Aber: dazu musst du einen Rechner mit serieller Schnittstelle haben, um 
Dateien in den Programmierer zu laden, dazu brauchst du das Protokoll 
des Programmers, denn da benimmt sich jeder anders. Ohne ausreichende 
Unterlagen zum Gerät kriegt man das i.A. nicht hin.

Muss es denn wirklich das alte Z80 Schlachtschiff sein? Nicht, das das 
ein schlechter Prozessor war, aber das nötige Drumherum macht es nicht 
einfach, sich mit dem eigentlichen programmieren zu beschäftigen. Dafür 
gibt es heute viel einfacherere Plattformen.

michael_ schrieb:
> Zu dem Kabelgefitze sagst du einfach?

Der Italiener hat das auch alles sehr aufwendig und m.E. unnötig 
kompliziert aufgebaut. Bei mir ist das eine Lochrasterplatte mit etwa 
100*100mm, einem 32 pin Sockel und zwei Jumperfeldern für EPROMs von 
2716 bis 271001.
Die eigentliche Schaltung ist ja wirklich simpel.

von Soul E. (Gast)


Lesenswert?

prom schrieb:

> Kann man denn diese 2716 mit diesem Programmer programmieren?
> https://upload.wikimedia.org/wikipedia/commons/3/3c/Programmer_SE4942.jpg

Hast Du 2716 herumliegen, die weg müssen?

Die alten Dinger sind gesuchte Ersatzteile. Für einen Neubau würde ich 
die nicht nehmen, sondern 27C64 oder 27C256. Die sind billiger, weiter 
verbreitet und leichter zu programmieren.

von michael_ohl (Gast)


Lesenswert?

Das ist ja so was von 1979..
Damals (tm) habe ich mit zwei Lehrlingen bei Blaupunkt ein 8085 System 
gebaut das mit gemultiplexter 6 Stellen LED Anzeige für Adresse und 
Daten und einer HEX Tastatur daherkam. Nach 4 Wochen haben wir 
aufgegeben den 2716 mit Schaltern zu Flaschen es ging einfach nicht. Ich 
habe dann einen TTL Programmer mit Zählern und Registern gebaut waren 
zwei Din A4 Lochrasterkarten. Damit ging's fast auf anhieb. Heute lacht 
man darüber und holt den GALB aus dem Schrank.

mfg
Michael

von H.Joachim S. (crazyhorse)


Lesenswert?

Doch, es ging.
Lästig wars, das stimmt. Aber mit Geduld war es möglich.

von Joachim B. (jar)


Lesenswert?

H.Joachim S. schrieb:
> Doch, es ging.
> Lästig wars, das stimmt. Aber mit Geduld war es möglich.

früher oder später nimmt man einen Portbaustein und generiert Adress und 
Daten Bits.

Heute würde ich einen AVR nehmen, z.B. den arduino mighty 1284p oder 
einen Nano einige I2C PCF8574(A) Ports und/oder Latch

Der Code kann ja dann aus HEX direkt geschrieben werden, die 50ms macht 
der Atmel. Ach ja Programmierspannung, ist ja auch kein Hexenwerk.

Oder wie schon geschrieben wurde ein EEPROM als Ersatz nehmen

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Joachim B. schrieb:
> früher oder später nimmt man einen Portbaustein und generiert Adress und
> Daten Bits.

Ach ja, und womit? Setzt ein Stück funktionierende Software voraus. Und 
das nimmt man woher? Irgendwie musste man anfangen.
Ok, Adressen habe ich nicht zu Fuss sondern mit einem Zähler eingstellt.
8bit-Schalter für das Datenbyte, einen Taster zum Brennen, einen Taster 
zum Weiterschalten der Adresse. Die "Daten" waren das Ergebnis einer 
Assembler-Programmierung auf Papier :-), völlig irre. Aber es hat Spass 
gemacht und es hat funktioniert.

von Joachim B. (jar)


Lesenswert?

H.Joachim S. schrieb:
> Ach ja, und womit? Setzt ein Stück funktionierende Software voraus. Und
> das nimmt man woher? Irgendwie musste man anfangen.

heute stellt das doch kein Problem mehr dar,
als ich auf dem LH5803 angefangen hatte musste ich alles handkodieren 
auf Karopapier und per Hex Edit in den Ram tippen, aber auch schon 1977 
gab es die ersten Compis die geliefert wurden, eine VIA 6522 gab es im 
Elektronikladen und Schaltdraht war in jeder Bastelwerkstatt.

von Soul E. (Gast)


Lesenswert?

Joachim B. schrieb:

> H.Joachim S. schrieb:
>> Ach ja, und womit? Setzt ein Stück funktionierende Software voraus. Und
>> das nimmt man woher? Irgendwie musste man anfangen.
>
> heute stellt das doch kein Problem mehr dar,

Heute gibt es integrierte Microcontroller mit Intel Flash(tm)EEPROM 
Technologie, internem RAM, Timer, Ports, Schnittstellen, etc. Wenn wir 
die 1977 gehabt hätten, hätte sich keiner mit UV-EPROMs in seinem 6504 
EMUF abgequält.

Es gab genau einen Mikroprozessor, dessen (externes) RAM man ohne 
Zusatzaufwand per Kippschalter beschreiben konnte. Das war der CDP1802. 
Alle andere sind nach dem Reset an einer festen Adresse losgelaufen, und 
da musste ein Programm stehen.

Um über Hex-Tastatur und Siebensegmentanzeige irgendwas eintippen zu 
können, brauchte der Rechner ein funktionierendes ROM mit einem 
Monitorprogramm. Und genau da ergab sich das Henne-und-Ei-Problem. Das 
allererste (E)PROM musste man entweder mit Kippschaltern zu Fuss 
brennen, oder man wohnte halt in einer Stadt, wo es einen Computerclub 
gab (in dem jemand seinen Rechner schon soweit fertig hatte, dass dieser 
EPROMs brennen konnte).

Und den musste man erstmal finden. Ohne Internet und mit 
Wählscheibentelefonen.



Klar, der TO kann mogeln. Ich kann ihm sein EPROM brennen, oder Du, oder 
er nimmt ein Flash oder einen Arduino. Aber das Ziel dieses Projektes 
soll ja eigentlich sein, ein Wochende lang die Steinzeit 
nachzuempfinden. "Reenactment" nennt man das neudeutsch.

von Joachim B. (jar)


Lesenswert?

soul e. schrieb:
> Klar, der TO kann mogeln. Ich kann ihm sein EPROM brennen, oder Du, oder
> er nimmt ein Flash oder einen Arduino. Aber das Ziel dieses Projektes
> soll ja eigentlich sein, ein Wochende lang die Steinzeit
> nachzuempfinden. "Reenactment" nennt man das neudeutsch.

kommt halt drauf an was sein Ziel ist,

er kann alle 2kByte so per Schalter einbringen, zum Lernen würden mir 
die ersten 2 Byte reichen, danach würde ich "tricksen" um vorwärts zu 
kommen um die Kiste lauffähig zu bekommen.

von Soul E. (Gast)


Lesenswert?

es sind ja nur knapp 100 bytes. Von 0020h bis 007Dh.

Ansonsten hast Du recht, ich würde mir das heute auch nicht mehr geben 
wollen =:-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.