Witam
Mam pewną wątpliwość/pytanie dotyczące przerwania dla timera1 w trybie CTC. W datasheetcie jest napisane, że mamy dwie niezależne jednostki Output Compare, no więc ustawiam:
Nie wiem czy dobrze to rozumiem ale według mnie timer1 pozwala nam na dwa różne przerwania dla różnych wartości licznika. No ale przecież jak już doliczy do tego 1000 daje przerwanie i licznik liczy od nowa, to w jaki sposób wywoła się przerwania dla kanału B? Czy coś jeszcze trzeba gdzieś ustawić? Może coś przeoczyłem.
Z góry dzięki za pomoc.
Pozdrawiam
Mam pewną wątpliwość/pytanie dotyczące przerwania dla timera1 w trybie CTC. W datasheetcie jest napisane, że mamy dwie niezależne jednostki Output Compare, no więc ustawiam:
TCCR1B=(1 << CS10 |1 << CS11 | 1<< WGM12); //przykładowo-ustaw timer1 z preskalerem 64 //ustaw timer1 w tryb CTC
OCR1A=1000; //przykładowa wartość
OCR1B=5000; //przykładowa wartość
SREG=(1 << 7); //zezwolenie na przerwania
TIMSK=(1 << OCIE1A | 1 << OCIE1B); //zezwolenia na przerwania dla CTC
while(1){}
}
ISR(TIMER1_COMPA_vect)
{
[...]
}
ISR(TIMER1_COMPB_vect)
{
[...]
}Nie wiem czy dobrze to rozumiem ale według mnie timer1 pozwala nam na dwa różne przerwania dla różnych wartości licznika. No ale przecież jak już doliczy do tego 1000 daje przerwanie i licznik liczy od nowa, to w jaki sposób wywoła się przerwania dla kanału B? Czy coś jeszcze trzeba gdzieś ustawić? Może coś przeoczyłem.
Z góry dzięki za pomoc.
Pozdrawiam