![]() |
|
|||||||
| Хобби Фотография, рыбалка, спорт etc. (Для девушек - вязание :)) |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
#21 |
|
Адрес: Днепропетровск
Сообщений: 11,726
Машина: Tesla model S 85, Таврия 1.3 инж.
Длина: 65880мкм
Диаметр: 35мм
|
Ардуино - страшная штука для отравления мозгов. Начинать с Ардуины категорически не советую. Лучше программировать на нормальном Си с помощь любого компилятора (IAR, Keil, Icc, GCC) и заливать готовый Хекс в Ардуину с помощью ее же загрузчика. Сама жесткая структура скетча и занятость многих важных ресурсов проца под собственные нужды "Ардуино ОС" сильно мешают жить. Например, из всего трех встроенных таймеров Меги 328, которая стоит в Ардуино Уно, один занят под системные нужды, 2 других тоже доступны с некоторыми ограничениями. Но если уж взялись...
Подходов к устранению дребезга может быть много разных. Все зависит от наличия свободных ресурсов скорости выполнения основного цикла и т.д. Проще всего опрашивать кнопки реже, чем раз в 50мс где-то, тогда дребезг будет незаметен. Если важна скорость реакции, лучше опрашивать в прерывании. Эффективный алгоритм антидребезга здесь http://embedders.org/blog/gdi/debouncing.html Этот код настолько прост и быстр, что его можно засунуть непосредственно в прерывание , вызываемое по таймеру несколько десятков раз в секунду. Но я обычно в прерывании только определяю, что какая-то из кнопок изменила положение (неважно какая, сравниваю со старым значением все биты сразу в одно действие). При обнаружении изменения выставляю флаг, который неспешно обрабатывается и сбрасывается основным циклом, он уже разбирается , что именно нажато и что надо с этим делать.
__________________
Кремлевский дед слетел с катушек, и все, что строил 20 лет, разрушил. |
|
|
|