Zitat 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