mikrocontroller.net

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


Autor: Sven Scholz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Sven Scholz (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hauke Radtki (Gast)
Datum:

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

Autor: Sven Scholz (Gast)
Datum:

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

Autor: Andi K. (Gast)
Datum:

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

MfG
Andi

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Scholz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hauke Radtki (Gast)
Datum:

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

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das Teil funktioniert. Kann ihn an einer anderen Schaltung
ausprobieren...

Autor: Hauke Radtki (Gast)
Datum:

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

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.