打印

W79E825无缘死机

[复制链接]
1920|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzhiyang|  楼主 | 2012-6-6 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在使用W79E825这颗芯片,但是当我进行参数设定完后需要将参数写入片内EEPROM时,频繁死机,不进行参数设定就没问题,单步走的时候发现能擦除,但死在写函数哪里,开始怀疑程序写法有问题,于是换了一种结构写,但是发现问题仍然存在,后来想到堆栈使用过深会导致死机,于是查了我的函数调用情况,main里调用keyfun函数,keyfun函数调用keydeal函数,keydeal调用set函数,set调用writeEEPROM函数,writeEEPROM条用写char型函数和写long型函数。最后改为直接在keyfun函数中条用set函数和wtiteEEPROM函数,暂时没发现死机现象,继续观察中,请各位高手指点一下,我死机的原因可能是这吗?或许还是其它什么原因吗?

相关帖子

沙发
huzhiyang|  楼主 | 2012-6-6 22:01 | 只看该作者
补充一下,这个单片机没有XDATA区,ram只有256

使用特权

评论回复
板凳
rodger_br| | 2012-6-6 22:13 | 只看该作者
貌似堆栈溢出了.

使用特权

评论回复
地板
ningling_21| | 2012-6-6 22:43 | 只看该作者
用仿真器基本可以找到原因.

使用特权

评论回复
5
呆板书生| | 2012-6-7 07:34 | 只看该作者
无缘是假,无缘还怎么查原因

使用特权

评论回复
6
huzhiyang|  楼主 | 2012-6-7 07:45 | 只看该作者
用仿真器基本可以找到原因.
ningling_21 发表于 2012-6-6 22:43
仿真的时候有时到写那里过得去,有时就在那里死掉了,

使用特权

评论回复
7
huzhiyang|  楼主 | 2012-6-7 08:28 | 只看该作者
今天早上又发现了一次,但次数较少,看来不完全是那个原因,查看了下ram的使用情况,一共256字节,编译的时候全局变量就占了222.6字节,怀疑是ram占用过多,导致执行的时候给局部变量分配内存不够造成的。

使用特权

评论回复
8
ayb_ice| | 2012-6-7 08:45 | 只看该作者
wtiteEEPROM函数能用多少堆栈
肯定程序本身有问题,写EE时要禁止中断

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
huzhiyang + 1
9
huzhiyang|  楼主 | 2012-6-7 08:50 | 只看该作者
wtiteEEPROM函数能用多少堆栈
肯定程序本身有问题,写EE时要禁止中断
ayb_ice 发表于 2012-6-7 08:45
写那段程序是别人用的很成熟的,写函数肯定不会有问题,设定部分的程序很简单的,内存一共256,全局变量就使用了222.6,我目前只能想到可能是ram使用过多造成的,只能先这样试试了

使用特权

评论回复
10
hwk612167| | 2012-6-7 09:23 | 只看该作者
同系列的单片机找个RAM大点的换上,测试一段时间就知道了

使用特权

评论回复
11
int3| | 2012-6-7 09:57 | 只看该作者
W79E825的EEPROM我有使用,而且出货量非常大,没出现过这样的情况。在写EEPROM时为了避免其它问题,最好把中断关断。你的现象应该是RAM不够引起的,在写的时候有进中断了。

使用特权

评论回复
12
huzhiyang|  楼主 | 2012-6-7 15:58 | 只看该作者
感谢8楼和11楼,应该就是这两个原因,但我想主要原因还是没有禁止中断,我有减少全局变量,也在写前关中断,似乎没死机的现象了,这次是疏忽了,因为是想着是别人使用成熟的程序,应该在写前关中断了,我就没有关,之前自己写程序时都会关中断的

使用特权

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

本版积分规则

32

主题

190

帖子

2

粉丝