打印

求助!I2C通信导致单片机自动复位

[复制链接]
2493|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laibour|  楼主 | 2012-2-24 14:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 laibour 于 2012-2-24 15:16 编辑

现在做的一个项目用的芯片为PIC18F66J60和PIC18F26K20,PC发送指令到单片机,然后主从芯片在进行I2C通信的时候,操作过程中偶尔会出现芯片自动复位的情况,检查了电源没有问题,通过测试,单片机的寄存器RCON中只有bit4从1变为了0(如图)。其它位都没有变化,请教一下各位,这种情况可能是怎样产生的呢?

截图00.jpg (76.76 KB )

截图00.jpg
沙发
joly314| | 2012-2-24 15:03 | 只看该作者
你连型号都不告诉别人,露个腿就叫人知道你是谁,难度很大的.

使用特权

评论回复
板凳
laibour|  楼主 | 2012-2-24 15:17 | 只看该作者
2# joly314
芯片型号已经加上去了

使用特权

评论回复
地板
yewuyi| | 2012-2-24 15:56 | 只看该作者
这个可能是执行了某条软复位指令造成的。

你的通信程序中可能因为通信时序错而执行了一条软件复位指令。

使用特权

评论回复
5
laibour|  楼主 | 2012-2-24 16:23 | 只看该作者
4# yewuyi
我按照手册上面的说明查了很久,低电压复位、看门狗、堆栈的上溢下溢都不是,我程序里面也没有其它指令让芯片复位了啊,要怎样才知道是何种复位呢?

使用特权

评论回复
6
yewuyi| | 2012-2-25 08:59 | 只看该作者
检查IIC通信部分的代码看看

使用特权

评论回复
7
laibour|  楼主 | 2012-2-27 10:40 | 只看该作者
6# yewuyi
如果是代码问题的话,应该每一次都会出现复位的情况吧,但现在的情况是不确定多久出现一次,有时候连续操作几次就出现了,有的时候连续操作几十次也不出现。所以现在特别头痛。

使用特权

评论回复
8
yewuyi| | 2012-2-27 11:00 | 只看该作者
6# yewuyi  
如果是代码问题的话,应该每一次都会出现复位的情况吧,但现在的情况是不确定多久出现一次,有时候连续操作几次就出现了,有的时候连续操作几十次也不出现。所以现在特别头痛。 ...
laibour 发表于 2012-2-27 10:40


你的思想有问题。
不管是硬件还是软件问题,都不能说每一次都会出现故障,任何一种问题都有一定的触发条件要求,你当前的发送过程中可能只是偶尔触发了那个故障,现象就是偶尔有问题。
检查软件中无法临界代码等,至于什么叫临界代码,请查阅我过去的帖子或者百度一下。

根据个人经验,你的这个问题99.9%是软件问题,如果你的代码中没有复位指令的话,则多数是堆栈溢出。

使用特权

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

本版积分规则

22

主题

81

帖子

0

粉丝