forever_student, я не рассматриваю вариант отслеживания нажатия кнопки через прерывание.
Offтопик:
Прошу прощения, в предыдущем посте не то слово написал, счас поправлю.
forever_student, я не рассматриваю вариант отслеживания нажатия кнопки через прерывание.
Offтопик:
Прошу прощения, в предыдущем посте не то слово написал, счас поправлю.
Андрей
Я вообще с простыми кнопкам поступал так. Делал таймер с прерыванием каждую миллисекунду (он еще и для других дел нужен). Там если пин = 1, то счетчик на Х (где Х время удержания, например 50 мс). Если пин = 0, до декремент счетчика если он больше 0. А в основном коде проверялось равенство 0 счетчика для принятия решения и установка счетчика на -1, как признак, что команда отработана.
Друзья, спасибо всем за советы и указания на ошибки в коде! Привел в нормальный вид синтаксис, все работает
Пойду учиться распознавать длинное нажатие, чувствую что проще будет переделать алгоритм на подсчет состояний кнопки по таймеру... Еще раз всем спасибо!
Критиковать — значит доказывать автору, что он не сделал этого так, как сделал бы я, если б умел (с) Карел Чапек
Это не самый хорогий вариант. Лучше при нажатии вообще не давить дребезг, а сразу выполнять функцию кнопки, по первому определению что она нажата. А вот факт отпускания - фиксировать с подавлением дребезга.
Прерывание от самих кнопок вообще не обязательно, если не надо от него просыпаться и если в системе есть (а оно почти всегда есть) какое-нибудь регулярное времязадающее прерывание (например с периодом 1мс) - в нем просто проверять кнопки. КАк примерно Костя описал.
"Замполит, чайку?"(с)"Охота за Красным Октябрем".
"Ну что, можете меняться обратно."(с)типа анек.
<-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.
Принцип всё равно тот же: нажатие - первый же 0 (если порт к + подтянут), отпускание - через антидребезг. Главное - зафиксировать факт нажатия (отпускания) - а когда выполнять какие-то действия - по нажатию, по отпусканию, по нажатию более заданного времени - это уже дело другое
Если двойной клик - то отслеживать время после отпускания, если до следующего нажатия меньше заданного - то двойной клик.
"Замполит, чайку?"(с)"Охота за Красным Октябрем".
"Ну что, можете меняться обратно."(с)типа анек.
<-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.
Я бы сделал проще.
Сделал бы обработку кнопок по прерыванию. При возникновении прерывания, обработал бы (неважно сейчас, как и где), и запретил бы его на 100 ms.
Социальные закладки