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.
工具与软件:
专家们、您好!
我 已将 ePWM11配置为向上/向下模式、并 通过将 INTSEL 位写入011来尝试在 TCBR 为零或周期时启用 PWM 中断
EPWM_setInterruptSource (EPWM11_BASE、EPWM_INT_TBCTR_ZERO_OR_PERIOD);
我是否 正确假设每个 PWM 周期(以红色标记)都将产生2个中断、一个在 TCBR = 0时产生、另一个在 TCBR =周期时产生?
现在、当 TCBR 为0时、如果我检查方向(TBSTS. CTRDIR)、假设计数器将递增计数、我是否正确? 当 TCBR 等于周期时、计数器将会递减计数?
我试图验证上述,通过检查的方向在 PWM ISR ,但它总是显示为它是向上计数,它从不向下计数,我试图切换一个 GPIO 来验证这一点,但总是低!
__interrupt void pwm11_ISR(void) { pwm_CounterDIR = EPWM_getTimeBaseCounterDirection(EPWM11_BASE); testTCBR1 = EPWM_getTimeBaseCounterValue(EPWM11_BASE); if(EPWM_getTimeBaseCounterDirection(EPWM11_BASE)) { GPIO_writePin(46,0); } else { GPIO_writePin(46,1); } testTCBR2 = EPWM_getTimeBaseCounterValue(EPWM11_BASE); EPWM_clearEventTriggerInterruptFlag(EPWM11_BASE); ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1); Interrupt_clearACKGroup( INTERRUPT_ACK_GROUP3 | INTERRUPT_ACK_GROUP11 ); }
我在这里遗漏了什么配置?
如果我将中断源设置为:
EPWM_setInterruptSource (EPWM11_BASE、 EPWM_INT_TBCTR_ZERO );、则 GPIO 始终为低电平。
类似地、将中断源设置为
EPWM_setInterruptSource (EPWM11_BASE、 EPWM_INT_TBCTR_PERIOD );、 则 GPIO 始终为高电平。
但当我将中断源设置为时
EPWM_setInterruptSource (EPWM11_BASE、 EPWM_INT_TBCTR_ZERO_OR_PERIOD );、GPIO 始终为低电平!!、
您好、AK、
正确的是假设将为每个 PWM 周期产生2个中断、一个是 TCBR =0时、另一个是 TCBR =周期时、(标记为红色)?
有。
[quote userid="521194" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1424599/tms320f28379d-pwm-isr-not-triggered-when-pwm-is-counting-down-in-up-down-mode 现在,当 TCBR 为0时,如果我检查方向(TBSTS. CTRDIR)、假设计数器将递增计数、我是否正确? 当 TCBR 等于周期时、计数器将向下计数?[/QUOT]此外、是的。
我的第一个问题是:如果你在 ISR 中设定一个断点、那么断点到底被击中了吗? 如果没有、我们可以确认 ISR 未被调用、并进一步研究配置。 您还可以提供 ePWM init 的片段吗?
此致、
Allison
您好、Allison、
我找到了这个问题,在我的 PWM 初始化器,即使我设置 ePWM 源 EPWM_INT_TBCTR_ZERO_OR_PERIOD、 我也用相同的 PWM 触发 ADC SOC ,但 ADC 触发源被 配置为 ePWM_SOC_TBCTR_ZERO 而变化。
EPWM_setADCTriggerSource (EPWM11_BASE、EPWM_SOC_A、EPWM_SOC_TBCTR_ZERO);
它变为后的样子
EPWM_setADCTriggerSource (EPWM11_BASE、EPWM_SOC_A、 EPWM_SOC_TBCTR_ZERO_OR_PERIOD );、现在我能够检测向上计数和向下计数方向。
很高兴听到您已经解决了它! 感谢您发布解决方案