Много кнопок одно перывание
HTML-код
- Опубликовано: 29 сен 2024
- Как подключить много тактовых кнопок к одному прерыванию.
Пример на Atmega8 - в одном прерывании опрашивается 5 кнопок.
Исходники, hex, эмуляция в протеусе - yadi.sk/d/HYaU...
Схема в пдф yadi.sk/i/lRff...
cli не совсем запрещает прерывания - они копятся - надо снимать флаг - чтобы прерывание не выполнилось после
Думаю, что лучше не флаг снимать, а запрещать именно само данное прерывания (точнее и то (флаг) и другое (прерывание) и глобальное). Так как кнопка может быть нажата и после того как флаг сброшен, хоть и чисто технически, человек не в состоянии обогнать по скорости МК)). Даже если и не писать запрет на прерывания, то в данном коде мы очень навряд сможем так быстро нажать следующую кнопку. Но в более "сложных" программах, конечно нужно перестраховываться.
ещё лучше будет если поставить резисторы разных номиналов после кнопок и диодов соединить их к одному аналоговому входу, как делитель напряжения, чтобы не тратить много выводы контроллера и также по прерыванию опрашивать аналоговы вход и по напряжению определять какая кнопка нажата
делал что-то похожее. нужна была резистивная клава с пробуждением мк по прерыванию и определением нажатой кнопки. все работает, но только в протеусе... в железе полная каша. сможете прислать схемку того, что вы описали ?
@@andreyfrolov301 попробую
а как вам послать то вернее куда
@@LevanMatchavariani dr.somet@yandex.ru
@@andreyfrolov301 Уже отправил
Отличная идея! Реализовал в своей программке, все работает правильно.
а таким образом можно опросить одновременно несколько кнопок?
я так понял вы имеете ввиду зафиксировать нажатие сразу нескольких кнопок?теоретически можно, практически нет т.к. человек не сумеет так быстро нажать две и более кнопок, чтобы обогнать прерывание
нужна некая задержка между срабатыванием прерывания и опросом пинов.
можно рц цепочкой отсрочить прерывание.можно программную задержку вставить
может быть еще что-то можно придумать.
@@andreyfrolov301 В моём проекте планируется подсчитывать два разных импульса и от 8 до 10 кнопок и может произойти, что одновременно может прийти 2 импульса да плюс и зажмётся одна или несколько кнопок. Наверное всё же лучше всего классический динамический опрос.
@@AlekseiChip да, этот метод для случая когда кнопки нужно вешать именно на прерывание.