Ds1820 gibt mir immer gleichen Wert aus

#3909652
Lesenswert?

Hallo.
ich stehe vor einem Problem und tüftle jetzt schon ewig herum und kapier 
den Fehler nicht.

ich habe an einem ATMEGA8 am PortD.2 einen DS1820 angeschlossen mit 
welchem ich die Temparatur messen und auf einem Display ausgeben will. 
Das Programm habe ich teilweise übernommen und angepasst.
Nun bekomme ich bei fehlendem Sensor 127,9 Grad ausgegeben mit dem ich 
mich
ja noch anfreunden kann. Schliese ich den Sensor an gibt er mir 10.6 
Grad aus egal wie warm es ist.

Eine Verbindung zum Sensor besteht, ich habe nämlich den Resetpuls und 
den AntwortPuls sowie das Timing des Buses am Oszi nachgemessen und bin 
da ziemlich genau in den Datenblattangaben.

ich würde euch bitten mal über das Programm zu schauen vl fällt euch 
etwas auf.

Vielen herzlichen Dank im Vorraus

Marian
Angehängte Dateien:
#3909667
Lesenswert?

soll ichs euch lieber direkt einbinden? sind aber einige files. ich für 
meinen Teil hab nen virenscanner der up to date ist. also glaube ich 
nicht das die datei versäucht ist.

noch hinzufügen möchte ich der Prozessor läuft mit 1Mhz interner Takt
und der Sensor versorgt sich parasitär
Gast #3910200
Lesenswert?

fast gedacht!
Der Compiler gibt bei Deinem Programm Warnungen aus. Eine davon ist, das 
es in Problem mit F_CPU gibt.
F_CPU muss definiert sein, bevor die delay.h eingebunden wird.

Probier mal:

#define F_CPU 1000000L
#include <util/delay.h>
#3911602
Lesenswert?

Hallo :)

Danke für die schnelle Hilfe.
Das Problem ist gelöst :)

Ich habe nur einen Pullup und keinen wie im Datenblatt beschriebenen 
Strong Pullup berwendet. Jetzt ist ihm bei übermittlung der Daten der 
Strom ausgegangen.  Ich hab nun die Versorgung am Sensor angeschlossen 
und die Software läuft.
#3911796
Lesenswert?

Marian Guggenberger schrieb:
> Ich habe nur einen Pullup und keinen wie im Datenblatt beschriebenen
> Strong Pullup berwendet. Jetzt ist ihm bei übermittlung der Daten der
> Strom ausgegangen.

Der Sensor benötigt den Strong-Pullup nicht für die Datenübertragung, 
sondern nur während der eigentlichen Temperaturmessung. Für diese Zeit 
wird der 1-Wire-Pin des µC sinnvollerweise als Ausgang ung auf High 
geschaltet. Der AVR liefert dann also den höheren Strom über seinen Pin.

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