打印
[开发工具]

dspic2010遇到的奇怪问题

[复制链接]
2120|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
giftss|  楼主 | 2013-9-26 09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位一个困扰我的问题。我使用2010芯片,该芯片程序存储空间为4096,我用到了4088,运行时一段时间程序就被自动复位,回到刚上电的状态。反复试验发现,如果去掉Uart通讯,就没有问题了(通讯采用的是键盘100ms访问一次2010控制的主机)。我查了RCON,标志位显示“执行了reset命令”。似乎是执行了defaultinterrupt 函数,不确定。我样能找到reset的源呢?还有个奇怪的现象,程序原来是在3010芯片上跑的,没这个问题。没修改代码,只是换到了2010,相应更改了gld等文件,就不行了,请大家指教一下会是哪里有问题,我有些摸不着头脑了。谢谢!
沙发
1521732588| | 2013-9-26 09:43 | 只看该作者
头文件?
2010 和3010头文件能一样吗

使用特权

评论回复
板凳
giftss|  楼主 | 2013-9-26 10:07 | 只看该作者
按照编译时出错的提示,我把3010相关的文件改成了2010的。然后编译通过,一般运行几个小时才会出我说的问题。如果把我说的外接键盘去掉,程序就一直跑,也没有问题了。有什么线索建议我去查吗?谢谢

使用特权

评论回复
地板
1521732588| | 2013-9-26 10:26 | 只看该作者
外接键盘通信这一块 检查一下是不是跳不出中断,溢出或是什么的

使用特权

评论回复
5
giftss|  楼主 | 2013-9-26 10:58 | 只看该作者
这个能用什么寄存器来看吗?或是通过什么方法来定位。毕竟运行几个小时是没有问题的,所以在程序逻辑上我一时也看不出什么问题来。谢谢帮忙。

使用特权

评论回复
6
giftss|  楼主 | 2013-9-29 14:37 | 只看该作者
我又做了几个实验,发现程序跑进了 defaultinterrupt 函数。而系统默认的函数内容就是 reset。我自定义了这个函数,如果函数里只有一条 NOP指令的话,程序就能一直跑着。如果使用除reset 和NOP以外的语句,程序就会死在那里,不再运行,也不响应任何中断。请问大家对这个有什么见解啊。

使用特权

评论回复
7
XIEYUANBIN| | 2013-9-29 16:55 | 只看该作者
dsPIC有芯片振荡、失效、等等很多陷阱,你查查看是掉到哪个陷阱里面去了。另外看是否是没来得及喂狗

使用特权

评论回复
8
giftss|  楼主 | 2013-9-30 10:31 | 只看该作者
我查过Rcon,值为0010,0000,0100,0011,只是执行了reset指令,bit15是0,这个是不是可以排除陷阱的问题?狗是被禁止的,我只开了time2,3以及uart的中断,且写了中断程序。我现在不知道该怎么找到这个触发源,而且我试图在defaultinterrupt中加入一行赋值的语句看看关心的变量,但这种状态下系统会跑到司机而不是复位,所以也看不到什么东西。望专家给些建议,不一定马上解决问题,给一个继续的线索就好。谢谢。

使用特权

评论回复
9
giftss|  楼主 | 2013-10-8 16:31 | 只看该作者
总结一下我的问题其实就是,我有一个程序,运行在3010芯片上没有问题,为了降低成本,改用2010芯片,不改动代码,移植后在2010芯片上跑几个小时就会死机,发现进入了 defaultinterrupt 函数。查询Rcon,值为0010,0000,0100,0011。请问大家有知道大概的问题所在吗?

使用特权

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

本版积分规则

1

主题

8

帖子

0

粉丝