Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: МК пропускает нажатие кнопки...
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
qulik
Добрый день!

Столкнулся со следующей трудностью: генерирую на ATmega8 ШИМ сигнал. Использую для это T/C1 в режиме Fast PWM со значением TOP=ICR1. Для изменения частоты пробовал 2 варианта: 2 кнопки притягивающие вывод МК к земле, постоянно опрашиваемые в цикле while и, энкодер, который срабатывает по прерыванию int0 (falling edge). В обоих случаях при частотах приближающихся к 600-800кГц МК начинает жутко тормозить и срабатывает при пятом-десятом нажатии кнопки (повороте энкодера). Причем чем больше частота, тем больше нажатий кнопки МК пропускает. Чего делать в такой ситуации? unsure.gif
stells
контроллер не вылазит из прерываний? ну а что можно сделать? увеличивать тактовую частоту МК или сокращать время выполнения подпрограммы обработки прерываний
qulik
Цитата(stells @ Aug 3 2009, 10:59) *
контроллер не вылазит из прерываний? ну а что можно сделать? увеличивать тактовую частоту МК или сокращать время выполнения подпрограммы обработки прерываний


Нет нет! Обработка прерывания занимает каких нибудь 20 мсек (в случае с кнопкой задержка от дребезга контактов 200 мсек). МК не срабатывает на каждое прерывание (нажатие)! Даже если между ними 1 сек! Приходится крутить энкодер кучу раз или кнопку держать несколько секунд.
stells
Цитата(qulik @ Aug 3 2009, 11:08) *
Нет нет! Обработка прерывания занимает каких нибудь 20 мсек (в случае с кнопкой задержка от дребезга контактов 200 мсек). МК не срабатывает на каждое прерывание (нажатие)! Даже если между ними 1 сек! Приходится крутить энкодер кучу раз или кнопку держать несколько секунд.

мне кажется это программный косячок. кстати, задержки на дребезг обычно достаточно 10-20мсек
qulik
Гыы! Разобрался! biggrin.gif
I am Tupik! Пытался изменять частоту с дискретностью в 5кГц от 1кГц до 1 МГц...
Абсолютно не учел, что с повышением частоты сигнала, дискретность его изменения падает! Например при значении регистра ICR1 = 20 частота сигнала ШИМ = 800кГц, а при ICR1 = 19 частота сигнала ШИМ = 842,10кГц следовательно чтобы переключить значение надо нажать 42/5=4 раза кнопку...

Топик OFF!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.