Witam!
Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry:
TCCR1A |= (1<<WGM12); //tryb ctc , timer1
TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 /
OCR1A = 7813; // 8MHz/1024
TIMSK |= (1<<OCIE1A); //zezwolenie na przerwania ctc/timer1
Oczywiście pomysł na te "nastawy" wziąłem z notki katalogowej, jednak mam pewne podejrzenia (niestety uzasadnione:( ), że coś źle zrozumiałem (przerwania generowane są bardzo wolno. Zmiana wartości OCR1A nie przynosi efektu, zmiana prescalera-owszem. Jednak nie chce tego robić "na odwal sie", żeby działało, tylko chciałbym wiedzieć gdzie tu jest haczyk. Z góry dzieki za każdą podpowiedz:)
P.S. Atmega taktowana przez wewnętrzny RC 8MHz
Chcę ustawić TIMER1 w atmedze 16 tak aby generował przerwania mniej więcej co sekundę w trybie CTC (dodam, że nie zależy mi na aptekarskiej precyzji). W tym celu ustawiłem następujące rejestry:
TCCR1A |= (1<<WGM12); //tryb ctc , timer1
TCCR1B |= (1<<CS12)|(1<<CS10); //prescaler 1024 /
OCR1A = 7813; // 8MHz/1024
TIMSK |= (1<<OCIE1A); //zezwolenie na przerwania ctc/timer1
Oczywiście pomysł na te "nastawy" wziąłem z notki katalogowej, jednak mam pewne podejrzenia (niestety uzasadnione:( ), że coś źle zrozumiałem (przerwania generowane są bardzo wolno. Zmiana wartości OCR1A nie przynosi efektu, zmiana prescalera-owszem. Jednak nie chce tego robić "na odwal sie", żeby działało, tylko chciałbym wiedzieć gdzie tu jest haczyk. Z góry dzieki za każdą podpowiedz:)
P.S. Atmega taktowana przez wewnętrzny RC 8MHz