NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: ROA64 & EEPROM InCircuitProgramming
Steffen.111
Kennt sich schon aus
**
ID # 184


  Erstellt am 29. August 2017 13:41 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Auf Anfrage poste ich meinen Beitrag aus dem Forum http://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=14991&time=1503987438&s=1ca2bbe6f70a0fede9a1c104ce0db33e hier ebenfalls:

Moin in die Runde,

mein NKC läuft erst einmal mit der HEXIO und HEXMON.
...nostalgische Gründe ... APOLLO ... what ever!
Mit KasettenInterface, hab ich grad nix am Hut, wie also geschriebene Programme sichern? ....EEPROM !!?

Habe 2x 28C64 auf die ROA64 gepackt.
Im Lieferzustand lassen sich die auch "normal" beschreiben, man muss sie nur nach dem Schreiben kurz "in Ruhe lassen", ehe man lesen will.

Über einen Programmer lässt sich ein WriteProtect aufprägen. Dann geht InCircuit erst mal nix mehr. ...eben auch nicht ausversehen bei Programmabstürzen.

Jetzt habe ich aber gerade erfolgreich den WriteProtect InCircuit per Software ein und ausgeschaltet. :D:-))

Einschalten:
(es muss eine Datenfolge an Adressen im EEPROM gesendet werden)
AA an 1555,
55 an 0AAA,
A0 an 1555,
(hier KÖNNTEN gleich mal noch exakt 1..64 Byte geschrieben werden),
PAUSE!

Ausschalten:
AA an 1555,
55 an 0AAA,
80 an 1555,
AA an 1555,
55 an 0AAA,
20 an 1555,
PAUSE!

Die Pausen sind wichtig! ( >100us steht im Datenblatt, nehme 4 ms, hatte mit 2 ms noch Fehler) und während den Sequenzen KEINE Lesezugriffe auf den Chip!!! ...also darf das Programm nicht auf dem zu ändernden Chip laufen! ...auch nicht für einen Befehl, eine /Zeitschleife/Anzeige/Tastenabfrage! - leider -
Klar: zu den Basisadressen im Chip ist die Adresse des Chips zu addieren!

So kann man ein mühevoll eigetipptes Programm bis zum nächsten Einschalten retten. Evtl. mit Banking auch als virtuelles Laufwerk. ?....

Nach Rückfrage:
...die Datenfolge muss aus einem Programm kommen und wie gesagt KEINE Lesezugriffe zwischendurch auf den Chip.
Habe die beiden Adressen in DE und BC und lade dann den Akku mit den Werten und gebe auf (DE) bzw. (BC) nacheinander aus.
Nicht vergessen DI und am Ende EI!
Habe die Routinen in den HEXMON eingebunden. Wenn meine GDP laufen wird ... dann auch ins Grundprogramm.

Wenn man die Sequenz über's Monitor-Programm (MP) eintippt, liest das MP ja gleich ob's geklappt hat ... Peng! ...die Sequenz ist unterbrochen!

Viel Spaß beim Experimentieren
Steffen

Beiträge: 101 | Mitglied seit: August 2017 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 30. August 2017 12:29 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Steffen,

willkommen auch hier ;)

Kann man eigentlich auf das EEPROM mit voller Geschwindigkeit schreiben, oder muss man da auch irgendwann Pausen machen?

-----------------------
Gruß
-=jens=-

Beiträge: 722 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
Steffen.111
Kennt sich schon aus
**
ID # 184


  Erstellt am 30. August 2017 13:13 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Jens,

ich glaube man kann normal - ohne Pausen - durchweg schreiben. Sonst wäre bei der "Sperrsequenz, in der man am Ende noch bis zu 64 Byte schreiben kann, etwas von Pausen erwähnt. Es kann aber auch sein, dass mindestens nach 64 Byte eine Pause rein muss!?

Auf jeden Fall ehe man lesen will, muss eine Pause rein.
...das will ich aber alles noch mal austesten.
Grüße, Steffen

