LM75 an I2C gibt immer 0xFF zurück, aber Kommunikation geht.

OP #4095858
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
Angehängte Dateien:
Gast #4095981
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
#4097042
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
Gast #4097046
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.