Fix sleep problem reported by Gary Stofer.
This commit is contained in:
@@ -117,7 +117,7 @@ void powerDown(period_t period) {
|
|||||||
ADCSRA |= (1 << ADEN);
|
ADCSRA |= (1 << ADEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void MyHwATMega328::sleep(unsigned long ms) {
|
void MyHwATMega328::internalSleep(unsigned long ms) {
|
||||||
// Let serial prints finish (debug, log etc)
|
// Let serial prints finish (debug, log etc)
|
||||||
Serial.flush();
|
Serial.flush();
|
||||||
pinIntTrigger = 0;
|
pinIntTrigger = 0;
|
||||||
@@ -133,13 +133,17 @@ inline void MyHwATMega328::sleep(unsigned long ms) {
|
|||||||
if (!pinIntTrigger && ms >= 16) { powerDown(SLEEP_15Ms); ms -= 15; }
|
if (!pinIntTrigger && ms >= 16) { powerDown(SLEEP_15Ms); ms -= 15; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyHwATMega328::sleep(unsigned long ms) {
|
||||||
|
internalSleep(ms);
|
||||||
|
}
|
||||||
|
|
||||||
bool MyHwATMega328::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
bool MyHwATMega328::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
||||||
// Let serial prints finish (debug, log etc)
|
// Let serial prints finish (debug, log etc)
|
||||||
bool pinTriggeredWakeup = true;
|
bool pinTriggeredWakeup = true;
|
||||||
attachInterrupt(interrupt, wakeUp, mode);
|
attachInterrupt(interrupt, wakeUp, mode);
|
||||||
if (ms>0) {
|
if (ms>0) {
|
||||||
pinIntTrigger = 0;
|
pinIntTrigger = 0;
|
||||||
sleep(ms);
|
internalSleep(ms);
|
||||||
if (0 == pinIntTrigger) {
|
if (0 == pinIntTrigger) {
|
||||||
pinTriggeredWakeup = false;
|
pinTriggeredWakeup = false;
|
||||||
}
|
}
|
||||||
@@ -157,7 +161,7 @@ inline uint8_t MyHwATMega328::sleep(uint8_t interrupt1, uint8_t mode1, uint8_t i
|
|||||||
attachInterrupt(interrupt2, wakeUp2, mode2);
|
attachInterrupt(interrupt2, wakeUp2, mode2);
|
||||||
if (ms>0) {
|
if (ms>0) {
|
||||||
pinIntTrigger = 0;
|
pinIntTrigger = 0;
|
||||||
sleep(ms);
|
internalSleep(ms);
|
||||||
if (0 == pinIntTrigger) {
|
if (0 == pinIntTrigger) {
|
||||||
retVal = -1;
|
retVal = -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,5 +85,6 @@ public:
|
|||||||
void debugPrint(bool isGW, const char *fmt, ... );
|
void debugPrint(bool isGW, const char *fmt, ... );
|
||||||
#endif
|
#endif
|
||||||
private:
|
private:
|
||||||
|
void internalSleep(unsigned long ms);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -711,8 +711,8 @@ bool MySensor::sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) {
|
|||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
#endif
|
#endif
|
||||||
radio.powerDown();
|
radio.powerDown();
|
||||||
return hw.sleep(interrupt, mode, ms) ;
|
return hw.sleep(interrupt, mode, ms) ;
|
||||||
#ifdef MY_OTA_FIRMWARE_FEATURE
|
#ifdef MY_OTA_FIRMWARE_FEATURE
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user