牛卧堂MCU技术交流

标题: 请问一次EPWM_IRQ 会产生两次中断吗?M467 [打印本页]

作者: 匿名    时间: 2024-1-17 14:16
标题: 请问一次EPWM_IRQ 会产生两次中断吗?M467
请问一次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


作者: 匿名    时间: 2024-1-17 15:27
如何控制任意脉冲个数,感觉新唐应该在EPWM搞出来32bit的计数器。16bit只能到65535,是不是有时候不好用?
作者: chrishu    时间: 2024-1-17 16:28
中断源有很多个,0点、周期点、上比较点、下比较点、累加器等都可以产生中断,主要看你使能了什么中断

作者: chrishu    时间: 2024-1-17 16:39
游客 121.29.98.x 发表于 2024-1-17 15:27
如何控制任意脉冲个数,感觉新唐应该在EPWM搞出来32bit的计数器。16bit只能到65535,是不是有时候不好用? ...

EPWM的累加计数器是16位的,可以计数到65536个脉冲。主要用于计数值到后停止EPWM、产生中断或触发PDMA
你是什么应用需要一次记录超过65536个脉冲呢?
如果说只是为了记录脉冲个数,可以设置累加中断,中断里再二次累加
作者: 匿名    时间: 2024-1-17 16:39
chrishu 发表于 2024-1-17 16:28
中断源有很多个,0点、周期点、上比较点、下比较点、累加器等都可以产生中断,主要看你使能了什么中断
...

如果我想实现 一次性 发20万个脉冲,最好用什么中断比较合适?
是在EPWM中断里面进行累加计数?
还是多次记录ACC的中断?
作者: 匿名    时间: 2024-1-17 16:50
chrishu 发表于 2024-1-17 16:39
EPWM的累加计数器是16位的,可以计数到65536个脉冲。主要用于计数值到后停止EPWM、产生中断或触发PDMA
你 ...

只能以图片来回复了

A12.JPG (433.23 KB, 下载次数: 66)

A12.JPG

作者: chrishu    时间: 2024-1-18 11:51
游客 121.29.98.x 发表于 2024-1-17 16:39
如果我想实现 一次性 发20万个脉冲,最好用什么中断比较合适?
是在EPWM中断里面进行累加计数?
还是多次 ...

进中断频繁会增加程序的负担。
可以采用累加中断。但是会存在记录值与实际有误差。因为产生累加中断,累加器已经停止计数,中断里清除累加中断标志后,它才会重新开始计数。而这个过程PWM并没有停止输出脉冲。进中断的次数越多漏记的脉冲个数越多。
一开始指使能累加器中断,倒数第二次进中断的时候可以使能累加器停止功能。




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2