Witam,
Zrobiłem sobie pomiar temperatury w konfiguracji jak w tytule. Zgodnie z opisem ds18b20 moja procedura powinna odczytać zawartośc pamięci czujnika, z czego pierwsze 2 bajty powinny zawierać temperaturę.
Po wykonaniu powyższego kody w pierwszym odebranym bajcie otrzymuję temperaturę pomnożoną przez 2, a drugi bajt jest pusty.
Po włączeniu zasialania i bez uruchomienia przetwornika w pamięci powinna być zapsana temperatura 85 stopni, co zgodine z instrukcją odpowiada wartościom 05h 50h (ostatnie 4 bity powinny byc wartościami po przecinku) ja odbieram 0 170 dziesiętnie co odpowiadałoby 00h AAh. analogicznie po wykonaniu konwersji odbieram 0 47 dzisiętnie co interpretuję jako 23,5 stopinia.
Zrobiłem sobie pomiar temperatury w konfiguracji jak w tytule. Zgodnie z opisem ds18b20 moja procedura powinna odczytać zawartośc pamięci czujnika, z czego pierwsze 2 bajty powinny zawierać temperaturę.
$regfile = "m8def.dat"
Config Lcdpin = Pin , Rs = Portd.1 , E = Portd.0 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
Config 1wire = Portc.5
Dim Ar(8) As Byte , A As Byte , I As Byte
Do
Wait 1
1wreset 'reset the device
Upperline
Lcd Err
Wait 2
Czekaj:
1wwrite &HCC
1wwrite &H44
I = 1wread()
If I = 0 Then Goto Czekaj
1wreset
1wwrite &HCC
1wwrite &HBE
For I = 1 To 8
Ar(i) = 1wread()
Next
For I = 1 To 8
Lcd Ar(i)
Wait 1
Next
Cls
Loop
Po wykonaniu powyższego kody w pierwszym odebranym bajcie otrzymuję temperaturę pomnożoną przez 2, a drugi bajt jest pusty.
Po włączeniu zasialania i bez uruchomienia przetwornika w pamięci powinna być zapsana temperatura 85 stopni, co zgodine z instrukcją odpowiada wartościom 05h 50h (ostatnie 4 bity powinny byc wartościami po przecinku) ja odbieram 0 170 dziesiętnie co odpowiadałoby 00h AAh. analogicznie po wykonaniu konwersji odbieram 0 47 dzisiętnie co interpretuję jako 23,5 stopinia.