专家您好:
请教一个问题,我用F2801D的EPWM1和EPWM2两路同频发波,使用的同步源为EPWM1的TBCTR=0事件,TBCTR的计数方向都为UP模式,PRD、CMP的加载模式都为SHADOW,加载时刻都为TBCTR=0,EPWM1超前EPWM2九十度发波,即当EPWM1的TBCTR=0事件发生时,EPWM2的TBPHS加载其周期值的四分之三,但当我们在低频到高频跳变时,EPWM1的TBCTR计数正常,但EPWM2的TBCTR会一直往上计数,会到一个很大的值(这个值要远远大于EPWM2的TBPRD值)才清零
Johnson Chen1:
楼主你好,此问题应该是出现在变频加移相且频率时。原因在于TBCTR的跳变,且EPWM1和EPWM2的更新不在同一点,导致在某种条件下,EPWM2的周期未到,但EPWM1的CTR=0产生,到值TBTCR跳变,因此EPWM2的CTR=0事件没有产生。所以EPWM2的PWM输出异常。另外你在CCS里面只能看到TBPRD是shadow值而不是active的TBPRD值,因此你觉得TBTCR大过TBPRD,实际上TBTCR一定是小过active的TBPRD值。你可以做一个实验,比如你的最小频率时的TBPRD为参考,判断TBTCR是否会大过它。