DHT22 bzw. DHT11 - Problem - Luftfeuchtigkeit - Sensor - C-Code

OP #3068027
Lesenswert?

Hallo,

ich bin neu hier als Mitglied und auch neu in der µC-Programmierung. 
Daher seht mir bitte nach, dass mein Code vermutlich noch nicht sehr 
sauber ist.
Ich habe mich an die Programmierung des Luftfeuchtigkeitssensors DHT22 
gemacht. Und eigentlich funktioniert auch alles soweit, aber es kommen 
keine richtigen Werte heraus und ich kann seit Tagen keinen Fehler mehr 
finden. Ich habe mir auch schon andere Code-Beispiele angeschaut aber 
auch dann finde ich bei meinem Code keinen Fehler, zum verzweifeln.
Zum Code: Er ist soweit geschrieben, dass er mir die übertragenen 
Binär-Werte auf einem LCD-Display ausgibt.
Das Problem ist, dass er immer nur konstant folgende Werte auf dem LCD 
ausspuckt, auch wenn ich ihn 1min lang anhauche obwohl er etwa alle 6 
Sekunden eine Messung durchführt:

10000000
10000000
00000000
10000000
10000000    Checksumme

Den LCD-Display-Code habe ich nicht mit dazugepackt weil der problemlos 
funktioniert.
Da das Programm auch ganz durchläuft kann es auch nicht sein, dass er 
irgendwo in einer while-Schleife hängen bleibt. Wenn ich die 
for-Schleife 40 mal statt 39 mal durchlaufen lasse bleibt er auch 
erwartungsgemäß hängen. Also muss er die 40 Datensignale genau 
empfangen. Aber warum gibt er dann so konstante Werte aus?
Ich bin für jeden Tip sehr dankbar und werde den Code natürlich sobald 
er grundsätzlich funktioniert noch deutlich weiter verbessern evtl. auch 
mit einem Timer. Und dann natürlich auch hier zur Verfügung stellen.

Nur gerade verzweifel ich total weil ich einfach nicht mehr weiß wo ich 
noch ansetzen könnte um den Fehler zu finden.
Angehängte Dateien:
OP #3068066
Lesenswert?

Ok, da muss ich mich wenn ich deinen Code richtig verstehe, wie gesagt 
bin recht neu in der µC-Programmierung, in die Timer-Programmierung 
einarbeiten. Das hatte ich ohnehin vor, allerdings wird es etwas länger 
dauern.
Ich würde trotzdem gerne wissen wo der Fehler bei meinem Code ist, denn 
ich will ja besser werden und meine Fehler erkennen und dann möglichst 
nie wieder machen. Daher wäre ich sehr dankbar, wenn jemand auch meinen 
Code auf Fehler überprüft.
OP #3068154
Lesenswert?

Ok, ich habe deinen Code bei mir eingearbeitet (siehe Anhang). Und jetzt 
gibt er das erste Datenbyte so aus:

00000001

Also gleiches Problem, nur die 1 ist jetzt im niedrigsten Bit. Das macht 
doch keinen Sinn. Ich weiß einfach nicht weiter.
Trotzdem danke für die Hilfe, ist ja recht einfach mit dem Timer, aber 
ich weiß einfach nicht wo es jetzt noch hakt.
Angehängte Dateien:
OP #3068159
Lesenswert?

Hat vielleicht noch jemand eine Idee woran es liegen könnte?
Der µC ist sonst eigentlich richtig angeschlossen und taktet auch 
richtig. Hab vorher eine Uhr drauf programmiert, die sehr genau lief. 
Und habe am Aufbau dann nichts geändert außer den DHT22 anzuschließen. 
Also kann es auch nicht an einer falschen Zeitgenerierung bzw. 
µC-Installation liegen.
OP #3068193
Lesenswert?

Danke für den Hinweis. Wusste ich nicht, werde es aber in Zukunft 
berücksichtigen.

Aber mein Startsignal ist doch 20ms auf Low-Pegel. Im Datenblatt stehen 
zwei widersprüchliche Angaben drin: Im Text steht mind. 18 ms und in der 
Grafig steht mind. 500µs. Aber dann müsste ich mit 20ms auf der sicheren 
Seite sein, oder hab ich grad wirklich Kakao im Kopf und sehe die 
offensichtlichen Fehler nicht mehr?
OP #3068215
Lesenswert?

Ich glaube es funktioniert mit deinem Code, Dario. Jetzt habe ich sich 
verändernde Bytes. Werde den Code jetzt mal weiter schreiben und dann 
sehe ich ja ob die Werte Sinn machen.
Also schon mal vielen Dank für die Hilfe. Werde den Code wenn er funzt 
dann nochmal reinstellen da man für den DHT22 bzw. 11 nicht wirklich 
viel findet im Netz.

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