13.1.2 Wake-Up Using Interrupts

When global interrupts are disabled (GIE cleared) and any interrupt source has both its interrupt enable bit and interrupt flag bit set, one of the following will occur:

  • If the interrupt occurs before the execution of a SLEEP instruction:
    • The SLEEP instruction will execute as a NOP
    • The WDT and WDT prescaler will not be cleared
    • The TO bit will not be set
    • The PD bit will not be cleared
  • If the interrupt occurs during or after the execution of a SLEEP instruction:
    • The SLEEP instruction will be completely executed
    • The device will immediately wake up from Sleep
    • The WDT and WDT prescaler will be cleared
    • The TO bit will be set
    • The PD bit will be cleared

Even if the flag bits were checked before executing a SLEEP instruction, it may be possible for flag bits to become set before the SLEEP instruction completes. To determine whether a SLEEP instruction executed, test the PD bit. If the PD bit is set, the SLEEP instruction was executed as a NOP.