In our system, we are using the Concerto C28x's ePWM7, ePWM8, ePWM9, and ePWM10 together to drive a buck/boost DC converter. I have linked the TBPRD of #8, #9, and #10 to #7 using the following:
EPwm8Regs.EPWMXLINK.bit.TBPRDLINK = 8; // link TBPRD to ePWM7
EPwm9Regs.EPWMXLINK.bit.TBPRDLINK = 8; // link TBPRD to ePWM7
EPwm10Regs.EPWMXLINK.bit.TBPRDLINK = 8; // link TBPRD to ePWM7
I change ePWM7’s value using the following:
EPwm7Regs.TBPRDM2.half.TBPRD = <new value>; // Set timer period for ePWM7-10 (use TBPRD Mirror)
I am observing (via the Code Composer’s Registers View) that the TBPRD register of ePWM8 & ePWM 9 (I am not concerned with ePWM10 at this time) does indeed follow the value written to the ePWM7 TBPRDM2 register. Also, that new value is always reflected in the ePWM8’s TBPRDM register contents displayed in CCS. However, intermittently, ePWM9’s TBPRDM does not get updated with the new value, but instead, retains the previous value. When this occurs, ePWM9’s outputs operate incorrectly; they output a steady state value instead of a modulated signal. After that, writing a new value to ePWM7’s TBPRDM2 appears to make things right again, and ePWM9’s TBPRDM displays the correct value, and ePWM9’s outputs are modulated again.
Simply stated, the linking of ePWM9's TBPRD to ePWM7's TBPRD results in intermittent problems in ePWM9 when ePWM7's TBPRD value is modified. The operation is usually successful, but often not.
Again, even though ePWM8 and ePWM9 are configured almost identically (except for the TBPHS reg and TBCTL:PHSDIR bit), the ePWM8 TBPRD link always appears to work correctly, but ePWM9 behaves intermittently in the scenario described above.
Is there some issue with writing to the TBPRDM2 register vs writing to the TBPRDM register? I’m not really understanding the difference between them.
Thanks,
Chuck