Witam.
Chcę skorzystać z trybu CTC timera0 do obsługi dwóch różnych przerwań na uC atmega328P. Posiada on dwa 8-bitowe rejestry porównania: OCR0A oraz OCR0B. Chciałbym aby pierwsze przerwanie uruchomiło się gdy rejestr TCNT0 == OCR0A, definiuję je w następujący sposób:
Kod:
ISR(TIMER0_COMPA_vect)
tutaj wszystko działa bez zarzutów, natomiast drugie przerwanie chciałbym uruchomić gdy rejestr TCNT0 == OCR0B i jest ono zdefiniowane:
Kod:
ISR(TIMER0_COMPB_vect)
jednak to już nie działa. W przypadku gdy wrzucę kod drugiego przerwania do pierwszego to program działa poprawnie z czego wnioskuję że sama procedura jest dobrze napisana. I tutaj moje pytanie czy mogę jednocześnie (nie do końca jednocześnie bo OCR0A nie jest równe OCR0B w moim przypadku) rejestr TCNT0 porównywać z OCR0A i OCR0B? Poniżej inicjalizacja timera:
Kod:
TCCR0A |= (1<<WGM01);
TCCR0B |= (1<<CS02);
OCR0A = 234;
OCR0B = 250;
TIMSK0 |= (1<<OCIE0A) | (1<<OCIE0B);