| Both sides previous revisionPrevious revision | |
| ru:examples:digi:switch_debounce [2011/11/29 18:13] – eduardtlmk | ru:examples:digi:switch_debounce [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| У программной фильтрации существует несколько методов. Это можно делать просто и сложно, у обоих вариантов свои преимущества и недостатки. Если программа такова, что нажатие на кнопку ожидается редко, то можно после регистрации нажатия кнопки добавить длинную паузу, что исключает реакцию на дополнительные включения, возникшие при дребезге. Так же при подобном решении следует учитывать, что если пользователь держит кнопку долго нажатой, то при отжатии кнопки, программа реагирует на возникшее ложное срабатывание. | У программной фильтрации существует несколько методов. Это можно делать просто и сложно, у обоих вариантов свои преимущества и недостатки. Если программа такова, что нажатие на кнопку ожидается редко, то можно после регистрации нажатия кнопки добавить длинную паузу, что исключает реакцию на дополнительные включения, возникшие при дребезге. Так же при подобном решении следует учитывать, что если пользователь держит кнопку долго нажатой, то при отжатии кнопки, программа реагирует на возникшее ложное срабатывание. |
| |
| ~~PB~~ | <pagebreak> |
| |
| Надежней программа, которая контролирует состояние кнопки в течении определённого времени несколько раз (чем больше и длиннее время, тем надежней). Далее преведено чтение фильтрованного значения функции кнопки Дигитального входного-выходного модуля: | Надежней программа, которая контролирует состояние кнопки в течении определённого времени несколько раз (чем больше и длиннее время, тем надежней). Далее преведено чтение фильтрованного значения функции кнопки Дигитального входного-выходного модуля: |
| Данная функция использует функцию образования задержки, о чём подробнее рассказывает соответсвующее задание. Здесь не нужно много знать о функциях задержки кроме того, что создается 1 миллисекундная задержка для каждого состояния кнопки в конце цикла. Если кнопка в течении восьми раз находится в одном положении, это возвращает посчитанное состояние. Вся процедура может в случае нестабильности кнопки длиться до 100 миллисекунд. Функция уже содержится в библиотеке выводов, так что для прохождения примера не нужно добавлять это в свою программу. Для испытания этого придется первую часть задания немного изменить - привлечь в программу для создания задержки библиотеку и в месте, где значение кнопки было прочитано прямо, использовать функцию с фильтром. Результат следующий: | Данная функция использует функцию образования задержки, о чём подробнее рассказывает соответсвующее задание. Здесь не нужно много знать о функциях задержки кроме того, что создается 1 миллисекундная задержка для каждого состояния кнопки в конце цикла. Если кнопка в течении восьми раз находится в одном положении, это возвращает посчитанное состояние. Вся процедура может в случае нестабильности кнопки длиться до 100 миллисекунд. Функция уже содержится в библиотеке выводов, так что для прохождения примера не нужно добавлять это в свою программу. Для испытания этого придется первую часть задания немного изменить - привлечь в программу для создания задержки библиотеку и в месте, где значение кнопки было прочитано прямо, использовать функцию с фильтром. Результат следующий: |
| |
| ~~PB~~ | <pagebreak> |
| |
| <code c> | <code c> |