пятница, 8 февраля 2013 г.

опрос кнопки фмк

Сразу оговорюсь, что я пишу про ножки, настроенные на подтягивающие резисторы т.е. DDRxy&=~(1<<y); PORTxy|=(1<<y). иначе смысла нет, срабатывание от прикосновения пальца, как мне кажется, никого не интересует.

У меня была мысль, что т.к. я задействую внешние прерывания то регистры DDR и PORT ничего не изменят в поведение МК, но это не так выход так же надо настраивать как при стандартной обработке.

Итого мы можем настроить всего три кнопки без использования стандартного опроса.

Прерывания INT0 и INT1 их приоритет выше других прерываний.

есть прерывания INT0 (нога PD2), INT1(нога PD3), и PCINT0..7 (весь порт B и хотя ножек у него 8, но прерывание одно на всех, что лично меня не радует )

Итак сами Внешние прерывания

если инвертировать, то получиться и для первого способа, но не думаю что это кому-то надо.

if (PINB & (1<<PINB7)){ // если ненажата кнопка на ноге PORTB7, то выполнить:

if (!(PINB & (1<<PINB6))){ // если нажата кнопка на ноге PORTB6, то выполнить:

Во втором способе, обычный опрос в цикле будет выглядеть:

Это наиболее примелимый вариант, наводок не возникает и кнопка срабатывает стабильно

С одной стороны кнопка подключена к минусу (GND), а с другой стороны к ножке.

DDRxy&=~(1<<y); PORTxy|=(1<<y);

В таком случае провод который подключен к ножке выступает в роли антены и любое возмущение электрическо-магнитного поля вокруг проводка вызывает срабатываение кнопки, что неприемлимо.

с одной стороны кнопка подключена к плюсу (VCC), а с другой стороны к ножке.

DDRxy&=~(1<<y); PORTxy&=~(1<<y);

Стандартный опрос:

Код ниже написан для WinAVR.

Здравствуйте, на днях решил поэксперементировать с внешними прерываниями на . Думаю тем кто занимался программированием микроконтроллеров известно, что МК не всегда быстро может реагировать на нажатие кнопки, т.к. проверка PINа стандартно осуществляется в бесконченом цикле и если программа доостаточно большая это может затормозить опрос ножки.

Программинг микроконтроллеров / [Из песочницы] Внешние прерывания у 8-bit avr, использование кнопок | Gliffer

Комментариев нет:

Отправить комментарий