The following Table shows the different sleep modes and their wake-up sources.
Sleep Mode | Active Clock Domains | Oscillators | Wake-up Sources | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
clkCPU | clkFLASH | clkIO | clkADC | clkASY | Main Clock Source Enabled | Timer Oscillator Enabled | INT and PCINT | TWI Address Match | Timer2 | SPM/EEPROM Ready | ADC | WDT | Other I/O | |
Idle | Yes | Yes | Yes | Yes | Yes(2) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
ADC Noise Reduction | Yes | Yes | Yes | Yes(2) | Yes(3) | Yes | Yes(2) | Yes | Yes | Yes | ||||
Power-down | Yes(3) | Yes | Yes | |||||||||||
Power-save | Yes | Yes | Yes(2) | Yes(3) | Yes | Yes | Yes | |||||||
Standby(1) | Yes | Yes(3) | Yes | Yes | ||||||||||
Extended Standby | Yes(2) | Yes | Yes(2) | Yes(3) | Yes | Yes | Yes |
To enter any of the six sleep modes, the Sleep Enable bit in the Sleep Mode Control Register (SMCR.SE) must be written to '1' and a SLEEP instruction must be executed. Sleep Mode Select bits (SMCR.SM[2:0]) select which sleep mode (Idle, ADC Noise Reduction, Power-down, Power-save, Standby, or Extended Standby) will be activated by the SLEEP instruction.
If an enabled interrupt occurs while the MCU is in a sleep mode, the MCU wakes up. The MCU is then halted for four cycles in addition to the start-up time, executes the interrupt routine, and resumes execution from the instruction following SLEEP. The contents of the Register File and SRAM are unaltered when the device wakes up from sleep. If a reset occurs during sleep mode, the MCU wakes up and executes from the Reset Vector.