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