-
Only interrupt modes LOW
and HIGHare guaranteed to wake the device up from sleep mode. -
If the PIR pulls the input low for a short while before letting it go high again, the mcu will wake up from sleep mode but will not execute the ISR.
-
Never do a Serial.print from an ISR.
I suggest you make the following changes to your code:
-
Use interrupt mode LOW instead of CHANGE.
-
Move the Serial.println("Woke Up") line into loop(), immediately after the sleep call.
-
Have the ISR do a detachInterrupt and nothing else.