Arduino Nano Timer не работает с желаемой скоростью - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь добиться чего-то там, где мне нужен таймер, работающий с определенной скоростью. Итак, я прочитал, что мне нужно сделать, чтобы таймер работал с частотой 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 каждый раз, когда процедура выполняется, счетчик не будет считать микросекунды. Должно быть что-то я сделал не так или что-то я здесь пропустил.

Есть какие-нибудь намеки или идеи о том, что я пропустил?

...