Jump to content
strifonoff

stm32f103c8 ровный ШИМ

Recommended Posts

Никак не могу получить ровные края генерации ШИМ по двум каналам.
Инициализация таймера:

 RCC->APB1RSTR |= RCC_APB1RSTR_TIM3RST;
   __NOP();__NOP();__NOP();
   RCC->APB1RSTR &= ~RCC_APB1RSTR_TIM3RST;

   GPIOA->ODR &= ~( GPIO_ODR_ODR6 | GPIO_ODR_ODR7 );
   GPIOA->CRL &= ~( GPIO_CRL_CNF6 | GPIO_CRL_CNF7 | GPIO_CRL_MODE6 | GPIO_CRL_MODE7 );
   GPIOA->CRL |= ( GPIO_CRL_MODE6 | GPIO_CRL_CNF6_1 | GPIO_CRL_MODE7 | GPIO_CRL_CNF7_1 );

   uint32_t arr = 200;
   uint32_t ccr = arr/2;
   uint32_t syf = 56000000;

   TIM3->CR2 |= TIM_CR2_MMS_1; // TRGO trigger

   TIM3->PSC = syf/arr/40000 - 1;
   TIM3->ARR = arr - 1;
   TIM3->CCR1 = ccr;
   TIM3->CCR2 = ccr;
   TIM3->CCMR1 |= ( TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1 ); // TIM3_CH2 PWM mode 1
   TIM3->CCMR1 |= ( TIM_CCMR1_OC1M ); // TIM3_CH1 PWM mode 2
   TIM3->DIER |= TIM_DIER_UIE;
   TIM3->EGR = TIM_EGR_UG;
   TIM3->CR1 |= TIM_CR1_ARPE;
   TIM3->CCER |= ( TIM_CCER_CC1E | TIM_CCER_CC2E );
   TIM3->CR1 |= TIM_CR1_CEN;

прерывание:

void TIM3_IRQHandler(void)
{
   static uint8_t count = 0;
   if (TIM3->SR & TIM_SR_UIF)
   {
      if(++count > 4)
      {
         count = 0;
         TIM3->CCER &= ~( TIM_CCER_CC1E | TIM_CCER_CC2E );
         TIM3->CR1 &= ~TIM_CR1_CEN;
      }
      TIM3->SR &= ~TIM_SR_UIF;
   }
}

На старте и финише ситуация на картинках

Как сделать ровный старт и убрать всплеск в конце?

не пишите пожалуйста про какие-то теневые регистры. пишите код.
 

 

start.png

stop.png

ровный старт - это равный 12.5 мкс - полуволна 40 кГц

Share this post


Link to post
Share on other sites
20.02.2021 в 20:18, strifonoff сказал:

Никак не могу получить ровные края генерации ШИМ по двум каналам

Что за края, откуда у тебя эти края, зачем они тебе, почему речь идет именно о двух каналах (а не о 5-ти, об одном), как все это связано?

Ты считаешь кто то в состоянии угадать-прочитать твои мысли и решить задачу которую ты не можешь сформулировать?

То есть ты обращаешься к некоторым высшим существам, которые на такое способны (на чтение мыслей). Мне кажется при обращении к высшим существам надо какой то более уважительный стиль использовать, что ли, я уж не говорю об использовании разных ритуалов. Иначе как можно расчитывать на помощь? Мне, например, совершенно не понятно!


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

Как сделать ИП с ультрашироким диапазоном?

Ключевыми особенностями высоковольтных SiC MOSFET Wolfspeed являются малое сопротивление канала в открытом состоянии и минимальное значение паразитных емкостей, что позволяет максимально снизить статические и динамические потери, и, соответственно, увеличить рабочую частоту преобразователей.

Подробнее

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...