И что смотреть? У тебя вектор прерывания по переполнению, таймер всегда считаетдо 255, кроме нескольких режимов, которые надо отдельно настраивать.
И теперь скажи, к чему у тебя там ocr2a =250, если оно ни на что не влияет?
Кто тебе вообще сказал, что значение ocr2a как-то влияет на частоту твоих прерываний?
Никто не говорил. Но я так понял из ДШ.
OCR2A устанавливает значение для сравнения с текущим значением счетчика таймера TCNT2.
Когда значения совпадают, вызывается прерывание.
Т.е Timer2 будет считать от 0 до 255, с шагом 1/64. Когда счетчик достигнет максимального значения ( OCR2A = 250;) и переполнится, возникнет прерывание по переполнению.
Почтайте про переполнение что ли …
Вызывается прерывание по совпадению.
У тебя в голове каша
Мне кажется там желтая вода …
Тема с таймерами не такая простая, для новичка. Да, я не правильно понял.
Действительно, регистр OCR2A выставляется тогда, когда нужно прерывание по совпадению, а не по переполнению.
Соответственно и функция :
ISR(TIMER2_OVF_vect) {
SegmentDisp(); // Вызываем SegmentDsp() по прерыванию от Timer2
}
Определена не верно.
Нужно :
ISR(TIMER2_COMPA_vect) {
}
И изменить правильно настройки таймера.
Благодарю за конструктивную критику и подсказку!
Тебе только кажется.