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?
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??
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?
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.