/* Settings Atmega8 @ Internal RC Oszillator 4Mhz @STK500 UART Übertragung OK LM75 Adresse = 0b1001000 */ Hallo, Ich komme nicht ganz mit dem I²C bus zurecht. Ich möchte den Temperatursensor LM75 auslesen. (Versuche da jetzt seit zwei Tagen herum :-/ ) Ich bekomme aber immer nur Werte zurück wie: 95 (0b1011111) oder 127 (0b1111111) manchmal auch 255 (0b11111111). Kann sich bitte mal jemand einmal den C-Code (Anhang -> TWI_lm75.c) zu Gemüte ziehen? (Könnte leicht sein, dass auch nur die Adressen nicht passen? Bin Ratlos.) Eine Skizze meines Schaltplans liegt auch als PDF bei. Danke vorab! Greez, Nick
Gast
#626325
Ich verweise dich mal dahin: Beitrag "LM75 am Atmel 128 mit TWI_Master" Da hab ich das Format des Sensorwerts erklärt ;) hth. Jörg
Hallo, danke für die rasche Antwort. Du meinst die Division durch 2 im positiven Bereich? Ich teste das, sobald ich daheim bin. Denke aber dass grundlegend etwas nicht passt. Der Sensor sollte Zimmertemperatur zurück geben. Stimmt diese Passage:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
die sich nämlich von den Adressen her zu der von Gerhard. (Beitrag "LM75 am Atmel 128 mit TWI_Master") unterscheidet (Pointer im Temp.Register setzte ich nämlich auch keinen)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Grüße Nick
Gast
#626458
0x00 ist der Start-Up Wert des Pointerregisters, es sollte also auch so gehen. Aber der Sensor braucht bis zu 300ms um die Temperatur zu messen, vielleicht hilft einfach mal abwarten: > The LM75 can be accessed at any time and reading the Temperature Register > will yield result from the last temperature conversion. When the LM75 is > accessed, the conversion that is in process will be interrupted and it will > be restarted after the end of the communication. Accessing the LM75 > continuously without waiting at least one conversion time between > communications will prevent the device from updating the Temperature > Register with a new temperature conversion result. Consequently, the LM75 > should not be accessed continuously with a wait time of less than 300 ms (eine Fußnote aus dem Datasheet) hth. Jörg
Hallo, es hat sich gelöst. FEHLER:
1 | |
2 | |
3 | |
Die Werte wurden schon richtig übertragen und stehen richtig in der Struct "temp". Danke Jörg an dieser Stelle, war wie von dir gesagt nur ein Rechenfehler. Greez Nick
Gast
#630902
;)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.