_noise 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 (изменено) · Жалоба Представляется (пока ещё) не слишком наглой попытка повторно обратить внимание выступающих на четвёртый камент к новости. Делаю такую попытку. 1. Гугл, "антидребезг", готовые решения. Я оттуда взял себе. Не придумал же. Сколько вариантов нашлось? Только один? Который с словом "длительность"? 2. Дребезг может закончиться никогда. Вообще никогда. Очень плохой контакт. Помехи. Бесконечная длительность. Отказываемся от такой ситуации? 3. Контакт со временем ухудшается. Отлаживали с новенькой кнопкой. Через месяц перестало работать. Каждый месяц год менять кнопку? На ещё более качественную? 4. Подсказка: "1. раз в миллисекунду...". А если "в микросекунду"? Или "в две миллисекунды"? На, извините, зачем таймер-то? Какая чего точность нужна? Задача: "определить состояние кнопки". Нет слова "длительность". 5. Подсказка: "4. когда счётчик >= 100...". Почему именно 100? Можно поторговаться за цифру. Больше сообщений => ближе "Свои". 6. Подсказка != готовая инструкция. И не алгоритм, и даже не исходник. Программировать не через форум. Программировать в другом окне. === Если среди последних (по времени) проверок достаточно много было получено результатов "замкнуто" по сравнению с результатами "разомкнуто" - делаем вывод, что кнопка нажата. Иначе отжата. Понятие "достаточно много" в конкретных цифрах определяется по ситуации и вкусу. Большая надёжность определения ~ большее минимально возможное время реакции на изменение состояния кнопки. Худший контакт ~ большее реальное время реакции. От выбранных цифр зависит минимально возможное время реакции системы (при идеальной кнопке). От качества кнопки зависит реальное время реакции. ... в таком виде и не нужно заранее знать, сколько миллисекунд займёт процесс дребезга (если он вообще закончится), и можно распознать изменение состояния ещё до окончания дребезга. Потому что в процессоре можно изображать интеллект с понятием о вероятности, не только дубовые задержки "как в книжке про ЛА3". Изменено 12 февраля, 2011 пользователем нечитатель Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 · Жалоба Если среди последних (по времени) проверок достаточно много было получено результатов "замкнуто" по сравнению с результатами "разомкнуто" - делаем вывод, что кнопка нажата. Иначе отжата. Понятие "достаточно много" в конкретных цифрах определяется по ситуации и вкусу. Большая надёжность определения ~ большее минимально возможное время реакции на изменение состояния кнопки. Худший контакт ~ большее реальное время реакции. Забыли добавить, что время между актами чтения кнопки тоже должно быть каким-то. То ли изменяемым по некому алгоритму, то ли фиксированным. Тогда остальная часть: От выбранных цифр зависит минимально возможное время реакции системы (при идеальной кнопке). От качества кнопки зависит реальное время реакции. ... в таком виде и не нужно заранее знать, сколько миллисекунд займёт процесс дребезга (если он вообще закончится), и можно распознать изменение состояния ещё до окончания дребезга. Потому что в процессоре можно изображать интеллект с понятием о вероятности, не только дубовые задержки "как в книжке про ЛА3". абсолютно правильна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 · Жалоба Дребезг может закончиться никогда.Такое бывает? :blink: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syv 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 · Жалоба Такое бывает? :blink: Всяко бывает. Про кнопки читать здесь. Особенно ответы человека с ником tester. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 (изменено) · Жалоба Но по сути дела этот дребезг, который не кончается никогда, имеет какую-то длительность импульсов, и если счетчиком насчитывать время большее длительности импульса, то мы их отфильтруем. Если проследить посты в топике, то о длительности импульсов в очереди дребезга выразился только =AK=, предложив считать их равными не более 200мс. А уже до скольки считать и с какой периодичностью, пусть решает каждый сам для себя в зависимости от программных возможностей ИМХО (я думаю дальше мусолить эту тему нет необходимости). Вот опытные временные интервалы, замеренные осциллографом, было бы интересно увидеть/услышать/прочитать. :rolleyes: Изменено 12 февраля, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 · Жалоба Такое бывает? :blink:Бывает. Когда частота переключения контактов (точнее время нахождения контакта в одном из состояний, сравнивать нужно величины одной размерности) превышает длительность дребезга этих же контактов. С точки зрения надежного определения состояния контактов кроме параметра "длительность дребезга контактов" желательно иметь информацию еще и о частоте их переключения. Навряд ли вы сможете открывать/закрывать дверцу автомобиля быстрее, чем за 0,5с. ;) С другой стороны если предполагать до 1000 знаков/минуту у натренированной машинистки, то нужно закладываться на время детектирования нажатия/отпускания не более, чем за 50мс. В общем оперировать нужно не только временем дребезга, но и интервалом наблюдения оного, то бишь частотой возникновения событий. P.S. кстати размерность счетчика в вашем исполнении должна напрямую коррелировать с тактовой частотой микроконтроллера. Так что шутка о 32-х разрядах в случае применения ARM вовсе не шутка :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alt.F4 0 12 февраля, 2011 Опубликовано 12 февраля, 2011 (изменено) · Жалоба rezident, согласен. В моем случае частота события очень малая, поэтому можно считать 200мс (плюс ~300мс дребезга, итого 0,5с на определение события) и быть уверенным на 100%. P.S. кстати размерность счетчика в вашем исполнении должна напрямую коррелировать с тактовой частотой микроконтроллера. Так что шутка о 32-х разрядах в случае применения ARM вовсе не шутка sm.gifДа, частоту учитываем (сейчас 10МГц). Пока АРМ только планирую покорять, если ход мыслей к тому времени не поменяется, буду заполнять 32 разряда :laughing: Изменено 12 февраля, 2011 пользователем Alt.F4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_noise 0 20 февраля, 2011 Опубликовано 20 февраля, 2011 · Жалоба Забыли добавить, что время между актами чтения кнопкиНе забыл. Когда/если уж собрался я попечатать в интернете, то неинтересно было бы делать абы как левой пяткой это. Пытаясь же всё-таки представить в уме нулевое время между означенными актами - программу видим состоящей из чего? Даже если из бесконечного количества подряд инструкций "прочитать порт", то всё равно между актами время не нулево. Ну и, уже написано: "6. Подсказка != готовая инструкция.". Предполагается самостоятельность умения (не только) читать. дребезг... имеет какую-то длительность импульсов... о длительности импульсов в очереди дребезга... временные интервалы, замеренные осциллографомЭто про кнопку железку токопроводящую деталь А, касающуюся токопроводящей детали Б? Импульсы прямоугольные, правильно понимаю? Тогда просто: период следования импульсов = один поделить на частоту следования их, а длительность импульса = период умножить на коэффициент заполнения. --- В соседних интернетах чем-то подобным страдают тоже, можно почитать для коллекции. Вечная тема же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться