From 970795fe07022de0bf24695a3fa3bc50bb9b9b07 Mon Sep 17 00:00:00 2001 From: jachik Date: Tue, 10 Dec 2024 08:33:57 +0100 Subject: [PATCH 1/3] Break condition to avoid interrupt wdt timeout --- DHT.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DHT.cpp b/DHT.cpp index a48ac74..2b2020e 100644 --- a/DHT.cpp +++ b/DHT.cpp @@ -304,6 +304,12 @@ bool DHT::read(bool force) { for (int i = 0; i < 80; i += 2) { cycles[i] = expectPulse(LOW); cycles[i + 1] = expectPulse(HIGH); + + if (cycles[i]==TIMEOUT || cycles[i+1]==TIMEOUT){ + DEBUG_PRINTLN(F("DHT timeout waiting for data signal.")); + _lastresult = false; + return _lastresult; + } } } // Timing critical code is now complete. From cc4c7bacb3812092e81616f6552ee180b19b1bc4 Mon Sep 17 00:00:00 2001 From: jachik Date: Tue, 17 Dec 2024 14:24:46 +0100 Subject: [PATCH 2/3] Removed double timeout-check --- DHT.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/DHT.cpp b/DHT.cpp index 2b2020e..d3a11d6 100644 --- a/DHT.cpp +++ b/DHT.cpp @@ -318,11 +318,7 @@ bool DHT::read(bool force) { for (int i = 0; i < 40; ++i) { uint32_t lowCycles = cycles[2 * i]; uint32_t highCycles = cycles[2 * i + 1]; - if ((lowCycles == TIMEOUT) || (highCycles == TIMEOUT)) { - DEBUG_PRINTLN(F("DHT timeout waiting for pulse.")); - _lastresult = false; - return _lastresult; - } + data[i / 8] <<= 1; // Now compare the low and high cycle times to see if the bit is a 0 or 1. if (highCycles > lowCycles) { From 382f84a74ea2c862024588961f7a38caa3d50081 Mon Sep 17 00:00:00 2001 From: jachik Date: Tue, 17 Dec 2024 17:05:51 +0100 Subject: [PATCH 3/3] Code cosmetics --- DHT.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DHT.cpp b/DHT.cpp index d3a11d6..3cc7a2b 100644 --- a/DHT.cpp +++ b/DHT.cpp @@ -305,7 +305,7 @@ bool DHT::read(bool force) { cycles[i] = expectPulse(LOW); cycles[i + 1] = expectPulse(HIGH); - if (cycles[i]==TIMEOUT || cycles[i+1]==TIMEOUT){ + if (cycles[i] == TIMEOUT || cycles[i + 1] == TIMEOUT) { DEBUG_PRINTLN(F("DHT timeout waiting for data signal.")); _lastresult = false; return _lastresult;