Hallo, ich habe an einem ATmega32 einen LM75 dran. Ich bekomme als Temperaturwert immer nur 255 zurück, egal ob ich das untere oder obere Byte lese. Wenn ich die Adresse verändere (angeschlossen ist 0x90) auf z.B. 0x9D dann bekomme ich vom i2c_start eine 1 zurück, was auf Fehlerhafte kommunikation hinweist. Wenn ich die Datenleitungen tausche, oder den LM75 abstecke, bekomme ich ebenfalls die 1 zurück, was auch auf Fehler hinweist. Weil ich aber 0 zurück bekomme muss die Kommunikation doch passen... Im Anhang habe ich mein C Projekt einmal als zip gepackt. Ich würde mich freuen wenn mir jemand helfen könnte. Auch die Fuses sind auf Ihren 8Mhz wie eingestellt. Grüße
Wenn du lesen willst, wäre die Adresse 0x91...
Du darfst das, was Maxim im Datenblatt des LM75 Table 1 als Slave Address bezeichnet, nicht mit der I2C Adresse verwechseln, wie sie von NXP/Phillips in der UM20204 I2C-bus specification and user manual spezifiziert ist (S.13 Fig.10 in [1]). So weit reicht die Kompatibilität des von Maxim verwendeten 2-wire Interfaces dann doch nicht. Die I2C-Adresse hat nur 7 Bit (mal von der 10-Bit Erweiterung abgesehen). [1] http://www.nxp.com/documents/user_manual/UM10204.pdf
Danke euch beiden. Jetzt läuft der Spaß !!!! Super das Ihr euch für mich Zeit genommen habt und mir gezeigt habe wo ich etwas falsch gemacht habe. Schönes WE euch beiden ! Grüße
@Wolfgang: Maxim hat die Adrtesse doch völlig richtig mit 7 Bit angegeben. Das Bit 0 über Lesen/Schreiben entscheidet, gehört ja zum I2C-Standard. Es ist in den Timing-Diagrammen im Datenblatt des LM75 ja auch völlig Standard richtig dargestellt. Gruß aus Berlin Michael
Michael U. schrieb: > Maxim hat die Adrtesse doch völlig richtig mit 7 Bit angegeben. Wo? Im Datenblatt Table 1 wird das ganze Byte (incl. R/W-Bit) als "Slave Adress" bezeichnet.
Wolfgang schrieb: > Michael U. schrieb: >> Maxim hat die Adrtesse doch völlig richtig mit 7 Bit angegeben. > > Wo? Im Datenblatt Table 1 wird das ganze Byte (incl. R/W-Bit) als "Slave > Adress" bezeichnet. Du hast recht, das Datenblatt in meiner Sammlung war nicht von Maxim... Ist sicher eine Unkorrektheit, ändert ja aber nichts daran, daß 0x90 Write und 0x91 Read ist usw. Gerade bei I2C können da auch andere Hersteller sehr kreativ sein. Gruß aus Berlin Michael
Michael U. schrieb: > Ist sicher eine Unkorrektheit, ändert ja aber nichts daran, daß 0x90 > Write und 0x91 Read ist usw. Eben, und genau bei I2C-Libraries mit getrennten Read- und Write-Funktionen, die die von NXP spezifizierte 7-Bit Adresse (0x45) verwenden, führt das zu dem üblichen Chaos, wenn im Datenblatt verschiedene 8-Bit Adressen auftauchen - eine für Read (0x91) und eine für Write (0x90), i.e. wenn keine saubere Unterscheidung zwischen (7-Bit)-Adresse und Adressbyte (7-Bit Adresse + R/W-Bit) gemacht wird.
Solange die angegebene Addresse >0x7f ist, ist es ja relativ offensichtlich ;)
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.