- posted
20 years ago
C++
- Vote on answer
- posted
20 years ago
- Vote on answer
- posted
20 years ago
VV> Есть клавиатура, которая состоит из контроллера клавиатуры, который VV> опрашивается по таймеру, который отрабатывает авторепит и прочие VV> параметры, которые устанавливаются в сетапе, который лежит в EEPROM. А почему это таймер отрабатывает авторепит? Или это я запутался в цепочке слов "который" :-) ? Это я в asm или C-программе могу всё затолкать в один обработчик прерываний таймера и "по месту" в нём вписать клавиатуру, динамическую индикацию, etc. Ещё и для экономии тактов частично размазав обработку таймеров и таймаутов между обращениями к spi (в нескольких местах динамическая индикация на 75hc595 сидит на spi).
А тут уж "не таймерово дело" про автоповтор знать.
IMHO авторепит должна отрабатывать клавиатруа и "клавиатара вообще" должна иметь методы отсетапливания этого дела. И должно быть нечто "ТаймеромДёргальное" с виртуальной функцией "Дёрг". Тогда наследовать клавиатуру, опрашиваемую по таймеру, от КлавыВообще и ТаймеромДёргального и зарегистрировать эту новую клавиатуру как (ТаймеромДёргальное*) у таймера в список дёргаемого с нужной частотой. В смысле у таймера может быть несколько списков - для 1,10,100 мс периода. Клавиатуру дёргать с интервалом
10мс и пусть она сама разбирается и с антидребезгом и с автоповтором.wbr,