Страница 2 из 2
Re: Timer0 не работает ни на одном контроллере
Добавлено: Пн май 25, 2020 20:50:22
NStorm
Alek_von_German, грубо говоря, вы "забираете всё время" таймером 1. У вас МК всё время проводит в прерывании, т.к. оно длится дольше, чем период его срабатывания. У вас пока выполняется 1ое прерывание, уже срабатывает 2ое и дальше. И по выходу из прерывания, МК сразу же уходит в него назад.
И кстати там даже 31250 Гц, а целых 125000 Гц. Т.к. прескейлер стоит /64. В коде 1го поста OCR1A = 5 - тоже мало, 25000 Гц прерывание, оно само всё еще дольше выполняется.
Re: Timer0 не работает ни на одном контроллере
Добавлено: Пн май 25, 2020 21:24:55
Alek_von_German

Блин, парни, вы крутые. Я бы в жизни не догадался, что дело зарыто в частотах. Исправил частоту до 560 герц и всё заработало. Спасибо огромнейшее! Будем развиваться дальше)))
Добавлено after 11 minutes 50 seconds:
Хотя не ясно теперь почему таймер2 работал с настройками нулевого. Или это потому, что у него свой прескаллер, а у тех общий?
Re: Timer0 не работает ни на одном контроллере
Добавлено: Пн май 25, 2020 21:35:50
NStorm
[uquote="Alek_von_German",url="/forum/viewtopic.php?p=3846174#p3846174"]Хотя не ясно теперь почему таймер2 работал с настройками нулевого. Или это потому, что у него свой прескаллер, а у тех общий?[/uquote]
Нет. Это потому, что у прерывания таймера 2 приоритет выше, чем у таймера 1. Поэтому оно всё-таки выполняется. Приоритет таймеров - таблица векторов прерываний в ДШ.
Re: Timer0 не работает ни на одном контроллере
Добавлено: Вт май 26, 2020 09:48:15
Alek_von_German
NStorm, ну я где-то около того и думал.