alsooooo,
ich habe jetzt die crc Prüfung rausgenommen und nun laufen die zwei DS1820 \
/
Tobias
Also wen´s interessiert:
Code:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config 1wire = Portb.0
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
Dim Tmp As Byte
Dim Tmp2 As Byte
Dim Crc As Byte
Dim W As Byte
Declare Sub Crcit
Declare Sub Crcit2
W = 1wirecount()
Id1(1) = 1wsearchfirst() 'ID des 1. auslesen
Id2(1) = 1wsearchnext() 'ID des nächstenauslesen
'=========
'TIMER 16bit
Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_irq
Const Timervorgabe = 3036 'also 1 mal pro Sekunde!!!
Enable Timer1
Enable Interrupts
Config Pinb.1 = Output
Led Alias Portb.1
Do
1wreset 'Bus resetten
1wwrite &H55 'Match Rom
1wwrite Id1(1) , 8 '64Bit senden (DS1820 adresse)
1wwrite &H44 'Convert temp
Waitms 800 'wenn parasite powered, ansonsten kann man auch den idle-state abfragen. Dieser geht auf low, wenn die Wandlung fertig ist (aber nur bei externer Stromversorgung, nicht im parasite modus).
1wreset 'Bus resetten
1wwrite &H55 'Match Rom
1wwrite Id1(1) , 8 '64Bit senden (DS1820 adresse)
1wwrite &HBE
Ar1(1) = 1wread(9)
1wreset 'Bus resetten
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 , "#.#")
1wreset 'Bus resetten
1wwrite &H55 'Match Rom
1wwrite Id2(1) , 8 '64Bit senden (DS1820 adresse)
1wwrite &H44 'Convert temp
Waitms 800
1wreset 'Bus resetten
1wwrite &H55 'Match Rom
1wwrite Id2(1) , 8 '64Bit senden (DS1820 adresse)
1wwrite &HBE
Ar2(1) = 1wread(9)
1wreset 'Bus resetten
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 , "#.#")
Print "Temp. T4: " ; T4 ; Chr(248) ; "C" ; " / Temp. T5: " ; T5 ; Chr(248) ; "C"
Waitms 500
Loop
Timer_irq:
Timer1 = Timervorgabe
Toggle Led
Return
Lesezeichen