Luppi
12.04.2006, 15:28
Hallo
ich versuche gerade 2 DS1820 Temp sensoren auszulesen.
Hab mir die suche hier schon angeschaut. Und zahlreiches probiert. Die Sensoren sind auch Richtig rum angeschlossen. Doch ich bekomme als Temp wert immer -127 und als id immer 00000000.
Den Code hab ich aus der suche aus einem Beitrag
Hier malder Code
$regfile = "m8def.dat" 'ATMega8 Declaration
$crystal = 3686400 'hier Taktfrequenz eintragen
Config 1wire = Portd.2 '1wire Bus an Port PD2
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcdmode = Port
Config Lcdbus = 4 '4 bit mode
Config Lcd = 20 * 4
Initlcd
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
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
Locate 1 , 1
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
Locate 2 , 1
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
Locate 3 , 1
Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8)
Locate 4 , 1
Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8)
Waitms 500
Loop
ich versuche gerade 2 DS1820 Temp sensoren auszulesen.
Hab mir die suche hier schon angeschaut. Und zahlreiches probiert. Die Sensoren sind auch Richtig rum angeschlossen. Doch ich bekomme als Temp wert immer -127 und als id immer 00000000.
Den Code hab ich aus der suche aus einem Beitrag
Hier malder Code
$regfile = "m8def.dat" 'ATMega8 Declaration
$crystal = 3686400 'hier Taktfrequenz eintragen
Config 1wire = Portd.2 '1wire Bus an Port PD2
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcdmode = Port
Config Lcdbus = 4 '4 bit mode
Config Lcd = 20 * 4
Initlcd
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
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
Locate 1 , 1
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
Locate 2 , 1
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
Locate 3 , 1
Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8)
Locate 4 , 1
Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8)
Waitms 500
Loop