Other Parts Discussed in Thread: C2000WARE
Tool/software:
Hi experts,
I'm using 280039C to realize CRM Boost control.
The CMPSS signal has been setup and send to EPWMXbar. Then i setup Digital Compare as this using DCBECT1.sync to reset counter of EPWM4.

But can't reset TBCTR at CMPSS high.
The code is as following:
CMPSS setup:
CMPSS_enableModule(base1);
CMPSS_configDAC(base1,CMPSS_DACVAL_SYSCLK | CMPSS_DACREF_VDDA | CMPSS_DACSRC_SHDW);
CMPSS_setDACValueHigh(base1,2048 +(int16_t)((float32_t)current_limit*(float32_t)2048.0/(float32_t)current_max_sense));
CMPSS_setDACValueLow(base1,2048 -(int16_t)((float32_t)current_limit *(float32_t)2048.0 /(float32_t)current_max_sense));
CMPSS_configHighComparator(base1, CMPSS_INSRC_DAC );
CMPSS_configLowComparator(base1, CMPSS_INSRC_DAC | CMPSS_INV_INVERTED);
CMPSS_configFilterHigh(base1, 2, 10, 7);
CMPSS_configFilterLow(base1, 2, 10, 7);
CMPSS_initFilterHigh(base1);
CMPSS_configOutputsHigh(base1, CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_FILTER);
CMPSS_configOutputsLow(base1, CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_FILTER);
CMPSS_clearFilterLatchHigh(base1);
CMPSS_clearFilterLatchLow(base1);
EPWM setup:
EPWM_setClockPrescaler(myEPWM2_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod(myEPWM2_BASE, 400);
EPWM_setupEPWMLinks(myEPWM2_BASE, EPWM_LINK_WITH_EPWM_4, EPWM_LINK_TBPRD);
EPWM_setTimeBaseCounter(myEPWM2_BASE, 0);
EPWM_setTimeBaseCounterMode(myEPWM2_BASE, EPWM_COUNTER_MODE_UP);
EPWM_enablePhaseShiftLoad(myEPWM2_BASE);
EPWM_setPhaseShift(myEPWM2_BASE, 1);
EPWM_setSyncInPulseSource(myEPWM2_BASE, EPWM_SYNC_IN_PULSE_SRC_SYNCOUT_EPWM4);
EPWM_setCounterCompareValue(myEPWM2_BASE, EPWM_COUNTER_COMPARE_A, 0);
EPWM_setCounterCompareShadowLoadMode(myEPWM2_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue(myEPWM2_BASE, EPWM_COUNTER_COMPARE_B, 0);
EPWM_setCounterCompareShadowLoadMode(myEPWM2_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue(myEPWM2_BASE, EPWM_COUNTER_COMPARE_C, 110);
EPWM_setActionQualifierAction(myEPWM2_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction(myEPWM2_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setDeadBandDelayMode(myEPWM2_BASE, EPWM_DB_RED, true);
EPWM_setRisingEdgeDelayCountShadowLoadMode(myEPWM2_BASE, EPWM_RED_LOAD_ON_CNTR_ZERO);
EPWM_setDeadBandDelayMode(myEPWM2_BASE, EPWM_DB_FED, true);
EPWM_setFallingEdgeDelayCountShadowLoadMode(myEPWM2_BASE, EPWM_FED_LOAD_ON_CNTR_ZERO);
EPWM_enableADCTrigger(myEPWM2_BASE, EPWM_SOC_A);
EPWM_setADCTriggerSource(myEPWM2_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_PERIOD);
EPWM_enableADCTrigger(myEPWM2_BASE, EPWM_SOC_B);
EPWM_setADCTriggerSource(myEPWM2_BASE, EPWM_SOC_B, EPWM_SOC_TBCTR_PERIOD);
EPWM_setClockPrescaler(myEPWM4_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod(myEPWM4_BASE, 400);
EPWM_setupEPWMLinks(myEPWM4_BASE, EPWM_LINK_WITH_EPWM_4, EPWM_LINK_TBPRD);
EPWM_setTimeBaseCounter(myEPWM4_BASE, 0);
EPWM_setTimeBaseCounterMode(myEPWM4_BASE, EPWM_COUNTER_MODE_UP);
EPWM_disablePhaseShiftLoad(myEPWM4_BASE);
EPWM_setPhaseShift(myEPWM4_BASE, 0);
EPWM_setSyncInPulseSource(myEPWM4_BASE, EPWM_SYNC_IN_PULSE_SRC_SYNCOUT_EPWM4);
EPWM_setCounterCompareValue(myEPWM4_BASE, EPWM_COUNTER_COMPARE_A, 75);
EPWM_setCounterCompareShadowLoadMode(myEPWM4_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue(myEPWM4_BASE, EPWM_COUNTER_COMPARE_B, 0);
EPWM_setCounterCompareShadowLoadMode(myEPWM4_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setActionQualifierAction(myEPWM4_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction(myEPWM4_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction(myEPWM4_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction(myEPWM4_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setFallingEdgeDeadBandDelayInput(myEPWM4_BASE, EPWM_DB_INPUT_EPWMB);
EPWM_setDeadBandDelayMode(myEPWM4_BASE, EPWM_DB_RED, true);
EPWM_setRisingEdgeDelayCountShadowLoadMode(myEPWM4_BASE, EPWM_RED_LOAD_ON_CNTR_ZERO);
EPWM_setDeadBandDelayMode(myEPWM4_BASE, EPWM_DB_FED, true);
EPWM_setFallingEdgeDelayCountShadowLoadMode(myEPWM4_BASE, EPWM_FED_LOAD_ON_CNTR_ZERO);
EPWM_selectDigitalCompareTripInput(myEPWM4_BASE, EPWM_DC_TRIP_TRIPIN5, EPWM_DC_TYPE_DCBH);
EPWM_setTripZoneDigitalCompareEventCondition(myEPWM4_BASE, EPWM_TZ_DC_OUTPUT_B1, EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_enableDigitalCompareSyncEvent(myEPWM4_BASE, EPWM_DC_MODULE_B);
EPWM_setDigitalCompareEventSyncMode(myEPWM4_BASE, EPWM_DC_MODULE_B, EPWM_DC_EVENT_1, EPWM_DC_EVENT_INPUT_NOT_SYNCED);
EPWM_enableADCTrigger(myEPWM4_BASE, EPWM_SOC_A);
EPWM_enableADCTrigger(myEPWM4_BASE, EPWM_SOC_B);