Hallo,
ich habe es inzwischen auch hinbekommen, im Datasheet steht ja, dass die ausgeleseneTemperatur durch zwei geteilt werden muss. Ich lese nur die ersten zwei Bytes aus, das reicht ja, ich mache auch keine CRC Prüfung oder so, mir reichen 0,5° Genauigkeit. Im ersten Byte steht ja die Temp und im zweiten das Vorzeichen, mehr brauch ich nicht und es funktioniert auch so.
Hier also mein endgültiger Code:
Gruß und DankeCode:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config 1wire = Portb.0 Config Lcd = 40 * 4 Config Lcdpin = Pin , Rs = Portb.6 , Db4 = Portb.7 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , E2 = Portb.2 Dim ___lcdno As Bit Dim T1 As Byte Dim T2 As Byte Dim I As Byte Dim Id1(8) As Byte Dim Id2(8) As Byte Dim Ar1(2) As Byte Dim Ar2(2) As Byte ___lcdno = 0 Initlcd Cursor Off Cls ___lcdno = 1 Initlcd Cursor Off Cls Id1(1) = 1wsearchfirst() Id2(1) = 1wsearchnext() Do 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id1(1) , 8 'Id von Sensor 1 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id1(1) , 8 'id von sensor 1 1wwrite &HBE 'scratchpad lesen Ar1(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar1(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen Waitms 500 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id2(1) , 8 'Id von Sensor 2 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id2(1) , 8 'id von sensor 2 1wwrite &HBE 'scratchpad lesen Ar2(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar2(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen T1 = Ar1(1) / 2 T2 = Ar2(1) / 2 ___lcdno = 0 Upperline If Ar1(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temperatur 1:" ; " " ; T1 Else Lcd "Temperatur 1:" ; "-" ; T1 End If Lowerline If Ar2(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temperatur 2:" ; " " ; T2 Else Lcd "Temperatur 2:" ; "-" ; T2 End If ___lcdno = 1 Upperline Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8) Lowerline Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8) Waitms 500 Loop
Florian







Zitieren

Lesezeichen