Problem mit I2C-EEPROM

  • Thread starter Dschen Reinecke
  • Start date
D

Dschen Reinecke

Guest
Hallo Leute,

ich bin am verzweifeln, denn ich sitze hier mit einem (mehrere, also
schließe ich einen Defekt aus) 24c256 EEPROM von Atmel. Das Datenblatt
liegt vor. Dieses wird von einem ľC angesteuert, aber schon beim ersten
Byte, dem 'device adress word', kommt kein 'Ack' von EEPROM. In der
selben Schaltung funktioniert ein 24c32 von ST. Und in einer baugleichen
Schaltung mit gleichem Programm funktionierte auch ein 24c64 von Microchip.

Die Datenblätter liegen vor.

Folgende Unterschiede sind mir aufgefallen:

Es gibt ein WP ('Write Protect') Pin.
Es gibt nur 2-Bit Chip-Adressen

Da aber sowohl WP, als auch A2 interen Pull-Down-Widerstände haben
sollte dies nicht kritisch sein.

Das Timing sieht mir korrekt aus, ich habe aber sicherheitshalber schon
Abstände vergößert und so.

Weiß jemand einen Rat, woran die Schweigsamkeit des Chips liegen könnte?
Die Stromversorgung sieht gut aus, 5V und laut Oszi ohne Störungen.

Das Timing sieht laut Oszi so aus:

