Forum: Mikrocontroller und Digitale Elektronik LM75 an I2C gibt immer 0xFF zurück, aber Kommunikation geht.


von Patrick E. (f4550tim)


Angehängte Dateien:

Lesenswert?

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

von Georg A. (georga)


Lesenswert?

Wenn du lesen willst, wäre die Adresse 0x91...

von Wolfgang (Gast)


Lesenswert?

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

von Patrick E. (f4550tim)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

@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

von Wolfgang (Gast)


Lesenswert?

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.

von Michael U. (amiga)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von Georg A. (georga)


Lesenswert?

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
Noch kein Account? Hier anmelden.