In my motor control code I have implemented dead band using ePWMs module built into dead band functionality. It works great except, half the time, and only during first or first two commutation transitions, it gets turned off for a brief period before I force the whole module to low state.
In my code throughout commutations I always alternate pwm module between pwm and forced low. When it comes to turn one of these modules from pwm to low I execute following code...
EPwm3Regs.AQCSFRC.bit.CSFA = 1; // Low
EPwm3Regs.AQCSFRC.bit.CSFB = 1; // Low
EPwm3Regs.DBCTL.bit.OUT_MODE = BP_DISABLE;
In those occasions when I have shoot through current I almost see the opposite (see attachment for scope shots and code). It looks like dead band goes off first then few cycles later pwm module is forced low.
The odd thing is, after first cycle of commutation I never see it again, and on top of that I don't see it on every turn on of the motor. I realize that it is probably related to initialization/timing somehow, but I don't even know where to start. I tried putting some delay between force low and dead band disable, that didn't help. I tried putting the whole statement into TB clock disable/re-enable block, that didn't either.
Any additional ideas are welcome.8585.Dead band problem.doc
thanks,
Vlad