找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

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

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2024-1-17 14:16:10 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请问一次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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

沙发
匿名  发表于 2024-1-17 15:27:31
如何控制任意脉冲个数,感觉新唐应该在EPWM搞出来32bit的计数器。16bit只能到65535,是不是有时候不好用?
回复 支持 反对

使用道具

板凳
chrishu 发表于 2024-1-17 16:28:35 | 只看该作者
中断源有很多个,0点、周期点、上比较点、下比较点、累加器等都可以产生中断,主要看你使能了什么中断
回复 支持 反对

使用道具 举报

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

EPWM的累加计数器是16位的,可以计数到65536个脉冲。主要用于计数值到后停止EPWM、产生中断或触发PDMA
你是什么应用需要一次记录超过65536个脉冲呢?
如果说只是为了记录脉冲个数,可以设置累加中断,中断里再二次累加
回复 支持 反对

使用道具 举报

5#
匿名  发表于 2024-1-17 16:39:32
chrishu 发表于 2024-1-17 16:28
中断源有很多个,0点、周期点、上比较点、下比较点、累加器等都可以产生中断,主要看你使能了什么中断
...

如果我想实现 一次性 发20万个脉冲,最好用什么中断比较合适?
是在EPWM中断里面进行累加计数?
还是多次记录ACC的中断?
回复 支持 反对

使用道具

6#
匿名  发表于 2024-1-17 16:50:04
chrishu 发表于 2024-1-17 16:39
EPWM的累加计数器是16位的,可以计数到65536个脉冲。主要用于计数值到后停止EPWM、产生中断或触发PDMA
你 ...

只能以图片来回复了

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

A12.JPG
回复 支持 反对

使用道具

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

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

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU