mat-sche
01.07.2006, 15:00
Hallo!
unterhalb mal mein Progi. Nach dem ich es auf einem M32 fertig zum Laufen gebracht habe, versuchte ich dies dann auf einen Attiny2313 zu spielen. Leider gibt er immer undefinierte Werte für die Temperatur aus :(
Kann jemand helfen?
Danke!!!
$regfile = "attiny2313.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequenz
'$sim
'****Configuration LCD***********
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.0 , Rs = Portd.1
Config Lcd = 16 * 1 'configure lcd scree
Initlcd ' initialisiere LCD
Cls
Config 1wire = Portb.3
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
Dim Ar(2) as Byte
'Dim Ar(3) as Byte
'Dim A as byte
DIM Temperatur1 as Integer
DIM Temperatur2 as Integer
Dim Halb as Byte
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()
'***Sensor 1************************************************* ***********************
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
For I = 1 To 2
Ar(i) = 1wread(1)
Next
'Deflcdchar 0 , 4 , 10 , 10 , 4 , 32 , 32 , 32 , 32 ' replace ? with number (0)
Locate 1 , 1
Temperatur1 = Ar(1)
If Ar(2) > 0 Then Temperatur1 = 0 Else Shift Temperatur1 , Right
Lcd Temperatur1 ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Lcd "5" Else Lcd "0"
Locate 1 , 5
LCD ; Chr(0) ; "C"
'*****Sensor2*****
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
For I = 1 To 2
Ar(i) = 1wread(1)
Next
'Deflcdchar 0 , 4 , 10 , 10 , 4 , 32 , 32 , 32 , 32 ' replace ? with number (0)
Locate 1 , 10
Temperatur2 = Ar(1)
If Ar(2) > 0 Then Temperatur2 = 0 Else Shift Temperatur2 , Right
Lcd Temperatur2 ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Lcd "5" Else Lcd "0"
Locate 1 , 14
LCD ; Chr(0) ; "C"
Waitms 500
loop
Nimm bitte Code-Tags. Wird übersichtlicher (PIcNIck)
unterhalb mal mein Progi. Nach dem ich es auf einem M32 fertig zum Laufen gebracht habe, versuchte ich dies dann auf einen Attiny2313 zu spielen. Leider gibt er immer undefinierte Werte für die Temperatur aus :(
Kann jemand helfen?
Danke!!!
$regfile = "attiny2313.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequenz
'$sim
'****Configuration LCD***********
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.0 , Rs = Portd.1
Config Lcd = 16 * 1 'configure lcd scree
Initlcd ' initialisiere LCD
Cls
Config 1wire = Portb.3
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
Dim Ar(2) as Byte
'Dim Ar(3) as Byte
'Dim A as byte
DIM Temperatur1 as Integer
DIM Temperatur2 as Integer
Dim Halb as Byte
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()
'***Sensor 1************************************************* ***********************
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
For I = 1 To 2
Ar(i) = 1wread(1)
Next
'Deflcdchar 0 , 4 , 10 , 10 , 4 , 32 , 32 , 32 , 32 ' replace ? with number (0)
Locate 1 , 1
Temperatur1 = Ar(1)
If Ar(2) > 0 Then Temperatur1 = 0 Else Shift Temperatur1 , Right
Lcd Temperatur1 ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Lcd "5" Else Lcd "0"
Locate 1 , 5
LCD ; Chr(0) ; "C"
'*****Sensor2*****
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
For I = 1 To 2
Ar(i) = 1wread(1)
Next
'Deflcdchar 0 , 4 , 10 , 10 , 4 , 32 , 32 , 32 , 32 ' replace ? with number (0)
Locate 1 , 10
Temperatur2 = Ar(1)
If Ar(2) > 0 Then Temperatur2 = 0 Else Shift Temperatur2 , Right
Lcd Temperatur2 ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Lcd "5" Else Lcd "0"
Locate 1 , 14
LCD ; Chr(0) ; "C"
Waitms 500
loop
Nimm bitte Code-Tags. Wird übersichtlicher (PIcNIck)