Hallo,
ich bin neu hier und möchte mich erstmal vorstellen.
Ich bin 18 Jahre jung, Schüler an einer HTL im Zweig Elektronik. Besuche
zurzeit die 4.Klasse.
Kommen wir zum Eigentlichen; unzwar..
.. ich habe von meinem Lehrer einen Auftrag bekommen, welcher lautet;
ich solle einen DHT11 (Modul) programmieren dass er mir die Werte der
Luftfeuchtigkeit ausgibt auf einer 7Segment Anzeige.
WICHTIGE INFOS:
Welches Programm verwende ich? -> MPBLAB IDE v.8.92
Welchen PIC verwende ich? -> PIC16F883
Datenblätter:
http://www.micropik.com/PDF/dht11.pdf
Ich habe eine Vorstellung wie ich es theoretisch machen könnte jedoch
bin ich mir nicht ganz sicher.
Unzwar:
Der DHT11 bräuchte erstmals ein LOW dann HIGH Signal um zu erkennen das
er jetzt die Werte der Feuchtigkeit auslesen soll, erst dann schickt er
mir wieder an den PIC über die Schnittstelle "Data" die Signale inform
von HIGH,LOW die ich dann auslesen muss ob diese High oder low
waren/sind.
Das Problem ist hierbei: Der DHT11 sendet mir zuerst mal ein low Signal
welches 50µs andauert, erst dann kommen die DATEN die ich benötige in
welche die Feuchtigkeit der Luft enthalten sind. Das Signal "HIGH"
dauert hierbei 70µs. Dieses ist jedoch HIGH
Das Signal "LOW" dauert 26-28µs. Dieses ist jedoch auch HIGH
Da beide Signale High sind, ist es wichtig die Zeit des HIGH Signales
erstmal zu kennen, dabei müsste ich mit dem TIMER arbeiten, jedoch weiß
ich nicht genau wie dieser die Zeit auslesen soll und sie mir ausgibt.
Bitte um Hilfe, sollte bis Dienstag komplett fertig sein.
Ich bin bereit für Diskussionen, Vorschläge und Sonstiges anzunehmen.
Zurzeit bin ich soweit gekommen, nun kann ich nichts ausgeben da am
PORTB mein Modul hängt und ebenfalls die 7-Segmentanzeige, wie mache ich
dies am Besten...
1
; PROZESSOR: PIC16F883, Programmaufbau, Header einfach für Übungsboard seriell
2
; NAME:
3
; PROGRAMM:
4
5
;Programmbeginn
6
; Angaben für den Assembler ******************************************************
7
list p=16F883 ; Prozessortypdefinition
8
#include <P16F883.INC> ; Bibliothek einbinden
9
errorlevel -302
10
11
; Konfiguration für den Prozessor ************************************************
Dulkanovic K. schrieb:> Der DHT11 sendet mir zuerst mal ein low Signal> welches 50µs andauert, erst dann kommen die DATEN die ich benötige in> welche die Feuchtigkeit der Luft enthalten sind. Das Signal "HIGH"> dauert hierbei 70µs. Dieses ist jedoch HIGH> Das Signal "LOW" dauert 26-28µs. Dieses ist jedoch auch HIGH
Bitte nicht HIGH und LOW Pegel mit dem logischen Wert vermischen. Das
Bit-Frame mit LOW-HIGH codiert den logischen Wert des übertragenen Bits.
Bei logisch "0" dauert die HIGH Phase 26-28µs und bei "1" dauert sie
70µs.
Dulkanovic K. schrieb:> dabei müsste ich mit dem TIMER arbeiten,
Nicht zwingend. Man kann auch nach der Low-High Flanke 40µs in einer
Warteschleife warten und das Signal einfach abfragen.
Witkatz :. schrieb:> Dulkanovic K. schrieb:>> Der DHT11 sendet mir zuerst mal ein low Signal>> welches 50µs andauert, erst dann kommen die DATEN die ich benötige in>> welche die Feuchtigkeit der Luft enthalten sind. Das Signal "HIGH">> dauert hierbei 70µs. Dieses ist jedoch HIGH>> Das Signal "LOW" dauert 26-28µs. Dieses ist jedoch auch HIGH>> Bitte nicht HIGH und LOW Pegel mit dem logischen Wert vermischen. Das> Bit-Frame mit LOW-HIGH codiert den logischen Wert des übertragenen Bits.> Bei logisch "0" dauert die HIGH Phase 26-28µs und bei "1" dauert sie> 70µs.
Verwechselt wurde da nichts, gemeint war;
- Wenn das high Signal 70µs andauert = logisch 1
- Wenn das high Signal 24-27µs andauert = logisch 0
> Dulkanovic K. schrieb:>> dabei müsste ich mit dem TIMER arbeiten,>> Nicht zwingend. Man kann auch nach der Low-High Flanke 40µs in einer> Warteschleife warten und das Signal einfach abfragen.
Wenn ich das Programm kurz und bündig halten möchte dann wäre das
Arbeiten mit Timer vernünftiger.
Ich brauche ANTWORTEN und keine "falschen" Ergänzungen oder Kommentare.
Gruß,
Kris.