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.

Digital Compare (DC) Submodule中的Event Filtering的疑惑。

我们现在有项目中有用到epwm的DC模块和tz模块来实现直流电机电流的控制,使用的是tz模块的cbc模式,在一种极端模式下,期望电流为零,此时ADC Compare单元一直处于限流状态,也就是Digital Compare模块的输入一直都是限流保护状态。

按理讲,即使在整个时间段段都有过流事件发生,我通过设置Event Filtering窗口,无论如何在Event Filtering这段时间内,pwm应该在从ctr = 0这个时间点恢复,持续Event Filtering time后再关闭。但是事实上。通过以下的程序段是无法对事件有效屏蔽,pwm没有在ctr =0时恢复,整个过程中pwm都没有输出。

EPwm1Regs.tbprd = 2500;

EALLOW; \
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT; \
EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI; \
EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT_FLT; \
EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_SYNC; \
EPwm1Regs.DCFCTL.bit.PULSESEL = DC_PULSESEL_PRD; \
EPwm1Regs.DCFCTL.bit.SRCSEL = DC_SRC_DCAEVT2; \
EPwm1Regs.DCFCTL.bit.BLANKE = DC_BLANK_ENABLE; \
EPwm1Regs.DCFCTL.bit.BLANKINV = DC_BLANK_NOTINV; \
EPwm1Regs.DCFOFFSET = 0; \
EPwm1Regs.DCFWINDOW = NOISE_WINDOW; \
EPwm1Regs.TZSEL.bit.DCAEVT2 = 1; \

EDIS;\

然而我把更改以下程序:

EPwm1Regs.DCFOFFSET = 0;  更改为EPwm1Regs.DCFOFFSET = 2495;

就能够输出了。从程序的意义上讲,意思就是说,需要在需要在ctr = 0 之前 5个周期就要开始屏蔽才会生效。

那么我有2个问题:

1,以上我对Event Filtering的理解是否正确?

2,如果我的理解正确,DCFOFFSET设成多少是合适的,我现在在这个平台上是要提前5个才行,会不会其他平台需要更多才行呢,这里是否成为了一个不可靠因素了。