Timer0 не работает ни на одном контроллере

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Alek_von_German, грубо говоря, вы "забираете всё время" таймером 1. У вас МК всё время проводит в прерывании, т.к. оно длится дольше, чем период его срабатывания. У вас пока выполняется 1ое прерывание, уже срабатывает 2ое и дальше. И по выходу из прерывания, МК сразу же уходит в него назад.

И кстати там даже 31250 Гц, а целых 125000 Гц. Т.к. прескейлер стоит /64. В коде 1го поста OCR1A = 5 - тоже мало, 25000 Гц прерывание, оно само всё еще дольше выполняется.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 118
Зарегистрирован: Вт апр 21, 2020 07:44:24
Откуда: Сумы, Украина

Сообщение Alek_von_German »

:beer: Блин, парни, вы крутые. Я бы в жизни не догадался, что дело зарыто в частотах. Исправил частоту до 560 герц и всё заработало. Спасибо огромнейшее! Будем развиваться дальше)))

Добавлено after 11 minutes 50 seconds:
Хотя не ясно теперь почему таймер2 работал с настройками нулевого. Или это потому, что у него свой прескаллер, а у тех общий?
Хочется всё и сразу, а получаешь нихрена и постепенно...
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

[uquote="Alek_von_German",url="/forum/viewtopic.php?p=3846174#p3846174"]Хотя не ясно теперь почему таймер2 работал с настройками нулевого. Или это потому, что у него свой прескаллер, а у тех общий?[/uquote]
Нет. Это потому, что у прерывания таймера 2 приоритет выше, чем у таймера 1. Поэтому оно всё-таки выполняется. Приоритет таймеров - таблица векторов прерываний в ДШ.
Встал на лапы
Аватара пользователя
Сообщения: 118
Зарегистрирован: Вт апр 21, 2020 07:44:24
Откуда: Сумы, Украина

Сообщение Alek_von_German »

NStorm, ну я где-то около того и думал.
Хочется всё и сразу, а получаешь нихрена и постепенно...
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»