[技术问答]

请问一次EPWM_IRQ 会产生两次中断吗?M467

[复制链接]
446|6
手机看帖
扫描二维码
随时随地手机跟帖
probedog|  楼主 | 2024-1-18 16:00 | 显示全部楼层 |阅读模式
请问一次EPWM_IRQ 会产生两次中断吗?
void EPWM0P0_IRQHandler(void)
{
    FW_M.RUN_end = 1;
    FW_M.RUN_cnt++;
    printf("axis acc irq %d %d\r\n",FW_M.RUN_end,FW_M.RUN_cnt);
    EPWM_ClearPeriodIntFlag(EPWM0, EPWM_Axis);
    EPWM_ClearAccInt(EPWM0, EPWM_Axis);
}


执行一次EPWM,出现了这样的结果:
axis acc irq 1 1
axis acc irq 1 2

使用特权

评论回复
xixi2017| | 2024-1-21 21:51 | 显示全部楼层
在您的代码中,出现了两次中断的可能原因有以下几种:

双重触发:EPWM中断可能被配置为在周期结束和累加器匹配时触发。如果在单个EPWM事件期间同时满足这两个条件,就可能导致中断被触发两次。

中断嵌套:还有可能存在某种级联效应或嵌套中断,导致处理程序被多次调用。

硬件/外设配置:EPWM外设可能具有影响中断行为的特定配置选项。

使用特权

评论回复
xixi2017| | 2024-1-21 21:52 | 显示全部楼层
为了进一步调查,您可以执行以下步骤:

查看数据表/参考手册:查阅您具体微控制器或处理器的数据表或参考手册,了解EPWM模块的配置选项和中断行为。

中断配置:检查代码中EPWM中断是如何配置的,确保配置正确。

外设状态标志:检查EPWM外设是否提供了指示中断原因的任何状态标志。适当地清除这些标志可能有助于避免多次中断。

中断嵌套:如果您的系统支持中断嵌套,请确保EPWM中断内部没有其他可能触发处理程序的中断。

如果您能提供有关硬件和EPWM配置的更多信息,我可能能够提供更具体的帮助。

使用特权

评论回复
laocuo1142| | 2024-1-23 10:28 | 显示全部楼层
EPWM_IRQ只会产生一次中断,而不是两次。

使用特权

评论回复
flycamelaaa| | 2024-1-23 10:29 | 显示全部楼层
如果你配置了EPWM的周期为T,那么每当T时间过去后,就会产生一次中断。

因此,如果你配置了EPWM的周期为2T,那么每2T时间过去后,会产生一次中断。如果你配置了EPWM的周期为T/2,那么每T/2时间过去后,会产生一次中断。

使用特权

评论回复
OliviaSH| | 2024-1-23 16:04 | 显示全部楼层
是不是有别的地方的中断啊

使用特权

评论回复
埃娃| | 2024-1-29 10:45 | 显示全部楼层
只会产生一次中断的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

246

主题

1070

帖子

3

粉丝