This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我使用的是4个 ePWM、它们通过 SYNCI 上的外部脉冲进行同步。
我的问题是:
1) 1)为什么 EPWM 需要 SYNCI 脉冲来开始计数? 我希望它们在 SYNCI 信号出现之前不同步、而不是禁用它们。
2) 2)以及当 SYNCI 上没有更多脉冲时、它们为什么继续工作? 如果他们需要一个 SYNCI 脉冲来开始计数、为什么在没有 SYNCI 脉冲的情况下继续计数?
谢谢、
Sebastien
ePWM 不依赖于 SYNCI 来启动。 您的 ePWM 设置是什么?
您好!
感谢您的回答、第一个 ePWM 设置如下所示(除相移值外、其他3个设置相同):
ePWM_setClockPrescaler (myEPWM1_base、ePWM_CLOCK 分频器_1、ePWM_HSCLOCK_divider 1);
ePWM_setTimeBasePeriod (myEPWM1_base、1000);
ePWM_setTimeBaseCounterMode (myEPWM1_base、ePWM_COUNTER_MODE_UP);
ePWM_setTimeBaseCounter (myEPWM1_base、0);
ePWM_selectPeriodLoadEvent (base、ePWM_shadow_load_mode_sync);
ePWM_setPhaseShift (myEPWM1_base、0);
ePWM_enablePhaseShiftLoad (myEPWM1_base);
ePWM_setCounterCompareValue (myEPWM1_base、ePWM_COUNTER_COMPARE_A、500);
ePWM_setCounterCompareShadowImage LoadMode (myEPWM1_base、ePWM_COUNTER_COMPARE_A、ePWM_COMP_LOAD_ON_CNTR_ZERO);
ePWM_setCounterCompareValue (myEPWM1_base、ePWM_COUNTER_COMPARE_B、0);
ePWM_setCounterCompareShadowImage LoadMode (myEPWM1_base、ePWM_COUNTER_COMPARE_B、ePWM_COMP_LOAD_ON_CNTR_ZERO);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_high、 ePWM_AQ_output_on_timebase_zero);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_period);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_low、ePWM_AQ_output_on_timebase_up_CMPA);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_down_cmPA);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_up_CMPB);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_A、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_down_CMPB);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_zero);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_period);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_up_cmPA);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_down_cmPA);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_up_CMPB);
ePWM_setActionQualifierAction (myEPWM1_base、ePWM_AQ_output_B、ePWM_AQ_output_no_change、ePWM_AQ_output_on_timebase_down_CMPB);
ePWM_setDeadBandDelayPolarity (myEPWM1_base、ePWM_DB_FED、ePWM_DB_POLICLE_ACTIVE_LOW);
ePWM_setDeadBandDelayMode (myEPWM1_base、ePWM_DB_RED、true);
ePWM_setRisingEdgeDelayCount (myEPWM1_base、BUCK_DFLT_ePWM_RED_TICKs);
ePWM_enableRisingEdgeDelayCountShadowImage LoadMode (myEPWM1_base);
ePWM_setRisingEdgeDelayCountShadowImage LoadMode (myEPWM1_base、ePWM_RED_LOAD_ON_CNTR_ZERO);
ePWM_setDeadBandDelayMode (myEPWM1_base、ePWM_DB_FED、true);
ePWM_setFallingEdgeDelayCount (myEPWM1_base、BUCK_DFLT_ePWM_FED_TICKs);
ePWM_enableFallingEdgeDelayCountShadowImage LoadMode (myEPWM1_base);
ePWM_setFallingEdgeDelayCountShadowImage LoadMode (myEPWM1_base、ePWM_FED_LOAD_ON_CNTR_ZERO);
//由 ADC 和 FSI/DMA 使用
ePWM_enableADCtrigger (myEPWM1_base、ePWM_SOC_A);
ePWM_setADCTriggerSource (myEPWM1_base、ePWM_SOC_A、ePWM_SOC_TBCTR_ZERO);
ePWM_setADCTriggerEventPrescale (myEPWM1_base、ePWM_SOC_A、1);
//由 FSI/DMA 使用
ePWM_enableADCtrigger (myEPWM1_base、ePWM_SOC_B);
ePWM_setADCTriggerSource (myEPWM1_base、ePWM_SOC_B、ePWM_SOC_TBCTR_ZERO);
ePWM_setADCTriggerEventPrescale (myEPWM1_base、ePWM_SOC_B、1);
ePWM_DisableInterrupt (myEPWM1_base);
ePWM_clearEventTriggerInterruptFlag (myEPWM1_base);
ePWM_setInterruptSource (myEPWM1_base、ePWM_INT_TBCTR_ZERO);
ePWM_setInterruptEventCount (myEPWM1_BASE、1);
在 ePWM 初始化之后、您在主函数中使用了 SYSCTL_enableMolde 和 TBCLKSYNC?
我找到了这种行为的原因。 这是由于 ePWM_selectPeriodLoadEvent (base、ePWM_SHAD_LOAD_MODE_SYNC)。 因此、只有在接收到 SYNCI 时、周期才会从影子寄存器加载到活动寄存器。 如果未接收到 SYNCI、ePWM 周期(有效寄存器)将保持为0、因此在接收到同步之前它们不执行任何操作。