Part Number: TMS320F28P650DK
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
Hi,
MCU operating clock frequency is 120MHz with 20MHz occilator.
I am using EPWM1 & EPWM2 but i am seing approx 84ns phase shift between this two PWM.
Output and PWM initialization i have shared for referance,
How to make this phase shift ZERO ? Can you please guide us.

here is what my initialization.
Initialization( )
{
EPWM1init( );
EPWM2init( );
HWREGH(myEPWM1_BASE + EPWM_O_TBCTL) =
((HWREGH(myEPWM1_BASE + EPWM_O_TBCTL) & ~(EPWM_TBCTL_CTRMODE_M)) |
((uint16_t)EPWM_COUNTER_MODE_UP));
HWREGH(myEPWM2_BASE + EPWM_O_TBCTL) =
((HWREGH(myEPWM2_BASE + EPWM_O_TBCTL) & ~(EPWM_TBCTL_CTRMODE_M)) |
((uint16_t)EPWM_COUNTER_MODE_UP));
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
}
void EPWM1init( void )
{
EPWM_setClockPrescaler(myEPWM1_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod(myEPWM1_BASE, 0);
EPWM_setTimeBaseCounter(myEPWM1_BASE, 0);
EPWM_setTimeBaseCounterMode(myEPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
EPWM_enablePhaseShiftLoad(myEPWM1_BASE);
EPWM_setPhaseShift(myEPWM1_BASE, 0);
EPWM_disableCounterCompareShadowLoadMode(myEPWM1_BASE, EPWM_COUNTER_COMPARE_A);
EPWM_setCounterCompareValue(myEPWM1_BASE, EPWM_COUNTER_COMPARE_A, 83);
EPWM_setActionQualifierAction(myEPWM1_BASE, EPWM_AQ_OUTPUT_A,
EPWM_AQ_OUTPUT_HIGH,
EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction(myEPWM1_BASE, EPWM_AQ_OUTPUT_A,
EPWM_AQ_OUTPUT_LOW,
EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setPeriodLoadMode(myEPWM1_BASE, EPWM_PERIOD_DIRECT_LOAD);
PRD_CLK_GRID = PRD_CLK_GRID_CH;
EPWM_setTimeBasePeriod(myEPWM1_BASE, PRD_CLK_GRID - 1);
EPWM_setTimeBaseCounterMode(myEPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
}
void EPWM2init( void )
{
EPWM_setClockPrescaler(myEPWM2_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod(myEPWM2_BASE, 0);
EPWM_setTimeBaseCounter(myEPWM2_BASE, 0);
EPWM_setTimeBaseCounterMode(myEPWM2_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
EPWM_setPhaseShift(myEPWM2_BASE, 0);
EPWM_disableCounterCompareShadowLoadMode(myEPWM2_BASE, EPWM_COUNTER_COMPARE_A);
EPWM_setCounterCompareValue(myEPWM2_BASE, EPWM_COUNTER_COMPARE_A, 83);
EPWM_setActionQualifierAction(myEPWM2_BASE, EPWM_AQ_OUTPUT_A,
EPWM_AQ_OUTPUT_LOW,
EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction(myEPWM2_BASE, EPWM_AQ_OUTPUT_A,
EPWM_AQ_OUTPUT_HIGH,
EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setPeriodLoadMode(myEPWM2_BASE, EPWM_PERIOD_DIRECT_LOAD);
PRD_CLK_GRID = PRD_CLK_GRID_CH;
EPWM_setTimeBasePeriod(myEPWM2_BASE, PRD_CLK_GRID - 1);
EPWM_setTimeBaseCounterMode(myEPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE);
}
Regards,
Bhavin P





