The reading doesn't work with WiFi enabled
Just get timing errors
This commit is contained in:
@@ -53,6 +53,7 @@ uint32_t wait_for_signal_to_change_from(int signal_level) {
|
||||
|
||||
dht22_error dht22_read() {
|
||||
portDISABLE_INTERRUPTS();
|
||||
|
||||
/*
|
||||
* From datasheet:
|
||||
* - Host pulls low "beyond at least 1ms"
|
||||
@@ -73,8 +74,10 @@ dht22_error dht22_read() {
|
||||
uint32_t elapsed_time;
|
||||
elapsed_time = wait_for_signal_to_change_from(1);
|
||||
if (elapsed_time == DHT22_TIMEOUT_ERROR) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMEOUT_ERROR;
|
||||
} else if (elapsed_time > 40) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMING_ERROR;
|
||||
}
|
||||
|
||||
@@ -86,15 +89,19 @@ dht22_error dht22_read() {
|
||||
|
||||
elapsed_time = wait_for_signal_to_change_from(0);
|
||||
if (elapsed_time == DHT22_TIMEOUT_ERROR) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMEOUT_ERROR;
|
||||
} else if (elapsed_time < 70 || elapsed_time > 90) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMING_ERROR;
|
||||
}
|
||||
|
||||
elapsed_time = wait_for_signal_to_change_from(1);
|
||||
if (elapsed_time == DHT22_TIMEOUT_ERROR) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMEOUT_ERROR;
|
||||
} else if (elapsed_time < 70 || elapsed_time > 90) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMING_ERROR;
|
||||
}
|
||||
|
||||
@@ -108,7 +115,9 @@ dht22_error dht22_read() {
|
||||
uint8_t data[5] = {0, 0, 0, 0, 0};
|
||||
for (uint8_t i = 0; i < 40; i++) {
|
||||
elapsed_time = wait_for_signal_to_change_from(0);
|
||||
if (elapsed_time == DHT22_TIMEOUT_ERROR || elapsed_time < 30 || elapsed_time > 70) {
|
||||
if (elapsed_time == DHT22_TIMEOUT_ERROR || elapsed_time < 30 ||
|
||||
elapsed_time > 70) {
|
||||
portENABLE_INTERRUPTS();
|
||||
return DHT22_TIMEOUT_ERROR;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user