mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS18B20 Dezimalwert berechnen


Autor: mag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe hier einen DS18B20 Temperatursensor.
Nun habe ich diesen soweit das ich daten von ihm Empfange. Nun wollte 
ich diese in eine Dezimalzahl umwandeln, vorerst ohne minus und 
nachstellen. Jedoch stimmt die angezeigte Temperatur nicht, woran könnte 
das liegen hier mal ein Stück code welches ich zur berechnung 
hergenommen habe.

Num_Ausgabe:



clr r29
calc:

lsl t_high

inc r29
cpi r29,4

brne calc
clr r29
calc1:
andi t_high, 0b11110000
andi t_low,  0b00001111

or t_high, t_low


mov temp1, t_high

rcall lcd_number
clr t_high
clr t_low
ret

Ich bin im Programmieren noch nicht so fit, deswegen bitte ich um 
nachsicht.

Autor: Bernadette (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die ausgelesenen Bytes beinhalten 4 binäre Nachkommastellen.

Also die Bytes um 4 Stellen nach rechts schieben. Die rausgeschobenen 
Bytes beinhalten den Nachkommateil, die verbliebenen Bytes den 
ganzzahligen Wert.

B.

Autor: Wolfgang Schmidt (wsm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal deinen ganzen Code hier reinstellen ?

Gruß

Wolf

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich kenne den DS18B20 nicht. In welcher Form liegt dein Messwert in 
t_high/ t_low vor?
Was erwartet 'lcd_number'.

Übrigens lässt sich:
>clr r29
>calc:

>lsl t_high

>inc r29
>cpi r29,4

durch ein einfaches 'swap t_high' erledigen.

MfG Spess

Autor: mag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den ganzen code möchte ich eigentlich nicht einstellen weil er zum 
großen teil nicht von mir ist und nur von mir angepasst wurde.
Jedoch könnte folgendes noch hilfreich sein:

t_low = Zuerst ausgelesenes Byte
t_high = 2.Byte

temp1 = Ausgabe für LCD soll nur positiven Dezimalwert ohne Kommastellen
enthalten

r29 = nur temporär nicht weiter in Verwendung

Es gibt keine Interrupts

Es gibt keine CRC Überprüfung

Vlt. helfen diese Informationen weiter

Autor: mag (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein Bild aus dem Datenblatt.

Autor: KramerGegenKramer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mag schrieb:
> Den ganzen code möchte ich eigentlich nicht einstellen weil er ...

Damit hast du das Tischtuch zwischen der Forengemeinde und dir zerissen!

Btw: Gibts auch einen Link zum kompletten Datenblatt?

Autor: mag (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Na gut, der Code stammt aus diesem Threat. Angehängt ist meine 
Veränderte Version die mit 8MHz läuft.

Das Datenblatt gibts hier:

http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf

Autor: mag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Hier noch ein Bild aus dem Datenblatt.

Habe ich mittlerweile auch gefunden

>Den ganzen code möchte ich eigentlich nicht einstellen weil er zum
>großen teil nicht von mir ist und nur von mir angepasst wurde.

Auch verstanden?

Wenn du nur die Vorkommastellen haben willst, musst du ähnlich wie in 
deinem Programmausschnitt aus dem High-Nibble von t_low und dem 
Low-Nibble von t_high ein Byte machen.

swap t_low
swap t_high
andi t_low, $0F
andi t_high, $F0
or t_low,t_high

Den Wert musst du dann nach dezimal wandeln und an das Display ausgeben.

MfG Spess

Autor: mag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke spess53 das hat mich weitergebracht, nun scheint die sache zu 
funktionieren

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.