Nabend, in meinem Datenlogger möchte ich zwei I2C- Bus EEPROMS von Microchip benutzen (24LC256). Die Schaltung ist fertig und geätzt. Ich habe das erste EEPROM mit A0=A1=A2= "1" hardcodiert und das andere mit A0=A1=A2= "0", trotzdem antworten beide EEPROMs auf der gleichen Adresse (wenn ich sie einzeln betreibe), ganz so als würden die Bits ignoriert bzw. als 0 verstanden. Ich habe übrigens schon 6 oder 7 EEPROMs (alle <=32K) probiert und bei allen das gleiche Problem festgestellt. Kann mir da jemand weiterhelfen ? Schöne Grüße, Boxenbauer
Hi, wie liegen die "1" an dem EEPROM? Im Datenblatt steht was von internal Pull-down. Also falls das high nicht kommt, würden sie wie von dir beschrieben sich als "0" angesprochen fühlen... Grüße
Hallo Boxenbauer, >trotzdem antworten beide EEPROMs auf der gleichen Adresse (wenn ich >sie einzeln betreibe), ganz so als würden die Bits ignoriert bzw. >als 0 verstanden. Ich habe das selbe Problem mit einem 24C04 von "ST". Ich suche auch an einer Lösung ! Gruß Fiffi
http://www.mikrocontroller.net/forum/read-1-8541.html#8702 Auszug daraus: Gewarnt sei an dieser Stelle vor EEPROMs 24C02/04/08, falls noch andere IIC-Bus ICs den Adressraum 0xA0 belegen (z.B. Uhr PCF8583). Einige Hersteller beachten die A0-A2 Pins nicht, sodaß eines dieser Teile den gesamten Adressraum 0xAX blockiert (Microchip, Infineon). Atmel, ST und Rohm Teile funktionieren ordentlich. Dies nur nebenbei.
Du must Dir das richtige Datenblatt runterladen ! Es gibt Typen einiger Hersteller, die die Adeßleitungen nicht auswerten. Es kommt also auf die genaue Typbezeichnung an. Ich benutze die Atmel AT24C512 und da gehts laut Datenblatt, d.h. es können 8 ICs angeschlossen werden. Ansonsten nimm einfach einen separaten SDA-Pin für jeden, Software-I2C ist auch nicht aufwendiger als Hardware-I2C. Peter
> Ansonsten nimm einfach einen separaten SDA-Pin für jeden, > Software-I2C ist auch nicht aufwendiger als Hardware-I2C. Interessant. Wie implementierst Du den nötigen OC (bzw. OD) Ausgangstreiber in Software?
"Wie implementierst Du den nötigen OC (bzw. OD) Ausgangstreiber in Software?" Der PORTx-Pin bleibt ständig 0 und nur zum Senden eines 0-Bits wird der DDRx-Pin auf 1 gesetzt. Peter
Hi,
@BB
>Natürlich fest auf 5V gelegt.
So natürlich ist das nicht, schliesslich ist es nicht total unüblich
dazu einen Widerstand zwischen VCC und Pin zu hängen. Wenn der
unglücklich dimensioniert ist, bildet er mit dem internen Pull-down
einen Spannungsteiler und das High ist vielleicht keins. Ist aber nicht
so wahrscheinlich, da der interne Pull-down nicht extrem niederohmig
sein wird.
Wird in dem Fall wohl so sein, wie Micheal schreibt.
Grüße
hallo, hatte dasselbe Problem auch schon (u.a. mit dem 24LC256 von microchip). Peter hat recht, es ist von Hersteller zu Hersteller verschieden. Ich hatte eine gute Hompage gesehen (japanisch oder so) mit einer Tabelle, wo aufgelistet war, welche I2C-EEPROMs adressierbar sind und welche nicht (URL weis ich nicht mehr). Ich hatte mal massenweise die kleinen 24C01 (von Siemens, kein Datenblatt auffindbar) und musste sie einzeln ansprechen können, ging aber nicht, da nicht unterstützt. Bis ich das herausfand vergingen Tage, da ich den Fehler in der Software suchte. Meine Lösung war: mit Betriebsspannung schalten (über Ausgänge von 74HC574, bei mir angeschlossen über dekodierten Datenbus eines 8051). Ist mit Sicherheit die schlechteste Lösung, aber funktioniert bis heute einwandfrei, da die EEPROMS kaum Strom ziehen (beim Schreiben glaube ich ca. 5 mA). Alternative ist sicher die Lösung mit extra SDA-Leitung. gruß, hoschi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.