Forum: Mikrocontroller und Digitale Elektronik Kein ACK mehr am 24LC1025


von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

Ich habe hier zwei gleiche Schaltungen mit Mega162 und 24LC1025 EEPROM.

Dem EEPROM läßt sich kein ACK entlocken. Egal, was ich anbiete. Die Pins 
sind laut Datenblatt verschaltet. Der Code ist bereits erprobt mit 
anderen I2C-Teilnehmern. Die Ansteuerung erfolgt nicht mittels TWI, 
sondern durch direktes Ansteuern der beiden Pins.


Bei ersten Experimenten habe ich ein ACK mal gesehen, später dann nicht 
mehr.

Frage: Könnte der interne Transistor wegen Überlastung defekt sein, so 
daß er nicht mehr die SDA-Leitung auf low ziehen kann?

Was ich auf dem Oszilloskop gesehen habe war ein nur halb herunter 
gezogenes SDA, weil anscheinend der Pin des Mikrocontrollers 
fälschlicherweise high ausgegeben hat. Somit dürfte ein nennenswerter 
Strom geflossen sein von high in den Pulldown-Transistor hinein. Im 
Datenblatt habe ich keine Angabe gefunden, was dieser verkraftet oder ob 
er Dauerkurzschußfest ist.

Vielleicht kann jemand einen Erfahrungswert beisteruern.

mit freundlichem Gruß

von Bernhard S. (b_spitzer)


Lesenswert?

Schaltplan? Quellcode?

von Joachim B. (jar)


Lesenswert?

Christian S. schrieb:
> Bei ersten Experimenten habe ich ein ACK mal gesehen, später dann nicht
> mehr.

dann muss ja was gestorben sein das EEPROM?

ist ja leicht zu testen mit einem anderen Controller

von Peter D. (peda)


Lesenswert?

Christian S. schrieb:
> Frage: Könnte der interne Transistor wegen Überlastung defekt sein, so
> daß er nicht mehr die SDA-Leitung auf low ziehen kann?

Unwahrscheinlich.

Christian S. schrieb:
> Was ich auf dem Oszilloskop gesehen habe war ein nur halb herunter
> gezogenes SDA

Dann ist Dein SW-I2C Schrott. SDA darf zu keinem Zeitpunkt Ausgang 
High sein, auch nicht mal 50ns lang!

Hier mal ein funktionierender Code:
Beitrag "Re: I2C Eeprom AT24C512 Lib für Pagewrite in C"

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

danke für den Link zum Code und den Hinweis. Ich hatte noch nicht 
Gelegenheit, ihn auszuprobieren.


Was ich festgestellt habe an meiner Konstellation:

Das ACK erscheint inzwischen wieder. Das EEPROM habe ich nicht 
ausgetauscht. Geändert habe ich den Pullup-Widerstand an SDA von 2,2 
kOhm auf Unendlich. Bei 15 kOhm erscheint auch kein ACK. Der eingebaute 
Pullup-Widerstand im ATMega genügt, um bis etwa 200 kHz Schreiben und 
Lesen zu können.

Baue ich den Widerstand wieder ein, gelingt auch das Lesen nicht.

Keramik-Kondensatoren 100 nF sind sowohl am EEPROM als auch am ATMega 
vorhanden und die Verbindung ist so 6 cm lang.

mit freundlichem Gruß

von MWS (Gast)


Lesenswert?

Christian S. schrieb:
> Bei 15 kOhm erscheint auch kein ACK. Der eingebaute
> Pullup-Widerstand im ATMega genügt, um bis etwa 200 kHz Schreiben und
> Lesen zu können.

Wie bereits von anderer Seite geschrieben wird die Soft-TWI Müll sein, 
denn der eingebaute Pullup funktioniert nur ordentlich bei Hard-TWI, 
bei Soft müsste man PORT vor, bzw. nach Umschalten von DIR verändern, 
mit jeweils mindestens einem Clock Versatz.

TWI erfordert OC und das macht man bei Soft, indem man PORT zu Anfang 
einmal auf Low setzt und im Betrieb nur DIR verändert.

Dabei kann prinzipbedingt der interne Pullup nicht dauerhaft gesetzt 
werden, nur mit Clock-Versatz, während dieser Clocks ist der Zustand des 
Bus dann unbestimmt.
Ergo, Deine Soft-TWI Routinen sind schrottig.

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.