Перейти к содержанию
    

Длительность импульсов в "дребезге контактов"

Представляется (пока ещё) не слишком наглой попытка повторно обратить внимание выступающих на четвёртый камент к новости. Делаю такую попытку.

 

1. Гугл, "антидребезг", готовые решения. Я оттуда взял себе. Не придумал же.

Сколько вариантов нашлось? Только один? Который с словом "длительность"?

 

2. Дребезг может закончиться никогда. Вообще никогда. Очень плохой контакт. Помехи. Бесконечная длительность.

Отказываемся от такой ситуации?

 

3. Контакт со временем ухудшается. Отлаживали с новенькой кнопкой. Через месяц перестало работать.

Каждый месяц год менять кнопку? На ещё более качественную?

 

4. Подсказка: "1. раз в миллисекунду...". А если "в микросекунду"? Или "в две миллисекунды"?

На, извините, зачем таймер-то? Какая чего точность нужна?

Задача: "определить состояние кнопки". Нет слова "длительность".

 

5. Подсказка: "4. когда счётчик >= 100...". Почему именно 100?

Можно поторговаться за цифру. Больше сообщений => ближе "Свои".

 

6. Подсказка != готовая инструкция. И не алгоритм, и даже не исходник.

Программировать не через форум. Программировать в другом окне.

 

===

 

Если среди последних (по времени) проверок достаточно много было получено результатов "замкнуто" по сравнению с результатами "разомкнуто" - делаем вывод, что кнопка нажата. Иначе отжата.

 

Понятие "достаточно много" в конкретных цифрах определяется по ситуации и вкусу.

Большая надёжность определения ~ большее минимально возможное время реакции на изменение состояния кнопки.

Худший контакт ~ большее реальное время реакции.

 

От выбранных цифр зависит минимально возможное время реакции системы (при идеальной кнопке).

От качества кнопки зависит реальное время реакции.

 

... в таком виде и не нужно заранее знать, сколько миллисекунд займёт процесс дребезга (если он вообще закончится), и можно распознать изменение состояния ещё до окончания дребезга.

Потому что в процессоре можно изображать интеллект с понятием о вероятности, не только дубовые задержки "как в книжке про ЛА3".

Изменено пользователем нечитатель

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если среди последних (по времени) проверок достаточно много было получено результатов "замкнуто" по сравнению с результатами "разомкнуто" - делаем вывод, что кнопка нажата. Иначе отжата.

Понятие "достаточно много" в конкретных цифрах определяется по ситуации и вкусу.

Большая надёжность определения ~ большее минимально возможное время реакции на изменение состояния кнопки.

Худший контакт ~ большее реальное время реакции.

Забыли добавить, что время между актами чтения кнопки тоже должно быть каким-то.

То ли изменяемым по некому алгоритму, то ли фиксированным.

Тогда остальная часть:

От выбранных цифр зависит минимально возможное время реакции системы (при идеальной кнопке).

От качества кнопки зависит реальное время реакции.

... в таком виде и не нужно заранее знать, сколько миллисекунд займёт процесс дребезга (если он вообще закончится), и можно распознать изменение состояния ещё до окончания дребезга.

Потому что в процессоре можно изображать интеллект с понятием о вероятности, не только дубовые задержки "как в книжке про ЛА3".

абсолютно правильна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое бывает? :blink:

Всяко бывает.

Про кнопки читать здесь.

Особенно ответы человека с ником tester.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но по сути дела этот дребезг, который не кончается никогда, имеет какую-то длительность импульсов, и если счетчиком насчитывать время большее длительности импульса, то мы их отфильтруем.

Если проследить посты в топике, то о длительности импульсов в очереди дребезга выразился только =AK=, предложив считать их равными не более 200мс.

А уже до скольки считать и с какой периодичностью, пусть решает каждый сам для себя в зависимости от программных возможностей ИМХО (я думаю дальше мусолить эту тему нет необходимости).

Вот опытные временные интервалы, замеренные осциллографом, было бы интересно увидеть/услышать/прочитать. :rolleyes:

Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое бывает? :blink:
Бывает. Когда частота переключения контактов (точнее время нахождения контакта в одном из состояний, сравнивать нужно величины одной размерности) превышает длительность дребезга этих же контактов. С точки зрения надежного определения состояния контактов кроме параметра "длительность дребезга контактов" желательно иметь информацию еще и о частоте их переключения. Навряд ли вы сможете открывать/закрывать дверцу автомобиля быстрее, чем за 0,5с. ;) С другой стороны если предполагать до 1000 знаков/минуту у натренированной машинистки, то нужно закладываться на время детектирования нажатия/отпускания не более, чем за 50мс. В общем оперировать нужно не только временем дребезга, но и интервалом наблюдения оного, то бишь частотой возникновения событий.

P.S. кстати размерность счетчика в вашем исполнении должна напрямую коррелировать с тактовой частотой микроконтроллера. Так что шутка о 32-х разрядах в случае применения ARM вовсе не шутка :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

rezident, согласен. В моем случае частота события очень малая, поэтому можно считать 200мс (плюс ~300мс дребезга, итого 0,5с на определение события) и быть уверенным на 100%.

P.S. кстати размерность счетчика в вашем исполнении должна напрямую коррелировать с тактовой частотой микроконтроллера. Так что шутка о 32-х разрядах в случае применения ARM вовсе не шутка sm.gif
Да, частоту учитываем (сейчас 10МГц). Пока АРМ только планирую покорять, если ход мыслей к тому времени не поменяется, буду заполнять 32 разряда :laughing:
Изменено пользователем Alt.F4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забыли добавить, что время между актами чтения кнопки
Не забыл. Когда/если уж собрался я попечатать в интернете, то неинтересно было бы делать абы как левой пяткой это.

 

Пытаясь же всё-таки представить в уме нулевое время между означенными актами - программу видим состоящей из чего? Даже если из бесконечного количества подряд инструкций "прочитать порт", то всё равно между актами время не нулево.

 

Ну и, уже написано: "6. Подсказка != готовая инструкция.". Предполагается самостоятельность умения (не только) читать.

 

дребезг... имеет какую-то длительность импульсов... о длительности импульсов в очереди дребезга... временные интервалы, замеренные осциллографом
Это про кнопку железку токопроводящую деталь А, касающуюся токопроводящей детали Б? Импульсы прямоугольные, правильно понимаю? Тогда просто: период следования импульсов = один поделить на частоту следования их, а длительность импульса = период умножить на коэффициент заполнения.

 

---

 

В соседних интернетах чем-то подобным страдают тоже, можно почитать для коллекции. Вечная тема же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...