Hi all,
I have the following code which constantly reboots my node when Interrupted by PIR.
Any idea why?
//#define MY_DEBUG_VERBOSE_SIGNING
//#define MY_SPLASH_SCREEN_DISABLED
// Enable and select radio type attached
#define MY_RADIO_RFM69
#define MY_RFM69_NEW_DRIVER
#define MY_RFM69_ATC_MODE_DISABLED
#define MY_RFM69_FREQUENCY RFM69_868MHZ
#define MY_PARENT_NODE_IS_STATIC
#define MY_PARENT_NODE_ID 0
#define MY_RFM69_NETWORKID (100)
#define MY_NODE_ID 3
#define INT_PIN 6
#define INT_PINN 7
#define SLEEP_TIME 9000000 // 15 min
uint32_t sleepTime = SLEEP_TIME;
int8_t wakeupReason = 0;
#include <MySensors.h>
void setup() {
Serial.begin(115200);
PCMSK2 |= bit(PCINT22);
PCMSK2 |= bit(PCINT23);
PCIFR |= bit(PCIF2); // clear any outstanding interrupts
PCICR |= bit(PCIE2); // enable pin change interrupts for D0 to D7
delay(2000);
pinMode(INT_PIN, INPUT);
pinMode(INT_PINN, INPUT);
}
void loop() {
if (wakeupReason == digitalPinToInterrupt(INT_PIN) || wakeupReason == digitalPinToInterrupt(INT_PINN)) {
Serial.println("Sleep Interrupted!");
digitalWrite(9, HIGH);
delay(20);
digitalWrite(9, LOW);
// Report sensor status here
} else if (wakeupReason == MY_WAKE_UP_BY_TIMER) {
Serial.println("MY_WAKE_UP_BY_TIMER");
// Report battery level here
}
wakeupReason = sleep(digitalPinToInterrupt(INT_PIN), CHANGE, digitalPinToInterrupt(INT_PINN), CHANGE, sleepTime);
}


