Hallo,
ich möchte mich nun mit dem DS1820 beschäftigen. Ich programmiere in
Bascom und versuche nun die Adresse des Sensors auszulesen. Mein Code
sieht folgendermaßen aus:
1 | $regfile = "m8def.dat"
|
2 | $crystal = 8000000
|
3 |
|
4 | $swstack = 80
|
5 | $hwstack = 50
|
6 | $framesize = 50
|
7 |
|
8 | $baud = 19200
|
9 |
|
10 | Print "Start..."
|
11 |
|
12 | ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von BASCOM durch Software realisiert
|
13 | Config 1wire = Portc.5
|
14 |
|
15 | Dim Dsid(8) As Byte
|
16 | Dim I As Byte
|
17 | Dim Nr As Byte
|
18 |
|
19 | Nr = 1
|
20 |
|
21 |
|
22 | ' Ersten angeschlossenen DS1820 finden und Adresse auslesen
|
23 | Dsid(1) = 1wsearchfirst()
|
24 |
|
25 | Print "DS1820 Nr. " ; Nr : Nr = Nr + 1
|
26 |
|
27 | For I = 1 To 8
|
28 | Print Hex(dsid(i))
|
29 | Next
|
30 |
|
31 | ' 10 Sekunden warten
|
32 | Wait 5
|
33 |
|
34 | Do
|
35 | ' Nächsten DS1820 suchen
|
36 | Dsid(1) = 1wsearchnext()
|
37 | ' Wenn kein Fehler, dann ausgeben
|
38 | If Err = 0 Then
|
39 | Print "DS1820 Nr " ; Nr : Nr = Nr + 1
|
40 | For I = 1 To 8
|
41 | Print Hex(dsid(i))
|
42 | Next
|
43 | Wait 5
|
44 | End If
|
45 | Loop Until Err = 1
|
46 |
|
47 |
|
48 | Do
|
49 | Waitms 100
|
50 | Loop
|
51 |
|
52 | End
|
Ich habe momentan nur einen Sensor auf dem Bus. Leider gibt mir dieses
Programm keine Adresse aus. Der "erste" Sensor hat immer die Adresse 00
00 00 00 00 00 00. Bei dem angeblich 2. Sensor (den es ja eigentlich gar
nicht gibt) ist das Ende immer ein anderes. Zum Beispiel:
00 00 00 00 00 00 00 80.
ich weiß einfach nicht mehr weiter. Die Beschaltung müsste richtig sein.
Ich benutze kein Parasite-Power.
Habt ihr noch Ideen?
Wolfgang