humidity sensor working with ms5611 and dallas on the same time

pull/2/head
Mateusz Lubecki 2018-04-21 00:24:14 +02:00
rodzic 12dc1cf9b6
commit 851919e1d7
3 zmienionych plików z 750 dodań i 742 usunięć

Plik diff jest za duży Load Diff

Wyświetl plik

@ -24,6 +24,7 @@
#define DHT22_STATE_DATA_DECD 13
#define DHT22_STATE_TIMEOUT 14
#define DHT22_STATE_DONE 15
#define DHT22_STATE_COMMS_IRQ 16
typedef enum dht22QF {
DHT22_QF_FULL,

Wyświetl plik

@ -60,8 +60,9 @@ void dht22_init(void) {
void dht22_comm(dht22Values *in) {
dht22_init();
dht22State = DHT22_STATE_COMMS;
currentBit = 0;
GPIO_Init(DHT22_PIN_PORT,&PORT_out);
GPIO_SetBits(DHT22_PIN_PORT, DHT22_PIN_PIN);
@ -100,6 +101,8 @@ void dht22_comm(dht22Values *in) {
EXTI->IMR |= 1 << 4;
NVIC_EnableIRQ(EXTI4_IRQn);
dht22State = DHT22_STATE_COMMS_IRQ;
delay_5us = DHT22_INTERRUPT_DURATION;
return;
/*
@ -110,16 +113,20 @@ void dht22_comm(dht22Values *in) {
void EXTI4_IRQHandler(void) {
EXTI->PR |= EXTI_PR_PR4;
bitsDuration[currentBit++] = DHT22_INTERRUPT_DURATION - delay_5us;
delay_5us = DHT22_INTERRUPT_DURATION;
if (currentBit >= 41) {
EXTI_Init(&exti_disable);
NVIC_DisableIRQ(EXTI4_IRQn);
currentBit = 0;
GPIO_Init(DHT22_PIN_PORT,&PORT_out);
GPIO_SetBits(DHT22_PIN_PORT, DHT22_PIN_PIN);
dht22State = DHT22_STATE_DATA_RDY;
DallasDeConfigTimer();
if (dht22State == DHT22_STATE_COMMS_IRQ) {
bitsDuration[currentBit++] = DHT22_INTERRUPT_DURATION - delay_5us;
delay_5us = DHT22_INTERRUPT_DURATION;
if (currentBit >= 41) {
EXTI->FTSR &= (0xFFFFFFFF ^ (1 << 4));
EXTI->IMR &= (0xFFFFFFFF ^ (1 << 4));
NVIC_DisableIRQ(EXTI4_IRQn);
currentBit = 0;
GPIO_Init(DHT22_PIN_PORT,&PORT_out);
GPIO_SetBits(DHT22_PIN_PORT, DHT22_PIN_PIN);
dht22State = DHT22_STATE_DATA_RDY;
DallasDeConfigTimer();
}
}
}