Forum: Mikrocontroller und Digitale Elektronik Probleme mit I2C (IIC I²C) Kommunikation mit EEPROM


von Marcus (Gast)


Lesenswert?

hallo,

hoffe mir kann jemand helfen:

arbeite mit einem Renesas 16C/6N4U und einem ST 8kx8 EEPROM.
programmieren tu ich in ANSI C.
cih schiebe die device adresse in den low teil des transmit registers
des µC, erzeuge eine start condition und setze das bit um den inhalt
des registers zu versenden. dieses bitmuster sehe ich auch einwandrei
an dem SDA pin des EEPROMs (SCL auch einwandfrei, 9 clocks lang).
die device adresse des bausteins ist auch richtig (E2 auf ground = 0).
schicke also: 1010 (für I2C) und 0000 (für adresse, E2, A9, A8 und die
letzte 0 für "write").
nun sollte der EEPROM doch eigentlich im 9ten und letzten takt die SDA
leitung auf 0 ziehen und somit mit ACK (acknowledge) antworten.
aber genau dies tut er nicht... hmpf

mach ich was prinzipielles falsch oder kanns sein, das der
speicherbaustein defekt ist?

hoffe ich habs nicht zu verwirrend geschrieben.

danke im voraus!

mfg

von thkais (Gast)


Lesenswert?

Prinzipiell paßt es.
Wird die Start-Condition richtig gesendet? Welchen Wert haben die
Pull-Ups? SDA und SCL nicht vertauscht?

von Marcus (Gast)


Lesenswert?

hi,

start kondition ist einwandfrei, clock legt ja auch direkt los.
vertauscht ist da nix. pullups sind 1k. daran dürfts auch net liegen.
kann ja auch allemöglichen 8 bit folgen schicken, nur kommt halt eben
im 9ten takt kein ACK :-(

von smartie (Gast)


Lesenswert?

liegt vielleicht der WP auf high?

von Marcus (Gast)


Lesenswert?

nein, das ist es leider auch nicht... is not connected (=low laut
datenblatt), hatte ihn aber auch schon auf 0 gezogen... selbe resultat
leider :-(

von smartie (Gast)


Lesenswert?

Dann vielleicht ein Timing Problem, d.h. Prozessor zu schnell.
Ich würds mal mit nem Software-I2c probieren, da kann man noch waits
einfügen.

von Marcus (Gast)


Lesenswert?

hmm... ok, ich guck morgen noch mal auf der arbeit und probier bissl
rum... sag dann wieder bescheid...
danke erst mal für die antworten bis jetz.
n8!

von Manos (Gast)


Lesenswert?

1k Pullup kommt mir was niedrig vor - kenne eigentlich immer nur
Beschreibungen mit 10k Pullup.

Vielleicht noch mal prüfen ob SDA mit SDA und SCL mit SCL verbunden
sind.

Mit welcher Frequenz arbeitet Dein I2C? 100k, 400k? Vielleicht ist der
Speed für das EEPROM zu hoch (wobei moderne Chips eigentlich alle die
400k können sollten).

von Marcus (Gast)


Lesenswert?

sorry, meinte natürlich auch 10k, die ich dran hab.
SDA und SCL sind (leider) nicht vertauscht.
im mom arbeite ich mit 111kHz, hab aber auch schon 20kHz gehabt; mit
dem selben ergebnis :-(

hab in der zwischenzeit mal den EEPROM baustein gewechselt... an dem
liegt es auch nicht :-((

WC pin liegt auf 0 (=schreiben möglich), hab ihn auch schon auf NC
gelassen.
E2, also die hardwareadresse ebenfalls auf ground.

weiss langsam nicht mehr, was das sein kann...

von Boris (Gast)


Lesenswert?

Hallo Marcus,
ich habe momentan ein sehr ähnlich gelagertes Problem. Mega8, Software
I2C und ein 2k EEPROM. Allerdings bekomme ich bei jeder Adresse die ich
sende ein ACK (EEPROM hat 0xA0) und ein ACK erhalte ich von 0xA0 bis
0xAE.
Hast Du schon herausgefunden woran es liegt?
danke
Gruß
Boris

von Marcus (Gast)


Lesenswert?

hi Boris,

bei mir lag es vermutlich daran, das ich die start-bedingung nicht
richtig generiert habe. die klappt jetzt. dafür will der
start-detection interrupt jetzt nicht auslösen :-(
und somit wird auch erst gar nicht das erste byte geschrieben/gesendet.
ich arbeite mit dem fertigen beispiel für I²C von Renesas für den µC
M16C6N4, aber irgendwas stimmt noch nicht... verdammte hacke...

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.