Forum: Mikrocontroller und Digitale Elektronik DS1820 Adresse auslesen


von Wolfgang (Gast)


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

von Sascha W. (sascha_w)


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

von Wolfgang (Gast)


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

von Paul Baumann (Gast)


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

von Wolfgang (Gast)


Lesenswert?

Hallo,

das mit dem Kommentar ist einfach nur falsch ;) Ich hab mit den 
Wartezeiten halt ein wenig rumgespielt.

Danke für den Tipp, das Ergebnis bleibt aber leider das Gleiche >.<

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.