Добрый день!
Хотел спросить у знающих людей, дабы ткнули меня носом, а то я подзапутался - как сделать так, чтобы происходило прерывание при повороте ручки механического энкодера?
Какие конкретно нужно эвенты сконфигурировать и как это будет работать.
Заранее спасибо за помощь!
Я пробовал делать по переполнению, однако ничего не работает:
Я включил общие прерывани и прерывания по таймеру 2:
__enable_irq ();//enable common interrupts
NVIC_EnableIRQ(TIM2_IRQn);//enable TIMER2 interrupt
Потом при инициализации таймера поставил бит :
TIM2->DIER|=TIM_DIER_UIE;
и вот так выглядит обработчик прерываний:
void TIM2_IRQHandler(void)
{
NVIC_DisableIRQ(TIM2_IRQn);
shift_cursor(1);
TIM2->SR &= ~TIM_SR_UIF;
NVIC_EnableIRQ(TIM2_IRQn);
}
И вообщем ничего не работает.
Значения в счетном регистре CNT изменяются как и положено при вращении ручки энкодера.
В чем может быть проблема?