中断引起内存单元数据发生不可知变化

[复制链接]
2259|5
 楼主| ayfalcon 发表于 2013-3-24 15:10 | 显示全部楼层 |阅读模式
最近用PIC18F67K22做了一个东西,高级中断和低级中断都用来,高级中断用来通讯,上位机发过来一个命令,单片机收到命令后将自身采集的数据送给上位机,低级中断用作计时,每秒钟响应一次,现在发现采集上来的数偶尔会出现乱七八糟的变化,而且这种变化不是固定出现的,出现位置也不固定,但是把高级中断关掉后就没有问题了,一般这样的毛病都是因为什么原因呀,有人说因为进入中断再回来的时候如果不保存现场局部变量会发生不可预知的变换,但是我把所有的局部变量都设为了静态,问题还是存在,我现在是一点招都没有了,那位大侠帮帮忙呀。
airwill 发表于 2013-3-25 21:35 | 显示全部楼层
软件 BUG, 或者堆栈溢出
yewuyi 发表于 2013-3-26 08:43 | 显示全部楼层
1、动手工作前,请先掌握基本的C语言知识。
2、如何保存中断现场,在C编译器中这基本是编译器自动完成的。
3、保存现场和变量设置为静态并不等同
4、你的提问本身漏洞:请问你关闭掉高级中断后还如何保证通信呢?
NE5532 发表于 2013-3-26 17:12 | 显示全部楼层
请看:侃单片机版面,精华帖里,《程序调试黑宝书》。
 楼主| ayfalcon 发表于 2013-3-26 18:32 | 显示全部楼层
yewuyi 发表于 2013-3-26 08:43
1、动手工作前,请先掌握基本的C语言知识。
2、如何保存中断现场,在C编译器中这基本是编译器自动完成的。
...

我不用保证通信,关掉高级中断,不要通信了。测试其他功能
yewuyi 发表于 2013-3-27 08:44 | 显示全部楼层
检查有无错误的指针操作、临界代码等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

58

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部