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.
将PWM进行如下配置后,输出的波形开始正常输出大概10s,然后就保持恒定不变了:
EPWM_setActionQualifierAction(base3, EPWM_AQ_OUTPUT_A ,
EPWM_AQ_OUTPUT_TOGGLE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction(base3, EPWM_AQ_OUTPUT_B ,
EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
//
//AQCSFRC Active Register Reload From Shadow Options
//
EPWM_setActionQualifierContSWForceShadowMode(base1,
EPWM_AQ_SW_SH_LOAD_ON_CNTR_ZERO);
EPWM_setActionQualifierContSWForceShadowMode(base3,
EPWM_AQ_SW_SH_LOAD_ON_CNTR_ZERO);
为什么会出现这样的问题?有什么修改的建议吗?
你好,如果只是设置AQ模块的话我觉得不应该出现运行10秒才无输出的情况。
出现恒低或恒高的情况时,程序还是正常运行的吗?
你的程序中有没有设置TZ模块?
额,所以你的程序是一开始没有输出,设置AQ模块后有输出了,但是执行大概10秒后又会没有输出?
你的程序是自己编写的?还是根据TI例程修改的?基于例程的话具体是修改了些什么?
我的周期和死区时间配置如下,我这样配置有问题吗,我的代码在TI的LAUNCHXL-F280025c上的输出是正常的,但是在自己的板子上输出异常。
EPWM_setPeriodLoadMode(base1, EPWM_PERIOD_SHADOW_LOAD);
EPWM_setTimeBasePeriod(base1, pwm_period_ticks >> 1);
EPWM_setTimeBaseCounter(base1, 0);
EPWM_setPhaseShift(base1, 0);
EPWM_setTimeBaseCounterMode(base1, EPWM_COUNTER_MODE_UP_DOWN);
EPWM_setClockPrescaler(base1, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
EPWM_setDeadBandCounterClock(base3, EPWM_DB_COUNTER_CLOCK_FULL_CYCLE);
EPWM_setRisingEdgeDelayCount(base3, pwm_db_ticks_hs);
EPWM_setFallingEdgeDelayCount(base3, pwm_db_ticks_hs);
EPWM_setDeadBandDelayMode(base3, EPWM_DB_RED, true);
EPWM_setDeadBandDelayMode(base3, EPWM_DB_FED, true);
EPWM_setRisingEdgeDeadBandDelayInput(base3, EPWM_DB_INPUT_EPWMA);
EPWM_setFallingEdgeDeadBandDelayInput(base3, EPWM_DB_INPUT_EPWMA);
EPWM_setDeadBandDelayPolarity(base3, EPWM_DB_FED,
EPWM_DB_POLARITY_ACTIVE_LOW);
EPWM_setDeadBandDelayPolarity(base3, EPWM_DB_RED,
EPWM_DB_POLARITY_ACTIVE_HIGH);
额,所以是同样的代码,在launchPAD上运行正常,但是在自己的板子上会出现运行10秒之后变恒低或恒高?
我怎么觉得是你的程序在自己的板子上运行10秒后就不运行了?
你是如何判断PWM出现变恒低或恒高后板子还是在运行的?