Просмотр этой темы:
1 анонимных пользователей
1 2
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
Здравствуйте. Проблема с дребезгом контактов. Кнопка китайская. Контроллер все время спит. Все выключено кроме 16 битного таймера для ШИМ сигнала. Просыпается по внешнему прерыванию по низкому уровню от кнопки. Делаю так: if (key == 0) delay(1000); if (key == 0) { while(!(key)); ... событие после уст. 0 } А надо сразу при первом только 0, а не после последнего. Подскажите, пожалуйста, как быть?
Отправлено: 11.07.2011 19:36
|
|
Администратор
Зарегистрирован:
07.08.2008 20:40 Из: Тирасполь
Сообщений:
7258
|
Ну и выкинь первые две строчки...
Если событие происходит достаточно долго, то с дребезгом и не надо бороться. Если быстро, то предусмотреть после выполнения цикла проверку на дребезг
Отправлено: 11.07.2011 21:56
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
А как сделать после цикла проверку на дребезг? Событие короткое.
Подскажите, пожалуйста.
Отправлено: 12.07.2011 0:08
|
|
Администратор
Зарегистрирован:
07.08.2008 20:40 Из: Тирасполь
Сообщений:
7258
|
ХЗ
Я не знаю принципа работы. Далее опять ждущий режим и ожидание? Если событие короткое, то ждем "1", пауза,проверка на "0" если да, то переход на проверку "1" иначе возврат в начало. Тоесть, ждем отпускания кнопки. Вообще, паузой устранять дребезг не совсем правильно. Неоходимо разработать хороший алгоритм вычисления дребезга)))) Хотя можно сделать без проверки на дребезг. Пауза секунду и в начало. Если кнопка еще нажата, фиксируется повторное нажатие...
Отправлено: 12.07.2011 0:32
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
http://radio-hobby.org/modules/news/article.php?storyid=797
в самом простом варианте достаточно после обнаружения нажатия кнопки подождать около 20 ms(этого времени достаточно для протекания всех переходных процессов) и заново опросить состояние контактов. Если все еще замкнута-выполнить действие, а потом так же ждать размыкания.
Отправлено: 12.07.2011 1:25
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
да ждущий режим. Контроллер все время спит. Просыпается по внешнему прерыванию, работает только 16 битный таймер во время просыпания. Посыпается выполняет короткое действие и снова засыпает.
???
Отправлено: 12.07.2011 20:06
|
|
Администратор
Зарегистрирован:
07.08.2008 20:40 Из: Тирасполь
Сообщений:
7258
|
Что
Цитата: ??? Выше расписаны действия.
Отправлено: 12.07.2011 20:15
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
Вы задавали вопрос: "Далее опять ждущий режим и ожидание?"
Отправлено: 12.07.2011 22:38
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
А вот Вы описали "ждем отпускание кнопки". Событие после чего идет. Проверки на 1, если да то происходит событие, иначе возврат в начало.
Отправлено: 12.07.2011 22:47
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
А вот Вы описали "ждем отпускание кнопки". Событие после чего идет? Проверки на 1, если да то происходит событие, иначе возврат в начало.
Ошибка)))
Отправлено: 12.07.2011 22:54
|
|
1 2