Hallo for_ro,
so, mit Deiner Hilfe hat es geklappt. Ich habe da wohl wirklich mehrfach auf dem Schlauch gestanden. Ich stelle den funktionierenden Code mal für den nächsten rein:
Code:
Messen:
For I = 1 To Sensoren
1wreset Pinc , I 'Reset DS1820
1wwrite &HCC , 1 , Pinc , I 'überspringe ROM
1wwrite &H44 , 1 , Pinc , I 'starte Temperaturkonvertierung
Next I
Return
Auslesen:
For I = 1 To Sensoren
1wreset Pinc , I 'Reset DS1820
1wwrite &HCC , 1 , Pinc , I
1wwrite &HBE , 1 , Pinc , I 'sende T-Register 60h und 61h an Atmel Ar(1) = 1wread(9 , Pinc , I)
Ar(1) = 1wread(9 , Pinc , I)
If Ar(9) = Crc8(ar(1) , 8) Then 'Prüfsumme OK?
Ds1820 = Makeint(ar(1) , Ar(2)) 'Ja, dann Temperatur berechnen
Else
Goto Fehler 'CRC Fehler -> naechster Sensor
End If
1wreset Pinc , I 'Reset DS1821
Halb = Ds1820 And 1 'prüfen auf letztes Bit (x.5 Grad)
Shift Ds1820 , Right 'entferne letztes Bit (Rechtsschieben)
Ds1820 = Ds1820 And 255 'Nur die unteren 8 Bit werden benötigt
If I = 1 Then
Tesp = Ds1820 'Ganzzahlige Temperatur der ESP (1 Byte) '
End If
Vorzeichen = " " 'Vorzeichen zurücksetzen
If Ds1820 > 127 Then 'wenn Temperatur negativ ist
Vorzeichen = "-"
Ds1820 = 256 - Ds1820 'und negative Temperatur berechnen
If Halb = 1 Then
Ds1820 = Ds1820 - 1 'wenn Wert x.5 dann um 1 korrigieren
End If
End If
If Halb = 1 Then
Nachkomma = "5" 'wenn x.5
Else 'wenn x.0
Nachkomma = "0"
End If
Temperatur = " " + Vorzeichen + Str(ds1820) '"-_-xxx"
Temperatur = Right(temperatur , 4) '"-xxx"
Temperatur = Temperatur + "." + Nachkomma + Chr(223) + "C" '"-xxx.y°C" 8 Zeichen
Sensor(i) = Temperatur
Fehler: 'CRC Fehler, alten Temperaturwert des Sensors behalten
Next I
Return
Danke und Gruß
Horst
Lesezeichen