
Zitat von
TobiasBlome
alsooooo,
ich habe jetzt die crc Prüfung rausgenommen und nun laufen die zwei DS1820 \

/
Tobias
Hey Super
Also ich hab mal noch die Subroutinen eingefügt und das ganze ein bischen schneller gemacht (durch skip_rom). Da geht das ganze merklich schneller. Vor allem, wenn es mal die 2 Senoren übersteigt:
Code:
'Ausschnitt aus dem Listing
'#######################
'Programm starten
Do
Gosub Convert_temp
Gosub Read_temp1 'Springe zum Subprogramm
Gosub Read_temp2 'Springe zum Subprogramm
Print T4 "°C "
Print T5 "°C "
Loop
'#####################################
'Sub Convert_Temp
Sub Convert_temp
1wreset
1wwrite &HCC 'Skip Rom
1wwrite &H44 'Convert Temp
Porta.6 = 1 'DQ High für Parasite Mode
Waitms 750 'alle DS konvertieren
1wreset
End Sub
'Sub Read_temp1
Sub Read_temp1
1wreset
1wwrite &H55 'Match Rom
1wwrite Id1(1) , 8 'DS1820 ID senden
1wwrite &HBE 'Read Scratchpad
Ar1(1) = 1wread(9) 'Temp Wert auslesen
1wreset
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 , "#.#")
End Sub
'Sub Read_temp2
Sub Read_temp2
1wreset
1wwrite &H55 'Match Rom
1wwrite Id2(1) , 8 'DS1820 ID senden
1wwrite &HBE 'Read Scratchpad
Ar2(1) = 1wread(9) 'Temp Wert auslesen
1wreset
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 , "#.#")
End Sub
Der letzte Schliff wäre jetzt noch, aus dem Read_temp1 und Read_temp2 eine Subroutine zu machen.
Wie sieht´s aus?
Soll mers anpacken?
Grüße Eisbaeeer
Lesezeichen