mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1820 temperatur - falsch oder richtig


Autor: Thomas Wurschdl (gras78ix)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Thomas Wurschdl (gras78ix)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0xAA -> Hast du vorher eine Messung gestartet ? Vermutlich nicht.

Autor: Thomas Wurschdl (gras78ix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Thomas Wurschdl (gras78ix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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??

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas Wurschdl (gras78ix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...also ist das gemeinte 9.bit nur das erste bit im MSByte,
oder?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.