打印
[PIC®/AVR®/dsPIC®产品]

关于PIC18F芯片高、低优先级中断嵌套导致芯片复位的问题

[复制链接]
548|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现在一个产品上用到PIC18F系列单片机,设置了高、低优先级中断,每次进高优先级中断后软件关闭低优先级中断,高优先级中断最后又开启低优先级中断,就是这个开低优先级中断动作导致芯片会复位,该如何避免复位呢?

使用特权

评论回复
沙发
yiy| | 2023-8-18 09:49 | 只看该作者
都设置高低优先级了,怎么还进去要关闭低优先级呢,根本不用关闭就可以用了吧

使用特权

评论回复
板凳
yiy| | 2023-8-18 09:49 | 只看该作者
如果非要这么做,建议先关闭总中断,再试试。

使用特权

评论回复
地板
ayb_ice| | 2023-8-18 10:00 | 只看该作者
关低优先级中断,本身是多余的动作,先不关试试

使用特权

评论回复
5
zhxingyu|  楼主 | 2023-8-18 11:03 | 只看该作者
确实设置高、低优先级中断,进中断后关低级中断是多余,由于项目带电机驱动,如果不关,电机运转起来就影响显示,关掉就可以,这个因果关系没有找到。我的理解是如果在处理低优先级中断时突然需要响应高优先级中断,高优先级中断处理完成后,如果是关掉的就不会返回低优先级中断处理,没有关掉就会继续处理低优先级中断。

使用特权

评论回复
6
lcczg| | 2023-8-18 15:36 | 只看该作者
是哪个芯片,你又是如何关低级中断的?

使用特权

评论回复
7
zhxingyu|  楼主 | 2023-8-21 09:02 | 只看该作者
lcczg 发表于 2023-8-18 15:36
是哪个芯片,你又是如何关低级中断的?

PIC18F67,开了串口,不光复位,还有死机现象。进入高优先级中断就关掉低优先级中断,INTCONbits.GIEL=0.R如果不开串口没有这个问题。

使用特权

评论回复
8
lcczg| | 2023-8-21 14:12 | 只看该作者
zhxingyu 发表于 2023-8-21 09:02
PIC18F67,开了串口,不光复位,还有死机现象。进入高优先级中断就关掉低优先级中断,INTCONbits.GIEL=0.R ...

GIE位进入中断自动禁止,出中断自动开启。所以无需在中断里面对它操作。
建议在中断外进行操作,这样绝对安全。
另外---进高优先级中断后软件关闭低优先级中断,高优先级中断最后又开启低优先级中断
这样的目的是什么,减少低优先级中断的发生?处理不过来?
建议对中断处理函数做优化,里面的功能挪到外面,里面只做非做不可的事。

使用特权

评论回复
9
zhxingyu|  楼主 | 2023-8-23 08:20 | 只看该作者
lcczg 发表于 2023-8-21 14:12
GIE位进入中断自动禁止,出中断自动开启。所以无需在中断里面对它操作。
建议在中断外进行操作,这样绝对 ...

谢谢回复!现在把串口接收放到高优先级中断,目前有个莫名其妙的问题是,在串口正常接收数据一段时间后,芯片会自动复位。中断接收到数据,发送没有用到中断。

使用特权

评论回复
10
lcczg| | 2023-8-23 14:23 | 只看该作者
本帖最后由 lcczg 于 2023-8-23 14:27 编辑
zhxingyu 发表于 2023-8-23 08:20
谢谢回复!现在把串口接收放到高优先级中断,目前有个莫名其妙的问题是,在串口正常接收数据一段时间后, ...

你用的芯片是PIC18F67多少? 通常都会有一个复位寄存器RCON , 你通过它看看具体复位的原因?串口数据BUFFER有没有溢出,指针问题,看门狗?你要逐个排查

使用特权

评论回复
11
zhxingyu|  楼主 | 2023-9-11 18:17 | 只看该作者
lcczg 发表于 2023-8-23 14:23
你用的芯片是PIC18F67多少? 通常都会有一个复位寄存器RCON , 你通过它看看具体复位的原因?串口数据BUFF ...

67J11,另外请教两个问题:
1.  初次上电后置RCONbits.POR = 1,程序运行一段时间后,RCONbits.POR又被清零了,相当于重启了,但实际并没有断电。不知啥原因?
2. 怎么知道定义的变量溢出BANK?

使用特权

评论回复
12
daichaodai| | 2023-9-11 20:17 | 只看该作者
都是设置优先级了还关它干啥。

使用特权

评论回复
13
lcczg| | 2023-9-15 17:19 | 只看该作者
本帖最后由 lcczg 于 2023-9-15 17:21 编辑
zhxingyu 发表于 2023-9-11 18:17
67J11,另外请教两个问题:
1.  初次上电后置RCONbits.POR = 1,程序运行一段时间后,RCONbits.POR又被清零 ...

POR清零看起来要么是掉电重启,要么被软件更改了。这个要追查什么原因导致变零。第二个问题不清楚你的具体意思,原因。。。

使用特权

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

本版积分规则

69

主题

309

帖子

3

粉丝