Oben SDA
Unten SCL
Einheit 4ľS (20ľS je Div, 5V je Div auf dem Bild:
http://www.infrarotport.de/temp/12070002.JPG)


---____----____----____________________-------------

----___-___-___-___-___-___-___-___-___-------------


St 1 2 3 4 5 6 7 8 Ack???


St. = Start
Ack??? = Warten auf ein Ack

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Dschen Reinecke wrote:
Hallo Leute,

ich bin am verzweifeln, denn ich sitze hier mit einem (mehrere, also
schließe ich einen Defekt aus) 24c256 EEPROM von Atmel. Das Datenblatt
liegt vor. Dieses wird von einem ľC angesteuert, aber schon beim ersten
Byte, dem 'device adress word', kommt kein 'Ack' von EEPROM.
Dann fuehlt es sich nicht angesprochen. Das kann folgende
Gruende haben:

- Falsche Adresse

- Zu schnell, das EEPROM kommt nicht mit.

Probier mal alle moeglichen Adressen durch. Nur weil im
Datenblatt was von Pulldowns an den Adressleitungen
steht sind die im Chip nicht unbedingt vorhanden,
Fehler kommen vor.

Hat Atmel u.U. die Basisadresse beim 24C256 gegenueber den
24C32 und 24C64 geaendert? Datenblatt?


Das Timing sieht laut Oszi so aus:

Oben SDA
Unten SCL
Einheit 4ľS (20ľS je Div, 5V je Div auf dem Bild:
http://www.infrarotport.de/temp/12070002.JPG)
Ziemlich fix... Ich erinnere mich noch an Experimente
mit einem 24C02 wo SCL 100KHz (Tastverhaeltnis 1:1!)
nicht ueberschreiten durfte, sonst kam das EEPROM nicht
mit. Was sagt das Datenblat zum 24C256? Was fuer
Pullups hast du fuer SCL und SDA vorgesehen?

Gerrit
 
Gerrit Heitsch wrote:

Hallo gerrit,

schon mal Danke für Deine Hilfe, aber sie hat noch nichts gebracht :-(


Dann fuehlt es sich nicht angesprochen. Das kann folgende
Gruende haben:

- Zu schnell, das EEPROM kommt nicht mit.

Laut Datenblatt soll es 1MHz können. Die kleineren aber nur je 400KHz,
dafür ist das Timing ausgelegt. Ich hatte schon mit verdoppelten Zeiten
getestet.


Probier mal alle moeglichen Adressen durch. Nur weil im
Datenblatt was von Pulldowns an den Adressleitungen
steht sind die im Chip nicht unbedingt vorhanden,
Fehler kommen vor.

Ich habe die beiden Adress-Leitungen aber auch auf GND gelegt. :-(

Aber ich teste es gerade explizit mit allen Adressen. Aber selbst mit
auf 1 gesetztem a3 (was es ja nicht gibt) klappt es nicht. :-(


Hat Atmel u.U. die Basisadresse beim 24C256 gegenueber den
24C32 und 24C64 geaendert? Datenblatt?

Nein, weiterhin 1 0 1 0 a3 a2 a1 r/w

wobei a3 es nicht gibt und es stattdessen mit einer 0 belegt wird.

Datenblätter habe ich jetzt auch hochgeladen:

http://www.infrarotport.de/temp/181803-da-01-en-24c65.pdf
http://www.infrarotport.de/temp/24c32.pdf
http://www.infrarotport.de/temp/ST24C128_ST24C256_ATM.pdf


Das Timing sieht laut Oszi so aus:

http://www.infrarotport.de/temp/12070002.JPG)

Ziemlich fix... Ich erinnere mich noch an Experimente
mit einem 24C02 wo SCL 100KHz (Tastverhaeltnis 1:1!)

Der ist ja nun auch schon ein Bißchen älter...

Das Tastverhältnis ist nicht angegeben, die maximale Freqenz ist
1000kHz, bei eine Lo und Hi Zeit von je min. 0,4ľS, da komme ich noch
lange nicht ran.


Pullups hast du fuer SCL und SDA vorgesehen?
Je 8k2, in den Leitungen habe ich allerdings noch je einen 1k eingefügt,
allerdings habe ich diesen schon testweise überbrückt. Der Sinn dahinter
ist, daß ich später die Datenleitungen auf ein Erweiterungs-Steckplatz
führen will und den Kurzschluß-Strom begrenzen will, wenn ein User dort
einen baut. Das sieht dann so aus:

Vcc
|
8k2
|
ľC -----+----1k----- EEPROM

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Dschen Reinecke wrote:
Gerrit Heitsch wrote:

Das Timing sieht laut Oszi so aus:

http://www.infrarotport.de/temp/12070002.JPG)

Ziemlich fix... Ich erinnere mich noch an Experimente
mit einem 24C02 wo SCL 100KHz (Tastverhaeltnis 1:1!)

Der ist ja nun auch schon ein Bißchen älter...
Mag sein, aber das war das letzte Mal das ich mit dem
Kram gespielt habe. Ein 24C02 am Userport meines Plus/4
und die Software in 6502-Assembler.

Ich hab mir das Oszi-Bild nochmal angesehen. Meiner
Meinung solltest du nach dem Anlegen des neuen
Bits ueber SDA etwas laenger warten bevor du SCL aktiv
schaltest, das Oszi zeigt da fast keine Verzoegerung
und wenn das EEPROM da etwas empfindlich ist, dann
liest es falsch und erkennt seine eigene Adresse
natuerlich nicht.

Auch sieht das Ende der Uebertragung komisch aus.
Ich vermisse den 9. Zyklus auf SCL. Ausserdem
schaltest du SCL und SDA sehr nahe zusammen inaktiv.
Das koennte das EEPROM, wenn du Pech hast, als STOP
interpretieren. Also zuerst SDA auf HIGH und dann erst
SCL HIGH. Das Bild auf den Oszi sieht fast umgekehrt aus
(und das ist eine STOP-Condition).


Pullups hast du fuer SCL und SDA vorgesehen?

Je 8k2,
Ist das nicht etwas wenig? Ich erinnere mich dunkel
an 10KOhm minimal...

Gerrit
 
Gerrit Heitsch schrieb:

Ich hab mir das Oszi-Bild nochmal angesehen. Meiner
Meinung solltest du nach dem Anlegen des neuen
Bits ueber SDA etwas laenger warten bevor du SCL aktiv
schaltest, das Oszi zeigt da fast keine Verzoegerung
und wenn das EEPROM da etwas empfindlich ist, dann
liest es falsch und erkennt seine eigene Adresse
natuerlich nicht.
AFAIR übernimmt bei I2C die Peripherie doch die Daten bei steigender
Flanke von SCL und liefert sie mit fallender Flanke.


Gruß Dieter
 
"Dschen Reinecke" <usenet@dschen.de> schrieb:

Das Timing sieht laut Oszi so aus:
[...]

Da du SDA/SCL direkt am 24C gemessen hast, kannst du den uC also als
Fehlerquelle sicher ausschließen, richtig?
Ich frage nur, weil Microchip bei fast allen aktuellen PIC16/18 das
MSSP-Modul vergeigt hat, was zu Problemen mit I2C und SPI führen kann. Es
gibt dazu bei Microchip eine "Silicon Errata".

MfG Bernd
 
Gerrit Heitsch wrote:


Ich hab mir das Oszi-Bild nochmal angesehen. Meiner
Meinung solltest du nach dem Anlegen des neuen
Bits ueber SDA etwas laenger warten bevor du SCL aktiv
schaltest, das Oszi zeigt da fast keine Verzoegerung
und wenn das EEPROM da etwas empfindlich ist, dann
liest es falsch und erkennt seine eigene Adresse
natuerlich nicht.

Hatte ich schon pobiert und habe ich jetzt auch wieder eingebaut, klappt
aber nicht. :-(


Auch sieht das Ende der Uebertragung komisch aus.
Ich vermisse den 9. Zyklus auf SCL. Ausserdem

Sie steigende Flanke ist der Beginn, ich wollte es abschalten (auf Low
legen), wenn ich das Ack habe, aber dieses kommt ja nicht.

Auf http://vhimpe.crosswinds.net/electronics/i2cfaq/i2c.html (Abschnitt
'Waiting for ACKNOWLEDGE') steht, daß ich die SDA freigeben soll,
solange SCL noch Low ist, das EEPROM schaltet dann das Ack auf die SDA
und ich kann den SCL-Impuls generieren. Allerdings klappt auch dieses
nicht. Ich warte ewig auf eine Änderung auf der SDA, nachdem ich sie
freigegeben habe.

also so etwa:

Daten 1 0 Warten auf Ack

SDA ----____------------------

SCL _--__--___________________


schaltest du SCL und SDA sehr nahe zusammen inaktiv.

Habe ich korrigiert, bringt aber auch nichts.


Das koennte das EEPROM, wenn du Pech hast, als STOP
interpretieren. Also zuerst SDA auf HIGH und dann erst
SCL HIGH. Das Bild auf den Oszi sieht fast umgekehrt aus
(und das ist eine STOP-Condition).



Pullups hast du fuer SCL und SDA vorgesehen?

Je 8k2,

Ist das nicht etwas wenig? Ich erinnere mich dunkel
an 10KOhm minimal...
Die habe ich auf dem ľC-Eval-Board :-(

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Bernd Maier wrote:

"Dschen Reinecke" <usenet@dschen.de> schrieb:

Da du SDA/SCL direkt am 24C gemessen hast, kannst du den uC also als
Fehlerquelle sicher ausschließen, richtig?

Der ľC (einer von Fujitsu) spricht ein ST 24c32 wunderbar an. Die Pegel
sind direkt am 24cxx aufgenommen.


Ich frage nur, weil Microchip bei fast allen aktuellen PIC16/18 das
MSSP-Modul vergeigt hat, was zu Problemen mit I2C und SPI führen kann. Es
gibt dazu bei Microchip eine "Silicon Errata".
Da ich keinen Microchip-ľC nutze, dürfte es egal sein, zumal es mit
einem anderen 24cxx klappt.

also es geht mit einem 24c32 von ST
mit verschiedenen 24c256 von Atmel geht es nicht.

Hast Du weitere Ideen?

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
In article <3FD342F3.10302@dschen.de>,
Dschen Reinecke <usenet@dschen.de> writes:
Das Timing sieht laut Oszi so aus:
Oben SDA
Unten SCL
Einheit 4ľS (20ľS je Div, 5V je Div auf dem Bild:
http://www.infrarotport.de/temp/12070002.JPG)
---____----____----____________________-------------
----___-___-___-___-___-___-___-___-___-------------
St 1 2 3 4 5 6 7 8 Ack???
St. = Start
Mir gefällt am obigen bild nicht daß die steigende Taktflanke
genau auf der Steigenden Datenflanke liegt.

Wenn das wirklich so ist kann ein kleinliches Rom das als start/stop
erkennen. Aber ich glaub das hattest du schon geändert.
Oder hast du vieleicht die Typen mit der geänderten Addresse?

Falls du einen funktionierenden Quellcode für den PC-Printerport
unter Dos brauchst schick ne Mail.

--
MFG Gernot
 
Gernot Fink wrote:


Mir gefällt am obigen bild nicht daß die steigende Taktflanke
genau auf der Steigenden Datenflanke liegt.

Wenn das wirklich so ist kann ein kleinliches Rom das als start/stop
erkennen. Aber ich glaub das hattest du schon geändert.

Ja habe ich. Brachte aber nichts. :-(


Oder hast du vieleicht die Typen mit der geänderten Addresse?

Da will ich mehr drücber wissen. Was für eine Adresse denn? nicht mehr
1 0 1 0 0 a1 a0 r/w

Auf meinen Chips steht folgendes:

ATMEL334
24C256
.PI127 B

Ich glaube ich teste mal ob der Chip auf irgendwas antwortet...


Falls du einen funktionierenden Quellcode für den PC-Printerport
unter Dos brauchst schick ne Mail.
Bisher nicht. Mein Quellcode tut's ja, aber nur mit dem 24c256 von atmel
nicht. Der 24c32 von St tut's und ein Microchip 24C65 tat's auch, selbst
mit dem Timing auf dem Bild.

Unter
http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&oe=UTF-8&selm=3AF6E22A.3308%40ezy.net.au
bzw. 3AF6E22A.3308@ezy.net.au habe ich eine Beschreibung eines ähnlichen
Problems gefunden, aber keine Der Lösungen scheint auf mein Problem zu
passen.

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Dschen Reinecke wrote:

Hallo Leute,

danke für Eure Hilfe.

Bei meinem ersten Baord klappt es immer noch nicht, aber bei zwei
Baugleichen klappt alles.

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 
Dschen Reinecke <usenet@dschen.de> schrieb:

Bisher nicht. Mein Quellcode tut's ja, aber nur mit dem 24c256 von atmel
nicht. Der 24c32 von St tut's und ein Microchip 24C65 tat's auch, selbst
mit dem Timing auf dem Bild.
Hallo!

Hab zwar auch keine Lösung aber ich hatte mal ein ähnliches Problem.
24C16 und 24C32 gingen und der 24C65 ging nicht. Waren glaube ich
alles NoName Teile. Habs nicht weiter verfolgt da der 24C32
ausgereicht hat.

Gruß
Jürgen

--
Advertisement to this mail address is prohibited!
Mailadress: juergen AT ek-p DOT de
 
Dschen Reinecke wrote:


Bei meinem ersten Baord klappt es immer noch nicht, aber bei zwei
Baugleichen klappt alles.
Auch dieses Rätzel ist gelößt: ich hatte Vcc bis zum Chip herangeführt,
dort auch testweise gemessen, aber die Lötbrücke zum Chip fehlte. Der
kleine Chip hat wohl über die Schutzdioden von über die Datenleitungen
den Strom bezogen, der große nicht...

Danke trotzdem für Eure Hilfe.

Ciao Dschen

--
Dschen Reinecke

=== der mit dem Namen aus China ==
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
 

Welcome to EDABoard.com

Sponsor

Back
Top