I'm trying to solve the ePWM 0%~100% PWM duty output.
I've also read the application note about the issue. It turns out that AQCTLx(x=A,B, Action Qualifier Control register) is not buffered.
The application note "SPRAAI1" also modified the AQCTLx in the beginning of the ISR, and then modified in the end of the ISR again to solve the issue, please refer the Figure 2 software flow chart in Page 8, "SPRAAI1".
However, this means AQCTLx isn't buffered, and will be affected when CPU execution time doesn't meet the "requirement"
To solve this problem, ISR need a one-time-write-in-the-end solution, so it means AQCTLx needs to be buffered.
A potential solution is:
Use ePWM to create a CMPx event to trigger DMA to load a value from a buffer into AQCTLx, CMPx event should considerthe delay of DMA.
Will this be possible? My ePWM set up is
TB:Up-Down counting, use
CMPA:duty, Load on TBCNT=0
AQCTLA:
Zero Up, CAU Down, CAD Up ,CMPA=1~Prd, when desired duty>0
Zero Down, CAU Down, CAD Down for CMP=1, when desired duty=0(This must be loaded when TBCNT=0)