реклама на сайте
подробности

 
 
> STM32f103 прерывания в режиме энкодера
georgfour
сообщение May 19 2016, 19:14
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 31-12-15
Пользователь №: 89 900



Добрый день!
Хотел спросить у знающих людей, дабы ткнули меня носом, а то я подзапутался - как сделать так, чтобы происходило прерывание при повороте ручки механического энкодера?
Какие конкретно нужно эвенты сконфигурировать и как это будет работать.
Заранее спасибо за помощь!

Я пробовал делать по переполнению, однако ничего не работает:
Я включил общие прерывани и прерывания по таймеру 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 изменяются как и положено при вращении ручки энкодера.
В чем может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
georgfour
сообщение May 20 2016, 11:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 31-12-15
Пользователь №: 89 900



Так уже сконфигурировал, и он работает нормально, я просто не хочу делать постоянные опросы в главном цикле или по тикам другого таймера в прерываниях, я хочу чтобы как только ручка повернулась, мы зашли в прерывание и считали значение бита направления DIR - это все что нужно, без каких либо привязок к счетному регистру и его значениям
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016