Я пытаюсь добиться чего-то там, где мне нужен таймер, работающий с определенной скоростью. Итак, я прочитал, что мне нужно сделать, чтобы таймер работал с частотой 1.000.000 Гц (каждые 1 микросекунду).
// TIMER 2 for interrupt frequency 1000000 Hz:
cli(); // stop interrupts
TCCR2A = 0; // set entire TCCR2A register to 0
TCCR2B = 0; // same for TCCR2B
TCNT2 = 0; // initialize counter value to 0
// set compare match register for 1000000 Hz increments
OCR2A = 15; // = 16000000 / (1 * 1000000) - 1 (must be <256)
// turn on CTC mode
TCCR2B |= (1 << WGM21);
// Set CS22, CS21 and CS20 bits for 1 prescaler
TCCR2B |= (0 << CS22) | (0 << CS21) | (1 << CS20);
// enable timer compare interrupt
TIMSK2 |= (1 << OCIE2A);
sei(); // allow interrupts
Пока все хорошо. Если я возьму процедуру прерывания для Timer2 и увеличиваю int каждый раз, когда процедура выполняется, счетчик не будет считать микросекунды. Должно быть что-то я сделал не так или что-то я здесь пропустил.
Есть какие-нибудь намеки или идеи о том, что я пропустил?