• Внешние прерывания у 8-bit avr, использование кнопок

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

    image

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


    • DDRxy&=~(1<<y); PORTxy&=~(1<<y);
      с одной стороны кнопка подключена к плюсу (VCC), а с другой стороны к ножке.
      В таком случае провод который подключен к ножке выступает в роли антенны и любое возмущение электромагнитного поля вокруг проводка вызывает срабатывание кнопки, что неприемлемо.

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

    Читать дальше →