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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.