DS1820 Adresse auslesen

Gast #1862437
Lesenswert?

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
#1862469
Lesenswert?

Hallo,

1wsearchnext() ist wohl eine in Bascom integrierte Funktion?

kannst du denn eine Temperatur auslesen?

:was mir sonst noch so auffällt ...
*ein Array mit 8 Byte geht von 0 bis 7 (berichtige mich wenn das bei 
Bascom anders ist)
*die gefundene Sensoradresse wird bei dir immer dem Feldelement mit dem 
Index 1 zugewiesen!

Sascha
Gast #1862496
Lesenswert?

Hallo,

ja genau. Sie ist in Bascom integriert..

1. Ne, bei Bascom geht das erst bei 1 los und dann bis 8.
2. Ja, und die restlichen Bytes werden dann den folgenden Feldelementen 
zugeteilt ;)

Wolfgang
Gast #1862511
Lesenswert?

Du hast "10 Sekunden warten" als Kommentar, wartest aber 5 Sekunden.
Stimmt der Takt von 8 Mhz?

Ich glaube, man muß den Pin, an dem die Sénsoren hängen angeben:

Horst= 1wsearchfirst(Pinc.5)

MfG Paul

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren