#include <avr/io.h>
void TimerInit();
unsigned char periode;
/*
prescaller 8 , Xtal 16MHz
tick = 8/16Mhz= 0.5 us
delay=counter*tick
delay=counter*0.5us
untuk sampling rate 16 khz maka Tsampling= (1/16Khz= 0,0000625us) => (0,0000625 * 1.000.000 = 62,5us)
untuk sampling rate 20 khz maka Tsampling= (1/20Khz= 0,00005us) => (0,00005 * 1.000.000 = 50us)
counter = (62,5/0.5us = 125)
counter = (50/0.5us = 100)
nilai TCNT1= -250 -> karena counter up
nilai TCNT1= -100-> karena counter up
*/
int main(void) {
DDRB |= _BV(PB5);
TimerInit();
while (1) {
if (TIFR0&(1<<TOV0)) {
TCNT0= (unsigned char)-250;
//clear flag
TIFR0|=(1<<TOV0);
PORTB ^= (1 << PB5);
}
}
}
void TimerInit(void) {
TCNT0 = (unsigned char) -250; // reset counter
TCCR0B = (1 << CS01) ; //prescaller 8
}