DS18S20 --> Quellcode-Überprüfung

Gast #212473
Lesenswert?

Hallo,

beschäftige mich zurzeit ein wenig mit Mikrocontrollern und habe nun
versucht einen DALLAS DS18S20 an meinen ATmega8 anzuschließen. Im Netz
habe ich einen Quellcode gefunden und diesen dann auch verwendet.

Den Sensor habe ich an den Pin PC6 gelegt, da dieser gerade frei war.
Habe ihn so angeschlossen wie man in der Datei Verbindung.jpg sehen
kann.

Doch irgendwo hängt jetzt das Programm. Da ich leider noch keine RS232
Schnittstelle realisiert habe, ist die Fehlersuche jetzt ziemlich
mühselig. Ich schicke deshalb auch noch meinen bisherigen
angepassten Quellcode mit.

Die Unterprogramme habe ich an mein Projekt angepasst, also die
Port-Definition und so weiter geändert. Wäre nett, wenn ihr das mal
kontrollieren könntet. Vielleicht ist mir dabei ja irgend ein blöder
Fehler unterlaufen...


Vielen Dank schon mal. Ich weiß echt nicht mehr weiter und kenne sonst
auch niemanden, der sich mit der Materie auskennt.

Mit frendlichen Grüßen,
Sven Scholz
Angehängte Dateien:
Gast #212477
Lesenswert?

Was denn das für´n Stil?

get_temp:
 push R24
 lds R24, 0x0060
 mov R1, R24;
 lds R24, 0x0061
 mov R0, R24;
 pop R24;
 ret

Warum nicht gleich wie folgend im Main ohne Sub:

 lds R1, 0x0060
 lds R0, 0x0061

Oder besser mit Marken (Variablenbezeichner) im SRAM:

 lds R1, Temp
 lds R0, Temp+1

.dseg
Temp: .byte 2     ;Temp.-Variable im SRAM (16 Bit)

MfG
Andi
Gast #212478
Lesenswert?

Also ich bin mir auch immer noch nicht sicher, ob ich überhaupt meinen
Sensor richtig angeschlossen habe.

Also ich habe jetzt Definitiv nur 2 Pins vom DS18S20 angeschlossen. Vdd
ist bei mir völlig entfallen. GND geht auf Ground, logisch und DATA
liegt an PC6.
Dazu kommt noch ein Widerstand (4,7kOhm) von Vcc nach DATA.

Fertig.
Gast #212479
Lesenswert?

wait_presence_pulse_end:
  sbis pinc, 6
  rjmp wait_presence_pulse_end     ;wartet bis presence
pulse fertig

Also, das ding erzeugt bei mir irgendwie eine Endlos-Schleife. Das
Programm kommt darüber nicht hinaus. Also wie gesagt, der Sensor ist an
PIN C6 geschaltet.

Ist die Zeile
                sbis pinc, 6

denn so korrekt?

Siehe auch Beitrag drüber...

DANKE.

Wenn die Zeile so stimmt, sieht es halt so aus, dass sich der Sensor
nicht meldet. Wie gesagt ich vermute, dass da irgendwas mit meinem
Anschluss nicht stimmt.
Gast #212484
Lesenswert?

Hast Du nun wirklich den DS18S20 an PC6 (RESET) angeschlossen?
Sofern Dein Mega8 noch über "serial downloading" programmierbar ist,
geht das nicht.
Auch mit dem Fuse RSTDSBL ist PC6 eingeschränkter als die anderen
Pins.
Versuche es mal an einen anderen Pin.

MfG
Andi
#212485
Lesenswert?

"Also ich habe jetzt Definitiv nur 2 Pins vom DS18S20 angeschlossen.
Vdd
ist bei mir völlig entfallen. GND geht auf Ground, logisch und DATA
liegt an PC6.
Dazu kommt noch ein Widerstand (4,7kOhm) von Vcc nach DATA."


Also daran ist ja nun alles falsch !

Wenn Du VDD nicht beschaltest, geht gar nichts.

VDD muß mindestens an GND, aber dann kannst Du das Busy-Bit nicht
abfragen, sondern mußt während der gesamten Wandlung VCC (max 1mA) an
DQ anlegen.

Warum schaust Du nicht einfach mal ins Datenblatt, da sind doch beide
Schaltpläne drin (mit VDD oder mit parasite power).


Peter
Gast #212486
Lesenswert?

Mein code is noch nicht perfekt ... ich benutz z.b. noch keine timer für
 die warteschleifen ... wenn er komplett fertig ist, werde ich ihn In
der COdesammlung veröffentlichen. Du kannst mir ja mal ne mail
schreiben, dann kann ich dir den code auch schon mal so geben.
Gast #212487
Lesenswert?

Also im Internet habe ich mich im Vorfeld ja mehr oder weniger schlau
gemacht und folgende Schaltung gefunden... (siehe Anlage)

Konnte ja nicht ahnen, dass Vdd völlig weggelassen wurde...
Hatte mir schon gedacht, dass das so niemals laufen wird, deshalb habe
ich ja hier nochmals nachgefragt.

Gut, also so wie es aussieht kann ich Pin C6 wohl nicht benutzen. Dann
werde ich jetzt die eine Verbindung umlöten und werde es mit dem nächst
besten Pin - wie sieht es mit Pin C0 aus? - versuchen.
Hat jemand noch irgendwelche Einwände, bevor ich meinen riesigen
Lötkolben schwinge. :-)

Danach werde ich den Quellcode natürlich anpassen müssen. Also überall
wo etwas mit DDRC, 6 oder so steht, DDRC 0 umtaufen.

Mal schauen was passiert...

DANKE, für eure ANTWORTEN, hoffentlich komme ich ein Stückchen weiter.
Angehängte Dateien:
Gast #212488
Lesenswert?

Das Programm hängt immernoch in der Schleife fest.

Ich habe zwischen GND (Vdd) und DATA die Spannung von 5V gemessen.

Wenn ich im Betrieb den Sensor kurzzeitig abziehe und dann wieder
anklemme, geht das Programm auch ordnungsgemäß weiter. Im Display
erscheint dann 0000, weil ja die Messung nur von mir simuliert worden
ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren