#include #include #include #include #define BLINK_TIME 0.5 // 1 second ISR(TIMER1_OVF_vect) { PORTB ^= _BV(PORTB5); // Toggle the LED TCNT1 = 65535 - (F_CPU / 1024 * BLINK_TIME); // Reset timer value } int main(void) { // Set PORTB5 as output DDRB |= _BV(DDB5); // Initialize TIMER1 value TCNT1 = 65535 - (F_CPU / 1024 * BLINK_TIME); // Set the prescaler to 1024 TCCR1B |= _BV(CS10) | _BV(CS12); // Enable TIMER1 overflow interrupt TIMSK1 |= _BV(TOIE1); // Enable global interrupts // sei(); // Enable global interrupts with style __asm__ __volatile__ ("sei"); while (1) { // Keep in mind that the sleep mode depth will affect the wake up time sleep_cpu(); // Deep sleep // set_sleep_mode(SLEEP_MODE_IDLE); // Idle sleep // sleep_mode(); // Sets the CPU to whatever mode was set } }