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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian S. (roehrenvorheizer)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Schaltplan? Quellcode?

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.