Das ist ein Code den ich getestet habe... Aber vom Aufbau ist es der gleich wie der den ich geschrieben habe. Berehnung ist anders.
Code:
$regfile = "m32def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.4 , Db7 = Portd.3 , E = Portb.7 , Rs = Portb.6
Config Lcd = 16 * 2
Config Lcdbus = 4
Cursor Off
Cls
Config 1wire = Portc.5
Dim T As Integer
Dim T1 As Integer
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As String * 10
Dim T5 As String * 10
Dim T6 As Single
Dim T7 As Single
Dim Id1(8) As Byte
Dim Id2(8) As Byte
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp As Byte , Tmp2 As Byte
Dim 1t As Integer
Dim 1t1 As Integer
Dim 1t2 As Integer
Dim 1t3 As Integer
Dim 1t4 As String * 10
Dim 1t5 As String * 10
Dim 1t6 As Single
Dim 1t7 As Single
Dim Id3(8) As Byte
Dim Id4(8) As Byte
Dim 1ar1(9) As Byte
Dim 1ar2(9) As Byte
Dim 1i As Byte , 1tmp As Byte , 1tmp2 As Byte
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()
Id3(1) = 1wsearchnext()
Id4(1) = 1wsearchnext()
Print "Print Id1(1)"
Print ""
Print Id1(1)
Print Id1(2)
Print Id1(3)
Print Id1(4)
Print Id1(5)
Print Id1(6)
Print Id1(7)
Print Id1(8)
Print ""
Do
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &H44
Waitms 300
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &HBE
Ar1(1) = 1wread(9)
If Ar1(9) = Crc8(ar1(1) , 8) Then
Print "CRC i.o"
Else
Print "CRC Error"
End If
Print ""
1wreset
Tmp = Ar1(1) And 1
If Tmp = 1 Then Decr Ar1(1)
T = Makeint(ar1(1) , Ar1(2))
T = T * 50
T = T - 25
T1 = Ar1(8) - Ar1(7)
T1 = T1 * 100
T1 = T1 / Ar1(8)
T = T + T1
T = T / 10
T6 = T / 10
T4 = Fusing(t6 , "#.#")
Waitms 500
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &H44
Waitms 300
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &HBE
Ar2(1) = 1wread(9)
1wreset
Tmp2 = Ar2(1) And 1
If Tmp2 = 1 Then Decr Ar2(1)
T2 = Makeint(ar2(1) , Ar2(2))
T2 = T2 * 50
T2 = T2 - 25
T3 = Ar2(8) - Ar2(7)
T3 = T3 * 100
T3 = T3 / Ar2(8)
T2 = T2 + T3
T2 = T2 / 10
T7 = T2 / 10
T5 = Fusing(t7 , "#.#")
1wreset
1wwrite &H55
1wwrite Id3(1) , 8
1wwrite &H44
Waitms 300
1wreset
1wwrite &H55
1wwrite Id3(1) , 8
1wwrite &HBE
1ar1(1) = 1wread(9)
1wreset
1tmp = 1ar1(1) And 1
If 1tmp = 1 Then Decr 1ar1(1)
1t = Makeint(1ar1(1) , 1ar1(2))
1t = 1t * 50
1t = 1t - 25
1t1 = 1ar1(8) - 1ar1(7)
1t1 = 1t1 * 100
1t1 = 1t1 / 1ar1(8)
1t = 1t + 1t1
1t = 1t / 10
1t6 = 1t / 10
1t4 = Fusing(1t6 , "#.#")
Waitms 500
1wreset
1wwrite &H55
1wwrite Id4(1) , 8
1wwrite &H44
Waitms 300
1wreset
1wwrite &H55
1wwrite Id4(1) , 8
1wwrite &HBE
1ar2(1) = 1wread(9)
1wreset
1tmp2 = 1ar2(1) And 1
If 1tmp2 = 1 Then Decr 1ar2(1)
1t2 = Makeint(1ar2(1) , 1ar2(2))
1t2 = 1t2 * 50
1t2 = 1t2 - 25
1t3 = 1ar2(8) - 1ar2(7)
1t3 = 1t3 * 100
1t3 = 1t3 / 1ar2(8)
1t2 = 1t2 + 1t3
1t2 = 1t2 / 10
1t7 = 1t2 / 10
1t5 = Fusing(1t7 , "#.#")
Locate 1 , 1 : Lcd "T1:" ; T4
Locate 1 , 10 : Lcd "T2:" ; T5
Locate 2 , 1 : Lcd "T3:" ; 1t4
Locate 2 , 10 : Lcd "T4:" ; 1t5
Waitms 500
Loop
End
Ich habe wegen der CRC prüfung geguckt aber das ist ja nur zur kontrolle ob die Daten richtig übertragen wurden. So verstehe ich es.
Ich müssen iwie gucken von welchen Sensor die Daten gekommen sind.
Muss auch sagen das ich noch sehr neu auf dem Gebiet bin! Aber gbe mir größte mühne auch alle zu verstehen was auf dem 1WireBuss passiert.
Mfg
Sascha
Lesezeichen