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
Nach dem Start mußt Du dem Chip auch Zeit geben, die Wandlung durchzuführen, bevor Du auslesen kannst. Peter
Was meinst du damit konkret? Ich meine, ich warte ja schon etwas. (siehe UP long_wait)
"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
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
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.
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.
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.
So viel code für nur den einen sensor? also mein code is um einiges kürzer ...
Hauke, hättest du etwas dagegen, deinen Code hier zu veröffentlichen oder hast du vor, damit Geld zu machen?
@Sven Scholz: Den Wink von mir oben hast Du wohl nicht vernommen! Dachte, es heißt hier "Quellcode-Überprüfung". MfG Andi
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
"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
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.
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.
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.
hast du vielleicht mit deinem riesigen lötkolben den sensor geschrottet? weil wenn er da hängt, kommt kein presence pulse ...
Nein, das Teil funktioniert. Kann ihn an einer anderen Schaltung ausprobieren...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.