реклама на сайте
подробности

 
 
> МК пропускает нажатие кнопки...
qulik
сообщение Aug 3 2009, 06:39
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



Добрый день!

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

Сообщение отредактировал qulik - Aug 3 2009, 06:40
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
stells
сообщение Aug 3 2009, 06:59
Сообщение #2


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



контроллер не вылазит из прерываний? ну а что можно сделать? увеличивать тактовую частоту МК или сокращать время выполнения подпрограммы обработки прерываний
Go to the top of the page
 
+Quote Post
qulik
сообщение Aug 3 2009, 07:08
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



Цитата(stells @ Aug 3 2009, 10:59) *
контроллер не вылазит из прерываний? ну а что можно сделать? увеличивать тактовую частоту МК или сокращать время выполнения подпрограммы обработки прерываний


Нет нет! Обработка прерывания занимает каких нибудь 20 мсек (в случае с кнопкой задержка от дребезга контактов 200 мсек). МК не срабатывает на каждое прерывание (нажатие)! Даже если между ними 1 сек! Приходится крутить энкодер кучу раз или кнопку держать несколько секунд.
Go to the top of the page
 
+Quote Post
stells
сообщение Aug 3 2009, 07:15
Сообщение #4


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



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

мне кажется это программный косячок. кстати, задержки на дребезг обычно достаточно 10-20мсек
Go to the top of the page
 
+Quote Post
qulik
сообщение Aug 3 2009, 08:43
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 2-04-08
Из: Санкт-Петербург
Пользователь №: 36 424



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

Топик OFF!
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016