Beiträge: 101 | Mitglied seit: August 2017 | IP-Adresse: gespeichert
DerInder
Voll in Gange
Seitenadmins
***
ID # 2


  Erstellt am 30. August 2017 13:31 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Steffen,

ich bin mal auf deine Tests gespannt :)

Hier auch mal die Sequenzen für ein 28C256:

Einschalten:
AA an 5555
55 an 2AAA
A0 an 5555
Pause

Ausschalten:
AA an 5555
55 an 2AAA
80 an 5555
AA an 5555
55 an 2AAA
20 an 5555
Pause

-----------------------
Gruß
-=jens=-

Beiträge: 722 | Mitglied seit: Juni 2004 | IP-Adresse: gespeichert
Steffen.111
Kennt sich schon aus
**
ID # 184


  Erstellt am 01. September 2017 12:31 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
ACHTUNG! ...in die Runde
Ich sehe gerade auf einer unbestückten ROA64, dass alle PIN 1 der xxROM's miteinander verbunden sind.
In den meisten Dokus zum 28C64 Steht für Pin 1 "NC" - Es gibt aber auch eine "AT28C64" wo Pin 1 mit "RDY/BUSY or (NC)" beschriftet ist. Es gibt also Chips, die auf diesem Pin melden wann die weiter oben beschriebene "Pause" zu ende ist. Damit könnte n.m.M. die Verbindung der PIN's 1 untereinander Probleme verursachen, wenn mehrere AT28C64 eingesetzt werden!
Grüße, Steffen

Beiträge: 101 | Mitglied seit: August 2017 | IP-Adresse: gespeichert
Steffen.111
Kennt sich schon aus
**
ID # 184


  Erstellt am 02. September 2017 17:39 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin in die Runde,
nun ist es mir auch gelingen den Chip 0000h zu überschreiben.
Das kann, wie vor beschrieben nur aus dem RAM heraus erfolgen.
Hier ein Listing mit dem man einige Bytes auch im EEPROM auf der Adresse 0000h ändern kann:

;---------------------------------------------------------
;Hilfsroutine um EEPROM's zu ändern auch 0000h !!
;geschrieben für HEXIO
; 8132h: Adresse im EEPROM LwB, HxB
; 8134h: Anzahl Bytes
; 8135h... Bytes (c) DL2LCE
;---------------------------------------------------------
ORG 8100h

EEPR: LD DE,1555h
LD BC,0AAAh

DI ;bitte nicht stören
ld a,0AAh
ld (de),a ; 1555: AA
ld a,55h
ld (bc),a ; 0AAA: 55
ld a,0a0h
ld (de),a ; 1555: A0

LD DE,A8132 ;Adresse 8132h
LD A,(DE)
LD L,A ;LwB-Adresse
INC DE
LD A,(DE) ;HwB-Adresse
LD H,A ;HL: neue Speicheradresse im Chip 0000h
INC DE
LD A,(DE) ;Anzahl der Bytes
LD B,A
OR B
JR Z,EEPR2

NOP ;wird für "Umschaltzeit benötigt
NOP ;sonst fehlen 4 Byte !!?
NOP
NOP

EEPR1: INC DE
LD A,(DE)
LD (HL),A
INC HL
DJNZ EEPR1

EEPR2 EI ;Schreibschutz gesetzt
LD BC,0FFFFh
EEPR3: DEC BC
LD A,B
OR C
JR NZ,EEPR3 ;bitte einen Moment noch
RET

A8132: DEFW 0000h ;Adresse im EEPROM
DEFB 00h ;Anzahl der Bytes (max. 64) folgen
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0



Damit kann man keinen kpl. EEPROM programmieren, aber kleine Fehler ausmerzen.
Grüße, Steffen

Beiträge: 101 | Mitglied seit: August 2017 | IP-Adresse: gespeichert



| NDR Computer | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2016 Tritanium Scripts


Seite in 0,120464 Sekunden erstellt
18 Dateien verarbeitet
gzip Komprimierung ausgeschaltet
904,30 KiB Speichernutzung