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.
我在使用280025 EPMW Global Load 碰到的问题
EPWM_setTimeBasePeriod(base, period); // period = 200 .// 频率100KHz
EPWM_setTimeBaseCounterMode(base, EPWM_COUNTER_MODE_UP); // 向上计数
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_A,EPWM_AQ_OUTPUT_HIGH,EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_A,EPWM_AQ_OUTPUT_LOW,EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_HIGH,EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction(base,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_LOW,EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
// EPWM Global Load 相关配置
// 同时加载 CPMA CMPB
EPWM_enableGlobalLoadRegisters(base,EPWM_GL_REGISTER_CMPA_CMPAHR | EPWM_GL_REGISTER_CMPB_CMPBHR);
// CTR = ZERO 或者 CTR = PERIOD 是,触发加载
EPWM_setGlobalLoadTrigger(base,EPWM_GL_LOAD_PULSE_CNTR_ZERO_PERIOD);
//使能 Global Load
EPWM_enableGlobalLoad(base);
在一个 25KHz 中断中,
uint16_t cmp = 0;
__attribute__((ramfunc))__interrupt void v25KHz_ISR(void)
{
if(cmp < 150)
{
cmp++;
EPwm4Regs.CMPA.bit.CMPA = cmp;
EPwm4Regs.CMPB.bit.CMPB = cmp;
}else
{
cmp = 50;
}
}
这样的写法,是不是,可以实现EPMW4的CMPA CMPB 同时更新。
实测结果。
1、EPWM1A 一直为高电平 ,EPMW1B一直低电平。
2、如果禁止 EPWM_disableGlobalLoad(base);,则 EPWM1A EPMW1B 正常发波
是什么原因?
这样的写法应该是把CMPA和CMPB更新为同一个值?user1601657 说:是不是,可以实现EPMW4的CMPA CMPB 同时更新。
关于EPWM Global Load的问题可以跟帖以下链接:e2e.ti.com/.../tms320f280025-problem-of-using-epwm-global-load