Czesc.
W układzie w którym pracowały (poprawnie) trzy DS1820 z konieczności (a trochę z głupoty) zamieniłem jeden z nich na 18B20. Niestety odczytuje on dziwne wartości, nawet po przesuwaniu przecinka i przeliczaniu nijak się mające do rzeczywistości. Czy mógłby ktoś przejrzeć fragment procedury jaka jest w tej chwili w moim 90S8535 i zasugerować zmiany, dopuszczające do pracy jednocześnie 1820 1 18B20?
dzięki Leszek
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T10 As Integer , T11 As Integer
Tmp = Sc(1) And 1
If Tmp = 1 Then Decr Sc(1)
T10 = Makeint(sc(1) , Sc(2))
T10 = T10 * 50
T10 = T10 - 25
T11 = Sc(8) - Sc(7)
T11 = T11 * 100
T11 = T11 / Sc(8)
T10 = T10 + T11
Decigrades = T10 / 10
End Function
Sub Pomiar
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 250
Waitms 250
Waitms 250
1wverify Dsid1(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp0 = Decigrades(sc(9)) 'temp. za oknem
Locate 2 , 1
Polo = Temp0 / 10
Lcd Fusing(polo , "###.#") ; Chr(1) ; " "
1wverify Dsid2(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp1 = Decigrades(sc(9)) 'temp. w kuchni
Locate 1 , 1
Polo = Temp1 / 10
Lcd Fusing(polo , "###.#") ; Chr(1)
1wverify Dsid3(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp2 = Decigrades(sc(9)) 'temp. w piecu
Locate 2 , 12
Polo = Temp2 / 10
Lcd Fusing(polo , "###.#") ; Chr(1)
Temp_wynik = Temp2 / 10
Temp = Temp_wynik
End Sub
__________________________________________________________________
W układzie w którym pracowały (poprawnie) trzy DS1820 z konieczności (a trochę z głupoty) zamieniłem jeden z nich na 18B20. Niestety odczytuje on dziwne wartości, nawet po przesuwaniu przecinka i przeliczaniu nijak się mające do rzeczywistości. Czy mógłby ktoś przejrzeć fragment procedury jaka jest w tej chwili w moim 90S8535 i zasugerować zmiany, dopuszczające do pracy jednocześnie 1820 1 18B20?
dzięki Leszek
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T10 As Integer , T11 As Integer
Tmp = Sc(1) And 1
If Tmp = 1 Then Decr Sc(1)
T10 = Makeint(sc(1) , Sc(2))
T10 = T10 * 50
T10 = T10 - 25
T11 = Sc(8) - Sc(7)
T11 = T11 * 100
T11 = T11 / Sc(8)
T10 = T10 + T11
Decigrades = T10 / 10
End Function
Sub Pomiar
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 250
Waitms 250
Waitms 250
1wverify Dsid1(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp0 = Decigrades(sc(9)) 'temp. za oknem
Locate 2 , 1
Polo = Temp0 / 10
Lcd Fusing(polo , "###.#") ; Chr(1) ; " "
1wverify Dsid2(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp1 = Decigrades(sc(9)) 'temp. w kuchni
Locate 1 , 1
Polo = Temp1 / 10
Lcd Fusing(polo , "###.#") ; Chr(1)
1wverify Dsid3(1)
1wwrite &HBE
Sc(1) = 1wread(9)
Temp2 = Decigrades(sc(9)) 'temp. w piecu
Locate 2 , 12
Polo = Temp2 / 10
Lcd Fusing(polo , "###.#") ; Chr(1)
Temp_wynik = Temp2 / 10
Temp = Temp_wynik
End Sub
__________________________________________________________________