(*ePWM[ch1]).CMPA.half.CMPA = _IQmpy(v.HalfPerMax,v.MfuncC1)+ v.HalfPerMax这个公式怎么得出来的啊。还有我把开关频率改成1Khz,产生溢出,65535不满足75000.从uint16改成uint32,结果不对啊,这怎么解决啊
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
(*ePWM[ch1]).CMPA.half.CMPA = _IQmpy(v.HalfPerMax,v.MfuncC1)+ v.HalfPerMax这个公式怎么得出来的啊。还有我把开关频率改成1Khz,产生溢出,65535不满足75000.从uint16改成uint32,结果不对啊,这怎么解决啊
您好,我在PWM的初始化中对TBCTL寄存器进行了设置,将CLKDIV_PRESCALE_X_1改为CLKDIV_PRESCALE_X_2,这样根据TBCLK=SYSCLKOUT/(CLKDIV*HSPCLKDIV)以及设置中#define HSPCLKDIV_PRESCALE_X_1 0x0000 ,#define CLKDIV_PRESCALE_X_2 0x0400可以得到TBCLK=SYSCLKOUT/(2X1)=75MHZ,进行了2分频。然后将ISR_FREQUENCY改为1.
然后在主程序中将pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/2;修改为pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/4;这样pwm1.PeriodMax 为37500,不会产生溢出,然后在实验中我们测得PWM如图:
但是实验中电机依然没有运行,请问问题还可能会出在哪些地方?麻烦您了!
您好,我刚才将开关频率降到5KHZ,也就是将ISR_FREQUENCY的设置由10改为5,没有对PWM的TBCTL寄存器进行改变!然后电机能够运行!还有我想请问您pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/2;这个公式是不是应该用PWM的基准时钟/PWM载波频率/2?而在TI的原程序中设置的TBCLK=SYSTEM_FREQUENCY,没有进行分频!我不知道如果对PWM的CLKDIV和HSPCLKDIV修改后是不是对其他模块有影响,比如AD模块?谢谢您