Part Number:AM2434
你好!
1:我设置定时器并开启中断,但是无法触发中断,请帮检查下程序,是否初始化和TimerP_start(gTimerBaseAddr[TIMER0_WU])就可以了?
2:设置PWM中断: EPWM_etIntrCfg(epwmBaseAddr, EPWM_ET_INTR_EVT_CNT_EQ_ZRO,
EPWM_ET_INTR_PERIOD_FIRST_EVT); 并在中断处理函数中判断flag==2的时候置高GPIO。
现象并不是在第二个PWM处进行置高的,这是为什么啊?
并且触发的点也不是在计数为0的点。请问以上可能是什么问题啊?
Cherry Zhou:
您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,
能再多提供一些细节吗?计时器中断没有被触发是吗?
jiehui Wu 说:TimerP_start(gTimerBaseAddr[TIMER0_WU])就可以了
是的,如果没有在 syscfg 计时器配置中选中time start按钮,那么就必须启动计时器。
jiehui Wu 说:EPWM_etIntrCfg(epwmBaseAddr, EPWM_ET_INTR_EVT_CNT_EQ_ZRO, EPWM_ET_INTR_PERIOD_FIRST_EVT);
请问ePWM 和计时器在配置中是如何互连的? 还是说这两个分别有问题?
从您给出的图来看(指的是包含触发点的图像),我们假设黄色线是 PWM 波形,蓝色线是在 CTR = 0时进入 EPWM 中断的时间。
关于在 CTR = 0事件一段时间后被触发的中断,这是因为软件会有一些接近600nsec 的中断延迟,来处理实际的应用 ISR并为其服务。 这个600nsec 处于Release mode。
如需更多信息,请参阅以下链接:
想要从计时器创建中断,请参考以下示例:
https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_KERNEL_DPL_INTERRUPT_PRIORITIZATION.html
在这个示例中,您可以看到3个具有优先级的定时器中断:
要想在 ePWM 上创建中断,请参考以下示例:
https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_EPWM_HR_DUTY_CYCLE.html