Дребезг контактов

При опросе клавиатуры (например матричной) возникает проблема дребезга контактов. Программно она решается опросом клавиатуры с частотой, не превышающей 32-64 Гц. С помощью библиотеки VEduino (подробнее см. Программирование таймеров-счётчиков Arduino), организовать опрос клавиатуры с частотой 61 Гц можно например, используя таймер-счётчик 2:

#include <ve_avr.h>


volatile bool bScanKeyboard = false;


void setup()

{

DEV_TIMER2.setClockSelect(Prescaler2::Prescaler_1024); // 16 MГц / 1024 = 15625 Гц

DEV_TIMER2.setWaveGenMode(Timer2::Normal);

DEV_TICTRL2.overflowIntEnable(); // 15625 Гц / 256 = 61 Гц

interrupts();

}


void loop()

{

if (bScanKeyboard) {

bScanKeyboard = false;

scanKeyboard();

}

}


void scanKeyboard()

{

// TODO: Keyboard scan code

}


ISR(TIMER2_OVF_vect)

{

bScanKeyboard = true;

}

Скачать скетч VulScanKeyboard.ino.

Скачать библиотеку VEduino.