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.
您好!
当我使用 SysConfig 为 LAUNCHXL-F2800137开发固件时遇到两个问题。 一个问题是、当我使用 SysConfig 在新项目中添加 ePWM 时、PWMA/B 引脚上没有 EPWM 脉冲。 另一个问题是、在现有的示例项目中、我设置了 EPWM 事件触发器、但中断只执行一次。 您能否指导如何使用 SysConfig 设置 EPWM 事件触发器、以便为每个 EPWM 脉冲执行中断?
谢谢。此致、
洪涛
尊敬的洪涛:
您能否提供您在其中看不到 PWM 信号输出的配置? 然后我可以尝试对其进行调试。
对于该中断、请确保您正确确认了该中断并清除了任何中断标志
此致、
彼得
尊敬的 Peter:
生成的源"board.c"中的 EPWM_Init ()如下所示。
void ePWM_init (){
ePWM_setClockPrescaler (DriverPulsePWM_BASE、ePWM_Clock_divider _1、ePWM_HSCLOCK_divider 1);
ePWM_setTimeBasePeriod (DriverPulsePWM_BASE、120);
EPWM_setTimeBaseCounter (DriverPulsePWM_BASE、0);
EPWM_setTimeBaseCounterMode (DriverPulsePWM_BASE、EPWM_COUNTER_MODE_UP_DOWN);
EPWM_disablePhaseShiftLoad (DriverPulsePWM_BASE);
EPWM_setPhaseShift (DriverPulsePWM_BASE、0);
EPWM_setCounterCompareValue (DriverPulsePWM_BASE、EPWM_COUNTER_COMPARE_A、60);
EPWM_setCounterCompareShadowLoadMode (DriverPulsePWM_Base、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (DriverPulsePWM_BASE、EPWM_COUNTER_COMPARE_B、0);
EPWM_setCounterCompareShadowLoadMode (DriverPulsePWM_Base、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
ePWM_setDeadBandDelayMode (DriverPulsePWM_BASE、ePWM_DB_RED、TRUE);
ePWM_setRisingEdgeDelayCount (DriverPulsePWM_BASE、20);
ePWM_setDeadBandDelayMode (DriverPulsePWM_BASE、ePWM_DB_FED、true);
EPWM_setFallingEdgeDelayCount (DriverPulsePWM_BASE、20);
}
此致、
洪涛
尊敬的洪涛:
感谢您提供您的特定配置。
ePWM_setActionQualifierAction (theDriverPulsePWM_BASE、ePWM_AQ_OUTPUT_A、ePWM_AQ_OUTPUT_NO_CHANGE、ePWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (DriverPulsePWM_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
在检查代码时、您似乎没有配置任何操作限定符。 您将需要根据想要的 ePWM 输出来配置动作限定器。
假设您需要 EPWMA 上有50%占空比的输出、那么应将 A 输出配置为上计数时 CMPA 设置为高电平、下计数时 CMPA 设置为低电平。
此致、
彼得