Forum: Mikrocontroller und Digitale Elektronik Problem mit DS1820 an ATMega8


von Christian R. (christianr)


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

von Denis (Gast)


Lesenswert?

gib mal ds1820 in die suche ein ;)
wurde hier sehr oft behandelt

von Christian R. (christianr)


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

von Christian R. (christianr)


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

von Joerg X. (Gast)


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.

von Christian R. (christianr)


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

von Joerg X. (Gast)


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*" ;) )

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.