DS18S20 und DS18B20 gemeinsam am Bus - Temperaturkonvertierung

OP (Firma: esolutions GmbH) #4381395
Lesenswert?

Hallo Leute,

ich bin gerade am One Wire programmieren. Ich unterstütze sowohl die 
DS18S20 als auch den neueren DS18B20.

Nachdem die bestehenden Geräte die Temperaturen als Grad C * 100 in 
einem int16_t verarbeiten wollte ich diesen Standard gern beibehalten.

Um die Wandlung ohne Genauigkeitsverlust mit 16-Bit Arithmetik 
durchführen zu können war doch mehr Aufwand notwenig als ich 
ursprünglich gedacht habe.

Angehängt habe ich das Testprogramm, das printf und die 
Vergleichsberechnung mit float fliegt natürlich im AVR Programm raus.

Vielleicht hilft es ja jemanden.

Schöne Grüße
Jens Riebold
Angehängte Dateien:
OP (Firma: esolutions GmbH) #4381406
Lesenswert?

Den Testlauf möchte ich Euch nicht vorenthalten.....

Schöne Grüße
Jens
1
family=10, val=01 00 remain=0 ---> temp=12837 rtemp=12837.000000 korrektur=37
2
family=10, val=01 00 remain=15 ---> temp=12790 rtemp=12790.000000 korrektur=90
3
family=10, val=00 aa remain=0 ---> temp=8537 rtemp=8537.000000 korrektur=37
4
family=10, val=00 aa remain=15 ---> temp=8490 rtemp=8490.000000 korrektur=90
5
family=10, val=00 32 remain=0 ---> temp=2537 rtemp=2537.000000 korrektur=37
6
family=10, val=00 32 remain=15 ---> temp=2490 rtemp=2490.000000 korrektur=90
7
family=10, val=00 00 remain=0 ---> temp=37 rtemp=37.000000 korrektur=37
8
family=10, val=00 00 remain=15 ---> temp=-10 rtemp=-9.000000 korrektur=90
9
family=10, val=ff ff remain=0 ---> temp=-13 rtemp=-12.000000 korrektur=87
10
family=10, val=ff ff remain=15 ---> temp=-60 rtemp=-59.000000 korrektur=40
11
family=10, val=ff ce remain=0 ---> temp=-2463 rtemp=-2462.000000 korrektur=37
12
family=10, val=ff ce remain=15 ---> temp=-2510 rtemp=-2509.000000 korrektur=90
13
family=10, val=ff 92 remain=0 ---> temp=-5463 rtemp=-5462.000000 korrektur=37
14
family=10, val=ff 92 remain=15 ---> temp=-5510 rtemp=-5509.000000 korrektur=90
15
family=28, val=07 d0 remain=0 ---> temp=12500 rtemp=12500.000000 korrektur=0
16
family=28, val=05 50 remain=0 ---> temp=8500 rtemp=8500.000000 korrektur=0
17
family=28, val=01 91 remain=0 ---> temp=2506 rtemp=2506.000000 korrektur=6
18
family=28, val=01 95 remain=0 ---> temp=2531 rtemp=2531.000000 korrektur=6
19
family=28, val=00 a2 remain=0 ---> temp=1012 rtemp=1012.000000 korrektur=12
20
family=28, val=00 08 remain=0 ---> temp=50 rtemp=50.000000 korrektur=0
21
family=28, val=00 00 remain=0 ---> temp=0 rtemp=0.000000 korrektur=0
22
family=28, val=ff f8 remain=0 ---> temp=-50 rtemp=-50.000000 korrektur=0
23
family=28, val=ff 5e remain=0 ---> temp=-1013 rtemp=-1012.000000 korrektur=12
24
family=28, val=fe 6f remain=0 ---> temp=-2507 rtemp=-2506.000000 korrektur=18
25
family=28, val=fc 90 remain=0 ---> temp=-5500 rtemp=-5500.000000 korrektur=0

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren