Forum: Mikrocontroller und Digitale Elektronik DHT11 - AusleseRoutine in ASM30 (Assembler für PIC24 oder PIC30)


von Hans (Gast)


Angehängte Dateien:

Lesenswert?

DHT11 - Ausleseroutine für 16Bit-PIC-Controller  (hier 30F4011)
vielleicht spart es ja jemand Arbeit.


1.: Worum es sich handelt:
Dies ist eine "source"-File zur Programmierung eines Microcontrollers 
(Integrierter Schaltkreis) so dass dieser das Luftfeuchte-Messmodul 
DHT11 auslesen kann. dieses ist für 80ct o.ä. beim Chinesen erhältlich.
Es handelt sich um den Microcontroller Typ  DSPIC30F4011  von Microchip.
Ich verwende MPLAB IDE v8.90 zur Entwicklung des Programms und zur 
Programmierung des Controllers mit einem ICD2 -CLON Programmiergerät. 
(Variante "POTYO" in eigener Sub-Variante).
Neuere Versionen von MPLAB  sind längst erschienen, sie sind aber 
hauptsächlich mit Komplikationen hinsichtlich der Hardware etc. 
verbunden, wenig Verbesserungen für meinen Bedarf, soweit ich weiß.
Die File ist in Assembler programmiert und sollte mit geringen 
Anpassungen auf jedem PIC24 DSPIC30 laufen, da sie nur einen ST-IN/OUT- 
Port benötigt. und beide Typen in ASM30 programmiert werden.
andere Pics-Famillien z.B. PIC16 sind nicht mit diesem Programm 
kompatibel.
nicht alle PIC 30 sind mit dem ICD2-Brenner kompatibel.bei der Auswwahl 
darauf achten, welchen Brenner man verwenden will.
;---------------
Da diese File ein Ausschnitt aus einem größeren Programm ist, ist auch 
die Wahl der Bezeichnungen nicht immer ganz logisch, und es macht ev. 
überflüssige Dinge.
Der LOW-Power-Oszillator muss mit einem 32kHz Uhrenquarz bestückt werden 
-- aber nur, um den Timer2und das DHT-Programm mittels Timer 1 
sekündlich zu starten. In einem anderen Programm kann das natürlich 
anders bewerkstelligt werden.

; Farbübersicht :
;LED LATF,#0 ; =  rot
;LED LATF,#1 ; = grün
;LED LATF,#4 ; =   gelb
;LED LATF,#5 ; =   blau

Der DHT11  selber  hängt bei mir an PORTF,#6. Er braucht einen Pull-Up 
(z.B. 1,8 kOhm nach +5V,)sowie einen Masse und einen +5V-Anschluss. 
kommt aber auch mit etwas niedrigerer VDD klar.(3V-5,5V)
LED an PORTF,#2 und #3 würden mit dem ICSP-Anschluss interferieren, sind 
aber im Prinzip möglich.
;--------------------------
2. Die Funktion:

;Luft-Feuchte - Messung:

;Aus dem DHT11 Datenblatt:   (Luftfeuchte und Temperatur-Mess-Modul, 
kleines blaues Kästchen mit Löchern)
Data consists of decimal and integral parts. A complete data 
transmission is 40bit, and the sensor sends higher data bit first.
Data format: 8bit integral RH data + 8bit decimal RH data + 8bit 
integral T data + 8bit decimal T data + 8bit check sum.
If the data transmission is right, the check-sum should be the last 8bit 
of "8bit integral RH data + 8bit decimal RH data + 8bit integral T data 
+ 8bit decimal T data".

eine Messung dauert etwa 34 Millisekunden. Dazu muss der T2-Interrupt 
mit dem Softwaremodul etwa 3400 mal mit 10usec Zeitabstand aufgerufen 
werden.



Zum WEiterprogrammieren:
;Ausgangsgrößen:

;LftFeucBinaerReg
;LftFeucBCDReg
;LftTempBinaeerReg
;LftTempBCDReg
; MyFlags3,#3 ; Start-Flag für DHT11-Abfragung. 1= Abfragung ist grade 
am laufen  0=Messdaten verfügbar, falls gut.
; MyFlags3,#10 ;1= Messdaten-gut-FLAG  /  0=Messdaten z Zt nicht 
verfügbar, oder verwertbar


derzeitige Funktionalität:
gelbe LED blinkt, wenn Hauptschleife läuft
blaue LED blinkt sekündlich, wenn Daten vom DHT11 korrekt empfangen 
wurden und den Checksum Test bestanden haben.
Rote LED geht bei Temperaturen über 26 Grad Celsius an,
Grüne LED geht bei rel Luftfeuchte über 54% an.

Diese Auszugsfile ist geprüft und läuft auf meiner Hardware mit allen 
Funktionen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.