I'm using i2c and SPI peripherals and switching off the UART, TIMER1 and TIMER2 along with ADC and BOD in the IDLE mode! I cannot achieve powerDown mode because Im not able to wake up from it! and maybe thats because I don't have a Oscillator aboard as I'm running ATmega328p on 8Mhz internal oscillator.
millis() depends on that TIMER0 so can't switch it off as I'm also using it, but this poses another overhead that the uC wakes up every millisecond.
If I power Down it then interrupts wake the uC but...but.. for some time , I think the power down deads all clocks and because of that the millis() etc elements that my code uses workout till getting overfload!!!!!
but still it maybecome a bit undependable in case the Interrupt source registers aren't cleared all fine, although I cleared it but ppl seem to have problem of INT1 or INT2 pin being high even when no interrupt is there and also the Source registers are cleared up.