mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega32 mit I2C


Autor: Peter Kutsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
ich habe da ein Problem mit den AT24C256 EEproms. Das TWI Testprogramm
des WINAVR Compilers liefert folgendes Ergebnis:
0x00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xf0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Calling ee24xx_write_page(55, 44, 0xcb) => 9
Calling ee24xx_write_page(64, 35, 0xd4) => 35
Wrote 44 bytes.
0x00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0xf0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
done.
An dem I2C-Bus hängen neben dem AT24C256 noch ein PCF8574AP und eine
PCF8583 RTC. Die RTC und die Porterweiterung funktionieren einwandfrei.
Nur das AT24C256 macht Probleme. Weder beim Lesen noch beim Schreiben
treten Fehler auf, aber es steht beim Lesen immer nur =xFF drin. Kann
mir da jemand weiterhelfen? Ich habe jetzt bereits mehr als eine Woche
verbraten, aber das Teil will einfach nicht. Der WP Pin des AT24C256
hängt auf GND. Die SCL und SDA sind mit 4,7K Pullups bestückt.
Hat jemand eine Idee, was da falsch sein könnte?
Gruß
Peter

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schon mal probiert "manuel" was zu schreiben/lesen...
also
start->adresse->epromadresse(high)->epromadresse(low)->daten->stop
??
vielleicht das high/low anderesrum.. keine ahnung steht aber im
datenblatt

Autor: Peter Kutsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian
ich habe das Testprogramm des WINAVR als letzten Schritt probiert.
Vorher schon alles manuell gemacht. Das Status Register steht immer auf
dem erwarteten Wert, also Start, Stop, Data ACK etc. Aber beim Lesen
bekomme ich immer 0xff. Die anderen I2C Bausteine am Bus arbeiten ohne
Beanstandung. Das ist ja was mich so verwundert. Ich weis mir so
langsam keinen Rat mehr. Es kann doch nicht so schwierg sein, ein
AT24C256 EEPROM zu lesen und zu schreiben.
Gruß
Peter

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du schon mal andere widerstände getestet??
ich werd wohl bald vor dem gleichen problem stehen.
habe identische teile außer dem 32iger
in manchen tutorials sind die widerstände vom i2c bus 10K, also ich
benutze auch 10k und der PCF8574AP funzt (weiter bin ich noch nicht)
vielleicht schaft es das eprom nicht die sda leitung auf low zu ziehen

Autor: Peter Kutsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian
ich hatte vorher 10K PullUps und habe diese gegen 4,7k Widerstände
getauscht. Am Ergebnis hat das leider nichts geändert. RTC und
Porterweiterung arbeitet sowohl mit 4,7k als auch 10k, der AT24C256
weder noch.
Gruß
Peter

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das avr-libc-Beispiel (winavr) ist fuer "kleine" Eeproms, zumindest
war das in den aelteren Versionen so, bei den groesseren Typen (ab
128?) wird die Speicheradresse anders uebertragen (2 bytes nur fuer
speicheradr.) Die Codeteile zum Senden der Adresse muessen/mussten also
etwas angepasst werden.

Autor: Peter Kutsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo mthomas
es ist richtig, dass bei dem AT24C256 2 Adressbyte geschickt werden.
Eine entsprechende Anpassung habe ich gemacht. Leider ohne Erfolg.
Gruß
Peter

Autor: Peter Kutsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo mthomas
dein Tip mit den zweii Byte Adresse war Gold wert. Ich hatte in dieser
Adressierung einen Fehler eingebaut. Nun klappt alles wunderbar.
Herzlichsten Dank.
Liebe Grüße
Peter

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.