Alt.F4 0 10 февраля, 2011 Опубликовано 10 февраля, 2011 (изменено) · Жалоба Добрый день. Пытался найти ответ на поставленный вопрос, но глухо. Интересует максимальная длительность импульсов в очереди дребезга. Спасибо. P.S. При смене логического уровня считаю до 65536, если в это время проскакивает дребезг, то считаю заново. Но беда в том, что досчитав до конца я потратил всего 10мс, если длительность импульсов в дребезга больше, то будут ошибки, надо увеличивать счетчик. Изменено 10 февраля, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Microwatt 2 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба P.S. При смене логического уровня считаю до 65536, если в это время проскакивает дребезг, то считаю заново. .....будут ошибки, надо увеличивать счетчик. Дребезг очень зависит от типа механики и ряда других обстоятельств. ОБЩЕЕ время дребезга можно ориентировочно принять несколько миллисекунд. В 10 миллисекунд он укладывается в маломощных реле и кнопках всегда. А вот борьба с этим искажением сигнала... Интересно, если бы Вам дать 32-разрядный счетчик - считали бы до 2^32? А если только 4-разрядный? До 15? Посадите мысленно себя рядом с контактом и представьте, что можете его движение четко видеть глазом с интервалом в 1мкс или 10 мкс. Как бы Вы приняли решение о том, что контакт таки замкнулся (разомкнулся), используя вычислительные мощности всех 14 миллиардов клеток в стандартных мозгах? И всего лишь пальцы одной руки для счетчика? Или нужно увеличивать вычислительные мощности, разувшись, на пальцах одной руки задача не решаема? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба максимальная длительность импульсов в очереди дребезга. Зависит от конструкции контакта. В данном контексте контакт надо рассматривать как механический резонатор, имеющий более-менее явственную частоту собственных колебаний. Если это контактор или реле с длинными контактами, то длительность импульсов может доходить до нескольких сотен миллисекунд. Если это маленькая кнопка, то длительность ожидается очень короткая, и 10 мс хватит с лихвой. Для своих устройств я принимаю, что длительность импульсов не превышает 200 мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба Microwatt, мой счетчик какгбе еще и защищает от помех =) =AK=, спасибо большое, буду считать до 200мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_noise 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 (изменено) · Жалоба Пытался найти http://www.google.ru/search?q=%E0%ED%F2%E8...%E5%E1%E5%E7%E3 ? ... а теперь берём резиновую кнопку. Через год эксплуатации. И пытаемся применить сабж к ней, как тоже контакту, хотя и в крайнем виде. Подсказка для если не интересно сначала попробовать без подсказок: 1. раз в миллисекунду проверяем: нажато или отжато? 2. если нажато - увеличиваем счётчик, 3. если отжато - уменьшаем счётчик, 4. когда счётчик >= 100 - значит, точно нажато, 5. когда счётчик <= 0 - значит, точно отжато. Ход мысли. Microwatt про такое и намекать хотел, показалось мне. Скучно же, когда программист подобно солдату мыслит: чётко-ясно-инструкция-исполнять. буду считать до 200мсСчётчик кармы увеличивать не хотел ленился, а после этого. Жалко время и особенно внимание на бессмысленные опыты тратить. ---- Каменты видел. Извиняйте, не увлекаюсь чатами. Мысль изложена полностью, добавить к ней ничего не имею. Если получилось непонятно сразу и после перечитать обдумать тоже непонятно - тогда ой. Изменено 11 февраля, 2011 пользователем нечитатель Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JonnMoon 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба 4. когда счётчик >= 100 - значит, точно нажато, Если 99, то "не точно" нажато? :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 (изменено) · Жалоба нечитатель, что-то я не понял о чем Ваш пост. У меня в программе все "железные" таймеры заняты, а отсчитывать каждую мс заполнением регистров - это тоже самое, что я и сделал. Да и по сути какая разница до скольки считать, хоть до 1млрд, главное временные рамки ИМХО (о которых кстати и был вопрос). Изменено 11 февраля, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба Если 99, то "не точно" нажато? :rolleyes:Ага! А ещё: если кнопку долго не отпускать и переполнится счетчик, то "точно" отожмём... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JonnMoon 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба Ага! А ещё: если кнопку долго не отпускать и переполнится счетчик, то "точно" отожмём... Дык, вот тут такое дело, что дребезг он по барабану во многих случаях. Попробую пояснить мысль. Предположим в начале кнопка разомкнута и это логический "0". Замкнули кнопку и выскочила пачка импульсов "1", по первому импульсу вызов прерывания и программа вычисляет какая кнопка нажата. Какая разница сколько было импульсов в пачке? Далее программа ожидает среднее время нажатия - зависит от типа кнопки. Затем программа ждет отпускания кнопки оператором, тоже пачка импульсов, на этом цикл завершен и все сначала. Дребезг побоку. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба ... главное временные рамки ИМХО (о которых кстати и был вопрос).Максимальная длительность дребезга, как уже было сказано, зависит от конструкции контактов. Вы хотите узнать: какая максимальная длительность дребезга кому-либо встречалась? Обычно она не превышает 10 мс, но встречались "паршивые" китайские кнопки, у которых (причем новых) дребезг длился 60 мс, а после небольшого периода эксплуатации (ну, может раз двести нажали) - превысил 90 мс. Такие кнопки (1000 шт) без сожаления были выкинуты к какой-то матери... Далее программа ожидает среднее время нажатия - зависит от типа кнопки. ...Дребезг побоку. :laughing: Так это "ожидание" - и есть обработка дребезга. Без него(ожидания) - Вы бы "ловили" множественные нажатия-отпускания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wise 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба ..По флагу таймера, который клацает с периодом, например, 20mS, опрашиваем все имеющиеся кнопки. И понятие "дребезг контактов"совсем теряет актуальность.. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JonnMoon 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 (изменено) · Жалоба Так это "ожидание" - и есть обработка дребезга. Без него(ожидания) - Вы бы "ловили" множественные нажатия-отпускания. Нет. Дребезг это пачка импульсов, а ожидание это готовность кнопки к следующему нажатию. Сюда включается дребезг при нажатии, время удержания, дребезг при отпускании. Тут учитывается больше эргономика. Нажали, отпустили, подняли палец, выбрали другую кнопку, опустили палец, нажали и т.д. Например, для мембранной клавиатуры быстрее 0.5 секунд не очень удобно нажимать кнопки. А это не сопоставимое время с дребезгом. :rolleyes: Изменено 11 февраля, 2011 пользователем 50X Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба ..По флагу таймера, который клацает с периодом, например, 20mS, опрашиваем все имеющиеся кнопки. И понятие "дребезг контактов"совсем теряет актуальность.. :rolleyes: Но появляется другой враг - случайное нажатие взволнованного юзера, типа ОЙЦ. На этот случай валидное нажатие ужЕ через минимум 200мс Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Microwatt 2 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба Особенность некоторая в том ЧТО нужно обнаружить программно? Срабатывание кнопки, реле? Или то, что срабатывание произошло не просто, а переходные процессы закончились? В первом случае достаточно просто получить прерывание и замаскировать его на разумное время до следующего срабатывания-отпускания. Какая разница - дребезжат контакты или или нет? Важно, что сработало, произошло изменение состояния. Это, например, для обычной компьютерной клавиатуры годится. Во втором - через миллисекунду примерно опрашивать. Если подряд три -четыре считывания с одинаковым результатом - считай, таки сработало. Этот алгоритм на практике на борту и в мощных энергосистемах применяли при двухступенчатой выдаче команд - "предварительно - исполнить". Т.е. смысл там в том, что цепь из нескольких контактов для выдачи команды в нужное место набралась. Можно подавать сам силовой сигнал команды. Наконец, есть аппаратные средства нормирования таких сигналов. Простой RS триггер устраняет дребезг , как класс. Все равно, сигнал от контакта как-то нормируется по амплитуде к уровням лог 1 и 0, аппаратные затраты не так уж велики. Или сейчас программеры для этого 16-разрядный АЦП применяют? Во всяком случае, считать в сетчике до десятков тысяч - крайне расточительный алгоритм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 (изменено) · Жалоба через миллисекунду примерно опрашивать. Если подряд три -четыре считывания с одинаковым результатом - считай, таки сработало.Если учитывать, что: реле с длинными контактами, то длительность импульсов может доходить до нескольких сотен миллисекунд, то четыре считывания будет маловато... Во всяком случае, считать в сетчике до десятков тысяч - крайне расточительный алгоритм.По-моему ни разу не расточительный. 1) Если во время ожидания нажатия кнопки (реле) не надо ничего делать, то можно считать сколько, главное сделать временную паузу. 2) Если инкрементировать счетчик в основном цикле программы, то опять же мы ничего не теряем (не более десятка тактовых импульсов), можно считать сколь угодно много, придерживаясь времени. Изменено 11 февраля, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться