Forum: Mikrocontroller und Digitale Elektronik DS18S20 --> Quellcode-Überprüfung


von Sven Scholz (Gast)


Angehängte Dateien:

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

von Peter D. (peda)


Lesenswert?

Nach dem Start mußt Du dem Chip auch Zeit geben, die Wandlung
durchzuführen, bevor Du auslesen kannst.


Peter

von Sven Scholz (Gast)


Lesenswert?

Was meinst du damit konkret?
Ich meine, ich warte ja schon etwas.
(siehe UP long_wait)

von Peter D. (peda)


Lesenswert?

"Ich meine, ich warte ja schon etwas."

Versuchs mal mit ner festen Wartezeit (1s).

Busy-waiting habe ich nie gemacht, da ich parasite power benutze.


Peter

von Andi K. (Gast)


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

von Sven Scholz (Gast)


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.

von Sven Scholz (Gast)


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.

von Profi (Gast)


Lesenswert?

Im Parasite-Power Mode muss der Vdd-Pin mit Gnd verbunden sein.

Oder man baut einen Pseudo-Parasite-Mode, mit Schottky-Diode von Data
nach Vdd und großem C von Vdd nach Gnd.

von Hauke Radtki (Gast)


Lesenswert?

So viel code für nur den einen sensor? also mein code is um einiges
kürzer ...

von Sven Scholz (Gast)


Lesenswert?

Hauke, hättest du etwas dagegen, deinen Code hier zu veröffentlichen
oder hast du vor, damit Geld zu machen?

von Andi K. (Gast)


Lesenswert?

@Sven Scholz: Den Wink von mir oben hast Du wohl nicht vernommen!
Dachte, es heißt hier "Quellcode-Überprüfung".

MfG
Andi

von Andi K. (Gast)


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

von Peter D. (peda)


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

von Hauke Radtki (Gast)


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.

von Sven Scholz (Gast)


Angehängte Dateien:

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.

von Sven Scholz (Gast)


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.

von Hauke Radtki (Gast)


Lesenswert?

hast du vielleicht mit deinem riesigen lötkolben den sensor geschrottet?
weil wenn er da hängt, kommt kein presence pulse ...

von Sven Scholz (Gast)


Lesenswert?

Nein, das Teil funktioniert. Kann ihn an einer anderen Schaltung
ausprobieren...

von Hauke Radtki (Gast)


Lesenswert?

Wie gesagt schick mir ma ne mail, dann geb ich dir den code ( der halt
noch nich ganz fertig ist)

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.