Das ist ein Code den ich getestet habe... Aber vom Aufbau ist es der gleich wie der den ich geschrieben habe. Berehnung ist anders.
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.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 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







Zitieren

Lesezeichen