www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1820 Adresse auslesen


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:

$regfile = "m8def.dat"
$crystal = 8000000

$swstack = 80
$hwstack = 50
$framesize = 50

$baud = 19200

Print "Start..."

' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von BASCOM durch Software realisiert
Config 1wire = Portc.5

Dim Dsid(8) As Byte
Dim I As Byte
Dim Nr As Byte

Nr = 1


' Ersten angeschlossenen DS1820 finden und Adresse auslesen
Dsid(1) = 1wsearchfirst()

Print "DS1820 Nr. " ; Nr : Nr = Nr + 1

For I = 1 To 8
 Print Hex(dsid(i))
Next

' 10 Sekunden warten
Wait 5

Do
 ' Nächsten DS1820 suchen
 Dsid(1) = 1wsearchnext()
 ' Wenn kein Fehler, dann ausgeben
 If Err = 0 Then
  Print "DS1820 Nr " ; Nr : Nr = Nr + 1
  For I = 1 To 8
   Print Hex(dsid(i))
  Next
  Wait 5
 End If
Loop Until Err = 1


Do
 Waitms 100
Loop

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

Autor: Sascha Weber (sascha_w)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 >.<

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.