#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/sleep.h>
void TimerInit();
/*
prescaller 8 , Xtal 16MHz
tick = 8/16Mhz= 0.5 us
delay=counter*tick
delay=counter*0.5us
untuk sampling rate 100 Hz maka Tsampling= 1/100 Hz= 10.000us = 10 ms
counter = 10.000/0.5us = 20.000 (ICR1)
*/
int main(void) {
DDRB |=_BV(DDB7); //LED output
TimerInit();
while (1)
{
if (TIFR1 & _BV(OCF1A))
{
PORTB ^= (1 << PB7);
TIFR1 |= _BV(OCF1A);
}
}
}
void TimerInit() {
TCCR1B |= _BV(WGM12)| _BV(WGM13); // CTC mode
TCCR1B |= _BV(CS11); // prescaller 8
ICR1 = 20000 ; // TOP 20.000
}