#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
void TimerInit();
unsigned char periode;
ISR (TIMER0_OVF_vect)
{
PORTB ^= (1 << PB7);
TCNT0= - 50;
}
/*
prescaller 8 , Xtal 16MHz
tick = 8/16Mhz= 0.5 us
delay=counter*tick
delay=counter*0.5us
counter=delayus/0.5us
untuk sampling rate 8 khz maka Tsampling= 1/40Khz= 25us
counter = 25/0.5us = 50
nilai TCNT1= -250 -> karena counter up
*/
int main(void) {
DDRB |= _BV(PB7);
TimerInit(); /// schedule 10ms
sei();
/// enable global interupsi
while (1) {
sleep_mode(); // sleep
}
}
void TimerInit(void) {
// TCNT0 = -250; // reset counter
TCCR0B = (1 << CS01) ; //prescaller 8
TIMSK0 |= (1 << TOIE0); // enable overflow interrupt
}