Hallo zusammen,
ich möchte auf einem ATmega8A den Temperatur/Feucht.sensor AM2302
(DHT22) zum Laufen bringen. Ich habe aus diesem Projekt
(Beitrag "Feuchtesensor AM2302/DHT22 avr-gcc") den Sourcecode
verwendet, um das Sensorsignal auszulesen. Verwendet habe ich dabei den
Teil, wo das Signal an sich ausgelesen wird. Der Code ist etwas geändert
worden, hauptsächlich wg. Port-Änderungen, zusätzliche Kommentare,
Debugging-Ausgaben und Timing-Anpassungen.
Der Funktionsaufruf "am2302()" läuft durch, allerdings sind alle
ausgelesenen Bits "1". Das ist mein aktuelles Problem. Im Datenblatt
(http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf)
wird davon gesprochen, dass wenn das Sensorsignal des AM2302 dauerhaft
auf VCC ist, die Verdrahtung nicht korrekt ist. Wenn das der Fall wäre,
würde aber der Aufruf "am2302()" einen anderen Fehler werfen.
Für diesen Fehler konnte ich online keine Hilfe finden. Mein MCU-Aufbau
ist als Eigenbau anhand des AVR-Tutorials entstanden. Der Code leider
gemischt-sprachig kommentiert, dank der Verwendung von Code-Snippets
unterschiedlicher Quellen.
Im Programm müsste in Z. 125 (am2302.c) das Sensorsignal immer auf VCC
sein; an anderer Stelle wird das Bit nicht positiv gesetzt. Beim delay
in Z. 120 habe ich verschiedene Zeiten versucht. Laut Datenblatt steht
der Pegel für logisch "0" 26-28us auf VCC, für logisch "1" steht er
~70us auf VCC.
Als externen Pull-Up Widerstand habe ich 1.1k, 4.7k und 10k ausprobiert.
Ich habe vier verschiedene Sensoren durchprobiert, mit allen zeigt sich
ein identisches Verhalten.
Danke für eure Hilfe,
Ferdinand