PHSDIR was set to 1 to get a leading shift I am unable to double check at the moment, but if I remember correctly I verified TBPHS and TBPHSHR move in the same direction (i.e to the right/lagging) when PHSDIR = 0 I am currently testing setting TBPHSHR differently if I am leading/lagging as per below //leading code PWM2_SHIFT_float>0 EPwm2Regs.TBCTL.bit.PHSDIR = 1; PWM2_SHIFT_float+= 1.0; PWM2_SHIFT = (uint16_t)PWM2_SHIFT_float; PWM2_SHIFT_frac = (PWM2_SHIFT_float - PWM2_SHIFT)*PWM_TBPRD_UPDOWN; EPwm2Regs.TBPHS.bit.TBPHSHR = 0xFF00 - ((uint16_t)(PWM2_SHIFT_frac*256)); //lagging code PWM2_SHIFT_float<0 EPwm2Regs.TBCTL.bit.PHSDIR = 0; PWM2_SHIFT_float = fabs(PWM2_SHIFT_float); PWM2_SHIFT = (uint16_t)PWM2_SHIFT_float; PWM2_SHIFT_frac = (PWM2_SHIFT_float - PWM2_SHIFT)*PWM_TBPRD_UPDOWN; EPwm2Regs.TBPHS.bit.TBPHSHR = 0x0100|((uint16_t)(PWM2_SHIFT_frac*256));
↧