PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DS1820 & Attiny2313 auslesen ohne Funktion



mat-sche
01.07.2006, 14: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)