Hi,
ich hol den Thread mal wieder aus der versenkung.
Hat jemand von euch inzwischen das Auslesen von mehreren Ds1820 hinbekommen?
Ein Sensor ist kein Problem, aber bei zwei bekomm ich das irgendwie nichtmehr hin! Achja, der Sensor ist über drei Leitungen angeschlossen, also nicht im parasite modus!
Hier mal mein Code:
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

Config 1wire = Portb.0

Config Lcd = 40 * 4
Config Lcdpin = Pin , Rs = Portb.6 , Db4 = Portb.7 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , E2 = Portb.2


Dim ___lcdno As Bit
Dim T1 As Byte
Dim T2 As Byte
Dim I As Byte
Dim Id1 As Word
Dim Id2 As Word
Dim Ar1(2) As Byte
Dim Ar2(2) As Byte

 ___lcdno = 0
  Initlcd
  Cursor Off
  Cls

 ___lcdno = 1
 Initlcd
 Cursor Off
 Cls




Id1 = 1wsearchfirst()
Id2 = 1wsearchnext()

Do
1wreset                                                     'reset
1wwrite &H55                                                'Match Rom command
1wwrite Id1                                                 '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                                                 'id von sensor 1
1wwrite &HBE                                                'scratchpad lesen
Ar1(1) = 1wread(1)                                          'erstes byte auslesen, da steht Temp drin
Ar1(2) = 1wread(1)                                          'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen



1wreset                                                     'reset
1wwrite &H55                                                'Match Rom command
1wwrite Id2                                                 '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                                                 'id von sensor 2
1wwrite &HBE                                                'scratchpad lesen
Ar2(1) = 1wread(1)                                          'erstes byte auslesen, da steht Temp drin
Ar2(2) = 1wread(1)                                          'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen





 ___lcdno = 0


   Upperline
    Lcd "Temperatur 1:" ; Ar1(2) ; " " ; Ar1(1)

   Lowerline
    Lcd "Temperatur 2:" ; Ar2(2) ; " " ; Ar2(1)

 ___lcdno = 1

  Upperline
   Lcd "ID 1:" ; Id1
  Lowerline
   Lcd "ID 2:" ; Id2



Loop

Ich bekomme immer als wert für das erste Byte 255 und für das zweite auch 255, das kann ja nicht stimmen.
MfG
Florian