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

 
 
> STM32F2xx - глюк таймера или кривые руки...
KeyZet
сообщение Jan 29 2013, 15:11
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 20-02-10
Пользователь №: 55 591



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

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

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 10:32
Рейтинг@Mail.ru


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