|
двухтактный ШИМ на STM32 |
|
|
|
 |
Ответов
|
Jan 23 2013, 13:52
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(MK2 @ Jan 23 2013, 16:22)  частотник можно замутить... векторный шим никто не отменял, у ST полно на эту тему апноутов обычный мост тоже можно сделать, фазный наверно только на F3 серии можно. Чегоито я совсем потерялся.. -хотелось разумным аппаратным способом получить два попеременных видеоимпульса с одинаковым периодом повторения и регулируемой длительностью. В подсказанном вами апноте на 7 ст. -как понимаю реализовано аппаратн о, но импульсы выровняны, т.е. не подходит, на ст. 9 -то что нужно, но реализовано с помощью sysTick прерываний , но на частоте в десятки килогерц такой вариант сдается не оптимальным, т.е. сделать можно, это так или еще как-то?
|
|
|
|
|
Jan 23 2013, 16:31
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
А если так (на stm32f10x): Ставите таймер в Center-aligned mode (up/down counting). Ставите два канала сравнения с выходами. Один, с меньшим значением регистра сравнения, с выдачей выхода если текущее значение меньше уставки. Другой, с большим значением регистра сравнения, с выдачей выхода если текущее значение больше уставки. То есть например: TIM2_CR1: CMS=0b11 CEN=1 TIM2_ARR=300; TIM2_CCR1=100; TIM2_CCR2=200; TIM2_CCER: CC1P=0 CC1E=1 CC2P=0 CC2E=1 TIM2_CCMR1: CC1S=0 CC2S=0 OC1M=0b110 OC2M=0b111 Код счётчик 0 100 200 300 200 100 0 100 200 300 200 100 выход 1: ------+ +------------+ +----- | | | | +------------------------------+ +------------------------------+ выход 2: +---------------+ +---------------+ | | | | --------------+ +---------------------------+ +------------
Сообщение отредактировал maksimp - Jan 23 2013, 16:32
|
|
|
|
|
Jan 23 2013, 19:10
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
-вот- вот, и я думал, что не сошелось клином на pwm -моде а d.t.gap -ы можно косвенно оргнизовывать, спасибо всем огромное за помощь  Код uint16_t tauVal; uint16_t dutVal;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_Pulse = dutVal>>1; TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_Pulse = (tauVal-(dutVal>>1)); TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); -получилось супер, если dutVal=tauVal -выходит чистый меандр, dutVal<tauVal появляется зазор для (полу)мостов, если dutVal>tauVal то позволяет перекрывать импльсы, бывает полезно когда отдельные первички на ключ, а потенцальная возможность отдельно управляя каналами бороть ДС -подмагничивание наверно очевидна... maksimp - персонально  !
Сообщение отредактировал dimone - Jan 23 2013, 20:56
|
|
|
|
Сообщений в этой теме
dimone двухтактный ШИМ на STM32 Jan 23 2013, 08:21 MK2 по-другому кроме как через dead time и не придумае... Jan 23 2013, 08:56 dimone Цитата(MK2 @ Jan 23 2013, 12:56) ...
табл... Jan 23 2013, 09:11  MK2 Цитата(dimone @ Jan 23 2013, 12:11) Я пре... Jan 23 2013, 10:21   dimone Цитата(MK2 @ Jan 23 2013, 14:21) ...
скор... Jan 23 2013, 10:53 khach Подскажите, как рулить этим PWM при регулировке мо... Jan 24 2013, 10:16 dimone Цитата(khach @ Jan 24 2013, 13:16) Подска... Jan 24 2013, 10:44  khach Цитата(dimone @ Jan 24 2013, 12:44) -Если... Jan 24 2013, 11:50  MK2 Цитата(dimone @ Jan 24 2013, 13:44) Выдер... Jan 24 2013, 15:47   koyodza Лучше всего по-моему использовать два канала любог... Jan 24 2013, 17:33   khach Цитата(MK2 @ Jan 24 2013, 18:47) И еще кв... Jan 24 2013, 20:33   dimone Цитата(MK2 @ Jan 24 2013, 18:47) P.S, под... Jan 24 2013, 21:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|