[PIC®/AVR® MCU]

PIC单片机中断的问题

[复制链接]
305|2
手机看帖
扫描二维码
随时随地手机跟帖
ayfalcon|  楼主 | 2022-11-30 20:08 | 显示全部楼层 |阅读模式
不知道各位大大使用PIC单片机中断出过问题没有,我原来使用18F4520,那个时候刚开始学,不会用,在中断里边执行了太多的东西,甚至有个小延时,程序运行的时候经常会出现莫名其妙的问题,有许多寄存器的值会无缘无故的被更改,尤其是全局变量被改变后程序会出现运行错误,后来听别人的,减小了中断的代码量,问题解决了,但是我总觉得问题不会完全解决,按理来说中断代码量大不应该出问题,如果代码量大出问题,那么及时代码量小,也会出问题,只不过是几率而已,再做项目就尽量避免用中断,但是现在用18F6K22,用了两个中断,低级中断是个定时中断,每秒进入中断,给定时标志置位,计时寄存器加1,然后就退出,高级中断给UART通讯,每接收到一个字节,在中断中判断接收到的字节,最多进行6次判断,代码量也不大,运行的时间也不多,但是现在在通讯质量不好的时候,设备就会出现莫名其妙的问题,好多变量值就被改变了,那位大神能给传授一下中断的使用技巧呀。

使用特权

评论回复
ling_jing| | 2022-12-1 10:28 | 显示全部楼层
建议UART中断内不要做判断,耗时长。因为进入中断后,中断使能位是关闭的,只有退出中断后其它低优先级中断才能工作,因而可能错过了一些定时中断
有关中断的工作机理,可以参考如下文档。如果你用的C语言写的代码,那一些基本的入中断保护你就不用考虑了,在中断里只要记得清中断标志位即可
https://ww1.microchip.com/downloads/en/DeviceDoc/31008a.pdf

使用特权

评论回复
lcczg| | 2022-12-1 15:34 | 显示全部楼层
你提到"现在在通讯质量不好的时候,设备就会出现莫名其妙的问题,好多变量值就被改变了". 这个和中断没关系吧,还是深挖通讯不良导致什么异常吧。

使用特权

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

本版积分规则