Hallo Leute! Mal wieder ein DS1820-Problem;ich lese das Scratchpad aus, daraus ergeben sich folgende Werte: Byte0: 0x10 Byte1: 0x00 Byte2: 0x25 Byte3: 0x23 Byte4: 0x7F Byte5: 0x7F Byte6: 0x02 Byte7: 0x08 Byte8: 0x24 1.Frage: sollten nicht Byte4 und 5 0xFF sein? 2.Frage: Byte0 ist die Temperatur, die man doch noch durch zwei teilen muss (oder?) => 0x10 / 0x02 = 16 / 2 = 8 Es hat aber 16 C hier....ist da was faul an meinen Leseroutinen?
ok,hatte in ReadByte dsa oberste Bit rausgeschossen. Jetzt ists behoben und ich lese anscheinend gute Werte aus, nur die Temperatur stimmt nicht: ich lese nur 0xAA. Scratchpad: 0 LSB: 0xAA 1 MSB: 0x00 2 TH: 0x4B 3 TL: 0x46 4 --: 0xFF 5 --: 0xFF 6 CR: 0x0C 7 CC: 0x10 8 CRC: 0x87 hatte jemand aehnliche probleme? das Lesen scheint richtig zu funktionieren,nur die Temperatur ist wohl falsch.Wie berechnet man die aus den geg. Werten. Ich dachte den binearen Wert einfach durch 2 teilen....oder?
Gast
#227494
0xAA -> Hast du vorher eine Messung gestartet ? Vermutlich nicht.
Ich habs noch ueberprueft und ...doch ich schicke alles so wie erwuenscht, in etwa (ohne delays) reset->skipRom->convert-2 sec warten->reset->skipRom->readScratchpad->readByte...(9mal) fertig nun bekomme ich als LSByte = 0x27 .... wie errechne ich jetzt die tatsaechlich gemessene Temperatur ?
im datasheet steht was von 9bit drin...heisst das, wenn ich die temperatur auslese, muss ich 9bit (einmal fuer LSBYTE und einmal fuer MSBYTE) statt 8bit lesen??
Gast
#227497
0x27 = dezimal 39 durch 2 ergibt 19,5° Da du ein MSB und ein LSB hast, hast du eigentlich den Wert 0x0027 für die Temperatur. Das MSB wird jedoch nur benötigt, wenn die Temperatur außerhalb von 0-127,5° liegt.
...also ist das gemeinte 9.bit nur das erste bit im MSByte, oder?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.