Forum: Mikrocontroller und Digitale Elektronik TWI- EEPROM- 24c64


von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

So wieder mal einer der mit seinem EEPROM nicht klar kommt.
Tut mir echt leid das ich mich damit melden muß, aber ich sitze nun
schon den dritten Tag an der Sache und habe das Forum schon ein paarmal
durchforstet aber keinen Anhaltspunkt gefunden.

Mein Problem ist das ich beim auslesen des EEPROMs immer 0xFF
zurückbekomme. Und das obwohl ich vorher etwas anderes Reingeschrieben
habe (oder auch nicht ??).

Bei der Kontrolle des Schreibevorgangs mit dem Oszi habe ich nach jeder
Ooperation ein ACK bekommen!

Auch beim lesen bekomme ich jdesmal ein ACK!

Die gesendeten und empfangenen Signale habe ich auch jedesmal mit dem
Oszi betrachtet und es stimmt mit dem an der seriellen überein.
Er sendet die richtigen Daten bekommt aber jdesmal 0xFF zurück.

Auch habe ich die selben Routinen zum auslesen eines Temp- Sensors
benutzt und da stimmen die gelesenen Werte.

Ich habe auch schon verschiedene EEPROMs probiert jedesmal mit
demselben Ergebniss.

Vieleicht findet ja einer meinen Fehler oder kann mir sonst einen Tipp
 geben...

von Benjamin (Gast)


Lesenswert?

Ups.. ich habe nen Mega8 mit Assembler...

von Peter D. (peda)


Lesenswert?

Du must die Schreibroutine "Schleife_write" aber auch aufrufen.

Außerdem funktioniert sie nicht. Schau mal ins Datenblatt, wann genau
der EEPROM mit dem Schreiben beginnt. Und danach muß man erstmal
testen, wann das Schreiben wieder beendet ist.


Peter

von Benjamin (Gast)


Lesenswert?

Aufgerufen habe ich sie vorher schon ;-) habe dann den Code immer
umgeschrieben...
Entweder ist mein Englisch zu schlecht oder ich blicke nicht was du
meinst? Vileicht noch ein kleiner Tipp?

Bitte Bitte :-(

von Benjamin (Gast)


Lesenswert?

Ich habe eben noch mal im Datenblatt von Atmel nachgeschaut und da stand
follgendes:

"At this time the EEPROM enters an internally-timed write cycle, tWR,
to the nonvolatile memory."

Also wenn ich das richtig verstanden habe heißt das das er keinen
zusätzlichen Takt zum schreiben benötigt. Eine Pause habe ich in der
Schleife ja eingebaut. Habe die Pause eben auf über 10ms hochgesetzt
hat auch nichts geholfen...

von Peter D. (peda)


Lesenswert?

"Vileicht noch ein kleiner Tipp?"

Das Schreiben beginnt immer erst nach dem Stop.
D.h. mit einem Repeat-Start kann man das Schreiben kanzeln.

Jedes neue Start ohne vorheriges Stop ist ein Repeat-Start.

Und das ACK-Polling (Start + I2C-Adresse + ACK testen) ist solange
erfolglos, wie das interne Schreiben dauert.


Peter

von Benjamin (Gast)


Lesenswert?

Ich habe nun in der I2C_send ein 10ms wait angefügt bevor ich teste,
aber wieder nichts.

Aber vileicht kannst du mir mal ein funtionierenden Code posten. Ich
habe in einem alten Thread ein Link zu einer Adresse von dir gefunden
der leider TOT war. Ich würde auch genre ein hard TWI benutzen,
wenigstens mal sehen das es klappen könnte ;-)

Vielen Dank für dein Bemühen..

Gruß Ben

von Peter D. (peda)


Lesenswert?

Ich hab nur nen Code in C bzw. 8051-Assembler:

http://home.tiscali.de/peterd/appl/soft/c51/eeprom/index.htm

Auch ist der nur für die kleinen (24C02..24C16).

Die Großen brauche aber nur 1 Adreßbyte mehr und dann sollte es gehen.


Teste doch einfach, ob das Schreiben gemacht wird, d.h. daß nach dem
Stop mindestens einmal NACK gepollt wird.


Peter

von Benjamin (Gast)


Lesenswert?

Danke für den Link werde mich Morgen mal darum kümmern muß noch auf
Polterabend ;-)

von Benjamin (Gast)


Lesenswert?

Also ersteinmal vielen Dank für deine Hilfe, ohne dich hätte ich noch
Tage probiert.

Der Fehler waren da viele....

1. Hatte ich ein Datenblatt ST anstatt von Atmel und da sind ein paar
unterschiede..

2. Hatte ich die Sache mit dem Stoppbit nicht in meiner Routine, wied
du schon bemerkt hast, also vielen Dank!!!

3. Hatte ich meine Sub für das Stoppbit flasch geschrieben und TWINT
auf 0 anstatt auf 1 gezogen, zu doof zum Abschreiben!

Nun funktioniert alles bestens nochmal Besten Dank für deine Hilfe!!

Nun kann ich beruhigt ins Bett gehen :-)

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

So das sind zwei Archive die ich zum Test meines EEPROMS genutzt habe.
So da ich nun eine Anfrage nach einem Funktionierenden Code erhalten
habe stelle ich meine Testcode mal rein vielleicht hilft es ja einem
anderen weiter!

Das eine Proggie beschreibt den kompletten EEprom mit 0xff,
das andere liest mehrere EEproms aus und sendet sie über UART an den
Rechner.
Es überprüft alle EEproms im Bereich  EEPROM_start_adresse -
EEPROM_end_adresse .

Eine Fehler abfrage habe ich noch nicht geschrieben aber für einen
kleinen Test oder zum Verständnis sollte es reichen.

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

nun noch das zweite..

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.