AnsweredAssumed Answered

When to set TIM1 pwm channels - 3phase drive

Question asked by anton.bogdan on Nov 13, 2017

Hello,

 

I have a  project where a 3phase DC BLDC motor is required to be spined.

 

For now i have : - 3 hall sensors conected to CH1,2,3 of the TIMER2.

                          - 6 complementary pwms via Timer1

 

 

 

In the Timer2 CC1 handler i read the hall sensors, forming a "index" value after which i compare with my lookup table

 

void TIM2_IRQHandler()
{
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);

 

pdata= (GPIO_ReadInputData(GPIOA)& 0x0007);
UH = FORWARD_TABLE[pdata][0];
UL = FORWARD_TABLE[pdata][1];
VH = FORWARD_TABLE[pdata][2];
VL = FORWARD_TABLE[pdata][3];
WH = FORWARD_TABLE[pdata][4];
WL = FORWARD_TABLE[pdata][5];

 

bellow i set the 6 complementary PWM pins for the TIMER1

 

 

}

 

 

Do i need to set the timer1 pins in advance for the next position in the TIM2 CC1 IRQ ?  Or i need to set them on the current hall read position?

Outcomes