* return PC after latest sleep_mode() call */
EMPTY_INTERRUPT(SIG_COMPARATOR);
-ISR(TIM0_OVF_vect)
+ISR(TIM0_COMPA_vect)
+{
+ xvar++;
+}
+ISR(TIM0_COMPB_vect)
{
xvar++;
}
-/* for debugging purposes */
-ISR(BADISR_vect)
+ISR(TIM0_OVF_vect)
{
+ //xvar++;
}
int main(void)
{
-
init_board();
-
- xvar = 1;
+ xvar = 1;
cli();
- TCCR0A = 0x00;
- TCCR0B = (1 << CS00) | (1 << CS02);
+ DDRB |= (1 << DDB0); /* set PB0 as output */
+ TCCR0A = TCCR0B = 0;
+ TCCR0A |= (1 << WGM01) | (1 << WGM00) | (1 << COM0A1);
+ TCCR0B |= (1 << CS02) | (1 << CS00); /* clk/1024 prescaler */
+ OCR0A = 0x7F; /* 50% duty cycle */
TCNT0 = 0;
- TIMSK |= (1 << TOIE0);
+ TIMSK = (1 << OCIE0A) | (1 << OCIE0B) | (1 << TOIE0); /* enable interrupts for overflow and compare */
sei();
while(1) {
-
+ _delay_ms(100);
/* set LRA as sensor and switch to idle mode
* check back-EMF of LRA: if treshold is surpassed
* comparator intterupt is triggered */