打印
[技术问答]

诡异现象求助:AC78013 PWM1溢出中断无法触发

[复制链接]
2413|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AD, AC
MUC:AC78013FDLA。现象描述:PWM1做PWM波,计数器使用UP-Down模式.设置CNTOF中断。中断使能位正常。
异常的现象:计数器可以正常启动,但是无法做到CNTOF置位 (只在PWM中断中加断点,无法进入,中断中的引脚翻转函数无响应).用断点调试以后,发现在其他任何位置断点,再次启动,就能够置位,并进入中断了。

感觉现象比较诡异,目前不知道如何解决.

使用特权

评论回复

相关帖子

沙发
wangjj19950516| | 2022-3-17 18:14 | 只看该作者
在中断回调函数里是不是读寄存器判断溢出的?如果是这样,那就有问题,因为寄存器里的溢出标志在库里面的中断里已经清掉了,所以怎么样都不会进判断条件,可以读中断回调函数的参数来判断

使用特权

评论回复
板凳
重庆酱油仔|  楼主 | 2022-3-18 11:24 | 只看该作者
void BLDC_PWM_FaultCallback(void *device, uint32_t wpara, uint32_t lpara)
{
    if (PWM_GetOverflowFlag(PWM1))
    {
#ifdef USE_USER_ADC_DRIVER               
                PWM_CNTOF_CallBack();
//                PWM_ClrOverFlowFlag(PWM1);
#endif               
//        PWM_ClrOverFlowFlag(PWM1);
    }
    if (PWM_GetFaultChannelFlag(PWM1, (uint16_t)PWM_FAULT_CH_1))
    {
        g_mcStatus = FAULT;
        g_bldc_protector.faultFlag.bits.hwFault = 1;
        PWM_ClearFaultChannelFlag(PWM1, (uint16_t)PWM_FAULT_CH_1);
    }
}


是在中断后的回调函数中读的CNTOF的标识位.

使用特权

评论回复
地板
海滨消消| | 2022-4-2 15:43 | 只看该作者
这种现象的确有点诡异啊

使用特权

评论回复
5
tpgf| | 2022-4-2 17:18 | 只看该作者
是不是没有使能啊

使用特权

评论回复
6
wakayi| | 2022-4-2 17:30 | 只看该作者
怀疑是软件的问题 重新启动一下

使用特权

评论回复
7
wowu| | 2022-4-2 17:38 | 只看该作者
单步调试进步了断点吗

使用特权

评论回复
8
renzheshengui| | 2022-4-2 17:43 | 只看该作者
是不是进入中断后自己就清零了啊

使用特权

评论回复
9
xiaoqizi| | 2022-4-2 17:54 | 只看该作者
弱点的问题都很诡异

使用特权

评论回复
10
木木guainv| | 2022-4-2 18:01 | 只看该作者
估计是启动区域的问题

使用特权

评论回复
11
wangjj19950516| | 2022-4-2 18:01 | 只看该作者
重庆酱油仔 发表于 2022-3-18 11:24
是在中断后的回调函数中读的CNTOF的标识位.

是因为中断标志位已经在库里面的中断处理函数中清掉了,你这里在中断回调函数里不能读寄存器判断,用下面这种方式就可以了。

使用特权

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

本版积分规则

10

主题

55

帖子

1

粉丝