Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F2xx - глюк таймера или кривые руки...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
KeyZet
Здравствуйте, Уважаемые!
Основная задача была создать таймером в режиме PWM изменяющийся (периодический) сигнал. Для этого был использован таймер TIM1 (там есть такая приятность как DeadTime). Алгоритм таков:
1) Настраивается второй компаратор и его инверсный выход таймера
2) Настраивается автоперезагрузка таймера и прерывание по этому событию.
3) Каждый раз по прерыванию в регистр сравнения TIM1->CCR2 записывается новое значение (до которого будет считать таймер и где переключится нога)

И в некоторых случаях происходит такая странность, причину которой найти не удается. Таймер переключается раньше положеного (когда TIM1->CNT < TIM1->CCR2 ), находится в этом состоянии некоторое время, переключается обратно и срабатывает повторно уже в нужный момент (когда TIM1->CCR2 равен TIM1->CNT). Происходит это передергивание не во всех случаях, а при некоторых значениях TIM1->CCR2 и определенной разнице между предыдущим значением этого регистра и текущим. Если таймер считает в режиме UP_Counting /| , то передергивание происходит незадолго до верного переключения (т.е. перед переключением); если счет идет в UP_DOWN режиме /\ , то оно происходит в конце, после правильного переключения.
На фото картинка с осциллографа (прямой и инверсный выходы).
На прерывание не грешу, потому как если разниц между точками не велика, этого "артефакта" нет.
Если кто-то сталкивался или у кого есть идеи - подскажите пожалуйста. Проц.: STM32F205, STM32F207.
SSerge
Радикальное решение - это установить бит OCxPE в соответствующем регистре CCMRx.
Тогда новое значение CCRx будет буферизовано и регистр сравнения обновится только к началу следующего периода.
KeyZet
Цитата(SSerge @ Jan 30 2013, 13:39) *
Радикальное решение - это установить бит OCxPE в соответствующем регистре CCMRx.
Тогда новое значение CCRx будет буферизовано и регистр сравнения обновится только к началу следующего периода.


Спасибо. Это помогло.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.