Пытаюсь применить колесико мышки в интерфейсе своей железки.
Подключаю энкодер как советуют - средний вывод к земле, два крайних вывода к микроконтроллеру.
Пытаюсь воспользоваться встроенным в таймеры STM32 режимом "Encoder interface mode".
Оно даже както работает, но с жутким "дребезгом" контактов.
Копипастил с такого кода.
Код инициализации таймера:
Спойлер
Код: Выделить всё
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_Period = 65535; // Maximal
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_EncoderInterfaceConfig(TIM1, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
TIM_Cmd(TIM1, ENABLE);
"Полечил" такое поведение добавлением конденсаторов на пару десятков нанофарад на ножки энкодера. Но все равно - время от времени считает не в ту сторону. Попробовал пару энкодеров - одинаково криво считает.
Собственно вопрос - кто нить пробовал подключать такую штуковину? Как добиться четкого срабатывания?