mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS18S20 returned nur 255


Autor: Daniel J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe einen DS18S20 der leider irgendwie nur 255 returned (bei allen 
Werten, also jedes Byte), egal ob V++ / GND angeschlossen sind, ob im 
Parasite-Mode und erst recht ganz egal wieviele Sleeps ich einbaue.

Programmiere in Bascom.

Wäre für Ideen und Vorschläge dankbar!

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne weitere Details wird dir keiner helfen können.
Was für einen Controller nutzt du? Wie sehen Schaltung und Quelltext 
aus?

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,

255 ist in Bascom das Ergebniss wenn es kein Ergebniss gibt. Also auch 
wenn er nicht angeschlossen ist, gibt 1wread() 255 aus.
Mein Funktionierender Code auf AVR, die beiden routinen werden im 
Abstand von einer Sekunde aufgerufen:

Messen:
Config 1wire = Porta.1
1wreset
Disable Interrupts           'wirklich noetig(?)
1wwrite &HCC                 'Adresse ueberspringen da nur ein Sensor
Waitms 1
1wwrite &H44                 'Temp messen
Enable Interrupts
Read_state = 1
Return

Auslesen:
Config 1wire = Porta.temp2
Disable Interrupts
1wreset
1wwrite &HCC
1wwrite &HBE                 'Temperatur soll ausgelesen werden
Scratch_1(1) = 1wread(8)     'Auslesen von 8 Byte
1wreset
Enable Interrupts
Temperatur = Scratch_1(1)    'Positiver Tempwert
Read_state = 0
Return

Es haengt nur ein Sensor dran, am Pin, also keine Adressierung.
HTH, bye Uwe

Autor: Stephan B. (s_bronco)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meiner funktioniert garantiert auch, werden im Abstand von 500ms 
aufgerufen, erst reset um die Messung auszulösen, dann 500ms später, 
Daten abholen und umrechnen, so ergibt zB. 32°C den Wert 320.
Es werden 3 Leitungen abgefragt, kann auch auf eine begrenzt werden.
Der Grund für 3 war, kein Mensch kann bei 6 Sensoren (2x3) wissen, 
welcher jetzt diese ganz spezielle 64Bit SerNr hat, bei 3 Leitungen/ 
Pins weiß ichs.

Der Ursprüngliche Code stammt nicht von mir, sondern ist von hier ausm 
Forum.


Sub 1wire_reset                                             '  1Wire 
RESET
   For Ch = 1 To 3
      A = Ch - 1
      1wreset PinD , Ch
      1wwrite &HCC , 1 , PinD , A
      1wwrite &H44 , 1 , PinD , A
   Next
End Sub

'******************************************************
Sub 1wire_read                                              ' DS1820 
readout
   For Ch = 1 To 3
      A = Ch - 1
      1wreset PinD , A
      1wwrite &HCC , 1 , PinD , A
      1wwrite &HBE , 1 , PinD , A
      Ds_read(1) = 1wread(9 , PinD , A )
      1wreset PinD , A
      If Flag.2 = 1 Then                                    ' nur beim 
Regeln alte Werte speichern
         Lasttemp(ch) = Currenttemp(ch)
      End If
      Ds_temp1 = Ds_read(1) And 1
      If Ds_temp1 = 1 Then Decr Ds_read(1)
      Ds_temp1 = Makeint(ds_read(1) , Ds_read(2))
      Ds_temp1 = Ds_temp1 * 50
      Ds_temp1 = Ds_temp1 - 25
         Ds_temp2 = Ds_read(8) - Ds_read(7)
         Ds_temp2 = Ds_temp2 * 100
         Ds_temp2 = Ds_temp2 / Ds_read(8)
            Ds_temp1 = Ds_temp1 + Ds_temp2
            Currenttemp(ch) = Ds_temp1 / 10
   Next
End Sub
'******************************************************

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.