Forum: Mikrocontroller und Digitale Elektronik Arduino EEPROM Programmer, kann zwar lesen, aber nicht schreiben


von Moritz T. (ferb300)


Angehängte Dateien:

Lesenswert?

Hi!
Ich möchte mit einem Arduino UNO einen AT28C256 EEPROM programmieren. 
Mein Grundlegender Aufbau ist der folgenden.
EEPROm Pins:
Chip Enable: geerdet
Output Enable: mit einem Digitalpin des Arduino verbunden.
Write Enable: mit einem Digitalpin des Arduino verbunden.
Addresspins: über 2 CD4015 Schieberegister mit dem Arduino verbunden 
(ja, die haben keinen Latch, dürfte aber mit meinem code theoretisch 
kein Problem darstellen)
IO Pins: Direkt an Arduino Digitalpins.
Auf meinem Arduino läuft der angehängte Sketch, welcher versucht, eine 
Adresse zu beschreiben. Was leider nicht klappt: Wenn man die gerade 
beschriebene Adresse direkt danach liest, bekommt man nur ff zurück.
Ich hab alle Teile des Aufbaus gründlich getestet: An den Adresspins 
wird die richtige Adresse eingestellt, Output und Write Enable können 
gesteuert werden und die Digitalpins, die zu den IO Pins führen, werden 
richtig eingestellt. Trotzdem wird der EEPROM nicht beschrieben und ich 
kann das Problem einfach nicht finden. Wäre super wenn jemand von euch 
mit ein bisschen mehr Ahnung mir helfen könnte :)

PS: Hab gelesen, dass es möhlicherweise an SDP liegen könnte und 
versucht, diese abzuschalten - ohne Erfolg

EDIT: Bin bei meinem Aufbau so ungefähr diesem Video gefolgt: 
https://www.youtube.com/watch?v=K88pgWhEb1M

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Moritz T. schrieb:
> Chip Enable: geerdet

Geht das bei dem?
Ich kenne das so, dass das im Datenblatt als eigenes Diagramm angegeben 
ist.
Habe ich bei dem nicht gefunden.

von OMG (Gast)


Lesenswert?

Moritz T. schrieb:
> Wäre super wenn jemand von euch
> mit ein bisschen mehr Ahnung mir helfen könnte

Wäre super wenn du durch einen klaren Schaltplan uns Klarheit
in deinen "Versuchsaufbau" bringen könntest.

Mit Schaltplan ist auch Schaltplan gemeint, nicht Foto vom
Aufbau oder Ähnliches.

von Joachim B. (jar)


Lesenswert?

Moritz T. schrieb:
> Chip Enable: geerdet

das gibt das Datenblatt aber nicht her!

Ich habe bei 28Cxxx noch nie CE auf GND gesehen.
Den einen Pin wirst du noch freihaben und das Timing einhalten können.

Ich denke dir spucken Interrupts dazwischen, ggffs. mal ein Cli(); und 
Sei(); einbauen beim Schieben.

von OMG (Gast)


Angehängte Dateien:

Lesenswert?

Ganz klar, für Single Write gibt es zwei Möglichkeiten und
beide Modi beinhalten die Betätigung des CE.

RTFM
(und nicht irgendwas anderes aus dem Internet)

von pegel (Gast)


Lesenswert?

Sehe ich auch so.

von Peter D. (peda)


Lesenswert?

Joachim B. schrieb:
> Ich habe bei 28Cxxx noch nie CE auf GND gesehen.

Geht aber, erhöht nur etwas den Stromverbrauch.
tCS ist nur eine Minimalzeit, /CS darf also schon unendlich auf low 
sein.
/CS muß man nur bei Speichern mit Adreßlatch takten.

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> /CS muß man nur bei Speichern mit Adreßlatch takten.

was schrieb der TO?

"Arduino EEPROM Programmer, kann zwar lesen, aber nicht schreiben"

Adresslatch hat er doch nicht, wo soll also das passende Timing 
herkommen?

von Electro-Man (Gast)


Lesenswert?

Du musst die Data protection enablen...

Schau mal im Datenblatt unter:
19. Software Data Protection Enable Algorithm

von Joachim B. (jar)


Lesenswert?

ich tippe immer noch auf störende IRQs zwischen den 8 Bits während der 
seriellen Bitschieberei vom 2ten Byte, wenn die ersten 8 Bit seriell 
rausgeschoben wurden.

: Bearbeitet durch User
von Moritz T. (ferb300)


Lesenswert?

Also ich bin mir relativ sicher, dass der Chip Enable Pin permanent 
geerdet werden darf, dass Datenblatt gibt ja (wie peda schon sagte) tCS 
als Minimum an. Electro-Man sagt, dass ich SDP enablen muss. Würde das 
das Beschreiben nicht eher verhindern? Ab Werk ist SDP ja aus (obwohl 
man im Internet auch von Fällen liest, bei denen es versehentlich an war 
und erst abgeschaltet werden musste. Was ich versucht habe).
Und um das, was jar geschrieben hat zu verstehen reicht mein 
arduinowissen leider nicht aus...
Aber vielen Dank schonmal für die ganzen Antworten :)

von Peter S. (petersieg)


Lesenswert?

Evtl. ist hier ja was dabei an Code Beispielen.

http://danceswithferrets.org/geekblog/?p=496

;-)

Peter

: Bearbeitet durch User
von Moritz T. (ferb300)


Lesenswert?

Also die einzigen Unterschiede die ich zwischen dem Projekt und meinem 
erkennen kann, sind dass der ein anderes Delay hat und dass der keine 
Shiftregister verwendet. Das andere Delay hab ich erfollos ausprobiert, 
also ist das Problem wohl auf die Shiftregister lokalisiert. Woran genau 
es liegen könnte, weiß ich aber nicht. sowohl sein WE als auch meiner 
wird erst nach dem einstellen der Adressen getriggert...

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.