Дребезг контактов
При опросе клавиатуры (например матричной) возникает проблема дребезга контактов. Программно она решается опросом клавиатуры с частотой, не превышающей 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;
}
Дребезг контактов
Как использовать сторожевой таймер микроконтроллера ATmega328p