www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit DS1820 an ATMega8


Autor: Christian Rauhut (christianr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe ein Problem mit dem Temperatursensor. Und zwar rufe ich 
nacheinander folgende Funktionen auf:

reset_pulse
skip_rom
convert_t
reset_pulse
skip_rom
read_scratchpad
reset_pulse


Dabei stelle ich fest, das er darin hängenbleibt. Hab erstmal einzeln 
getestet, reset_pulse, skip_rom, und read scratchpad verursachen keine 
Dauerschleife und laufen normal durch, woraus ich schließe dass sie auch 
richtig sind. Hab den Quellcode hier aus dem Forum:

reset_pulse:
  sbi ddrd, 0        ;pd0 als ausgang
  cbi portd, 0
  rcall wait500us        ;mcu hält bus für mindestens 480us low
  cbi ddrd, 0        ;lässt den bus los, geht in rx-mode
  rcall wait70us        ;wartet 70 us

  wait_presence_pulse:
  sbic pind, 0
  rjmp wait_presence_pulse    ;wartet auf presence pulse

  wait_presence_pulse_end:
  sbis pind, 0
  rjmp wait_presence_pulse_end     ;wartet bis presence pulse fertig

  rcall wait410us        ;wartet 412 us


ret
skip_rom:          ;gibt den befehl "Skip Rom" an den
  ldi temp1, 0xCC        ; sensor aus
  mov befehl, temp1
  rcall write_command
ret

Bei convert_t wird nun allerdings eine Dauerschleife erzeugt, wodurch 
das ganze Programm natürlich hängenbleibt.

convert_t:          ;gibt den befehl "Convert T" an den
  ldi temp1, 0x44        ; sensor aus
  mov befehl, temp1
  rcall write_command

  cbi portd, 0
  sbi ddrd, 0        ;bus low für 6us
  rcall wait6us
  cbi ddrd, 0        ;bus loslassen
  rcall wait9us        ;nach 9us samplen
  convert_t_1:
  sbis pind, 0        ;wartet bis conversion zu ende ist
  rjmp convert_t_1
ret

Im Datenblatt steht jetzt noch was davon, dass ich bei parasite power 
noch für die Zeit t_conv was machen soll.

Habe das Teil als Parasite Power angeschlossen. Worauf muss ich da beim 
Programmieren achten wen ich parasite power, bzw. external supply hab ?

Kann mir konkret einer bei dieser Funktion sagen was an der Funktion 
falsch ist, oder warum es bei parasite power evtl. nicht läuft ?

Danke,
ChristianR

Autor: Denis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gib mal ds1820 in die suche ein ;)
wurde hier sehr oft behandelt

Autor: Christian Rauhut (christianr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ich schon, stoße da aber auch immer wieder auf den selben quellcode. 
Wo ich nur nicht so ganz durchblicke ist das mit external power supply 
und parasite power, und welche Unterschiede ich dann beim programmieren 
beachten muss

ChristianR

Autor: Christian Rauhut (christianr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir denn hier keiner weiterhelfen??
Hat denn jemand einen DS1820 verbaut und mittels Assembler programmiert 
?? Vielleicht könnte ich mir da die genaue Beschaltung und die 
Programmierung anschauen.

Danke,
ChristianR

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du diesen Code: Beitrag "Mehrere DS1820/DS18B20 auslesen"
den du immer gefunden hast? der geht doch bestimmt.

"parasite -powered" heißt - wie der Name sagt, dass der Sensor seine 
Versorgung aus der Datenleitung "zieht". Das Datenblatt sagt dazu, dass 
du den Sensor NICHT während der Messung pollen darfst!, du musst diese x 
_m_s -ja richtig ms, also eine halbe Ewigkeit ;) abwarten musst, bis der 
sensor fertig ist und in der Zeit darf nichts auf dem Bus passieren.

Autor: Christian Rauhut (christianr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SO jetzt klappst, den Quellcode hatte ich hier nicht gefunden. Aber da 
sehe ich wie es gemacht wird, nämlich sehr viel einfacher. Ich sende 
einfach den Convert Befehl, ziehe dann die Spannung für den DS1820 hoch 
(parasitepower) und warte einfach 500ms und nicht wie vorher dass ich 
solange warte bis ich eine "Antwort" vom DS1820 bekomme.

Danke,
CHristianR

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei "parasite power" gibt der Sensor auch keine Antwort..

Aber schön das es geht :)
ps.: diie Suche nimmt auch * als joker, wenn man ähnliche Begriffe haben 
will
(z.B. "DS18*" ;) )

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.