首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

[]单片机系统在高低温过程中死机,不可自恢复!

2012-02-03 
[紧急求助]单片机系统在高低温过程中死机,不可自恢复!!!!!!!我的系统采用了一款philips的80C51单片机P89LV

[紧急求助]单片机系统在高低温过程中死机,不可自恢复!!!!!!!
我的系统采用了一款philips的80C51单片机P89LV51RD2,其温度范围是0-70度。单片机系统在常温下已 经过至少2周的烤机,没有复位过。在常温测试完成后,进入高低温测试阶段。启用了单片机自带的看门狗,所以没有设置外部的硬件看门狗。

目前的现象是,在经过至少3个小时50度高温测试后,仍工作正常。在进入低温-10度大约1小时后,系统死机,而且不可自恢复。我在软件系统内设置了几个监测变量,有两个分别是系统总的复位次数统计 和 单片机由于内部RAM和外部RAM出错而复位的次数统计,死机后手动复位系统,可正常工作,读取这两个变量的值分别是m和n(m略大于n),由此可看出,在完全死机之前,系统复位主要是由于RAM出错而导致的。注,在常温下,这几个监测值都是0。

我目前猜测可能的原因主要有以下几条:
1,单片机标称的温度范围是0-75度,虽然大家都知道,这个标称的温度范围是有余量的,但是余量有多大,这个不好确认,而且和厂家也确定不了(呵呵,他们不会随便乱说的)。所以我觉得是这个问题的可能性比较大。

2,晶振。大家都知道,晶振是比较脆弱的,而且我们使用的这款晶振,由于时间比较紧,没有经过公司的认证程序。我觉得,如果晶振偏了,应该不仅仅是影响系统的定时,也会导致系统的指令周期混乱。在操作外部RAM时,可能就会出错。

3,其他。呵呵,希望大家帮忙提示了。

如果还需要什么其他的测试信息,请在回复中提出来。多谢了!!





[解决办法]
晶振就是提供时钟信号的,单片机根据这个标准的时钟信号来各个指令的时间,从而协调各部分的工作,如果没有晶振,就没有一个标准,那系统也就没办法相互协调工作了
[解决办法]

探讨
我也知道温度对半导体性能的影响,载流子和迁移率之类的东东,但是我想搞清楚,在一个系统中,晶振的作用是什么?如果它工作不正常了,会有什么样的后果?对单片机有什么影响?单片机和晶振之间是怎么个协调工作的?呵呵
——晶振对于单片机,就像心脏对人一样重要,都不会动了,根本不会工作。

另外,在keil的工程属性要填晶振的工作频率,我想问一下,在工程属性里面指明晶振的工作频率有何目的了?除了在使用调试器的时候,计算程序执行时间之外,难道会把这个属性传递给单片机吗?我想应该不是的,单片机应该是在启动的时候,自动去适应晶振的频率,相当于把这个频率测出来之后,就按照这个频率去工作,一旦工作起来之后,估计不会再去适应晶振的频率,而是按照晶振的频率,自动去工作了。
——以前我照着这么设置,不过我没有认真研究过HEX文件,我觉得应该是有作用的。另外,这个设置对仿真是起作用的。
楼主想搞明白,可以设置不同的频率的晶振,一样的代码编译,然后拿二进制比较软件,比较这两个HEX,对比他们的区别。这样就知道是否起作用了。

[解决办法]
探讨
十分感谢大家的回复!

当初选择器件的时候,我是考虑了温度范围的问题,但是领导想用这个器件尝试一下,胳膊柠不过大腿,所以现在就这样了。请大家也不要在这个上面讨论了,我之所以提出这个问题,就是想挖点东西出来学习一下。

我也知道温度对半导体性能的影响,载流子和迁移率之类的东东,但是我想搞清楚,在一个系统中,晶振的作用是什么?如果它工作不正常了,会有什么样的后果?对单片机有什么影响?单片机和晶振之…

[解决办法]
外部的设备时钟一般都是从单片机主晶振直接,或者分频,或者倍频后再分频等方式提供。

cpu需要时钟(的上升沿或者下降沿)来作为基准,进行指令的流水线执行。简化的比方就是:时钟产生一个沿,cpu的核心就执行一条指令。

晶振不稳,不仅仅是频率的值与标称值相比有偏移,也可能是不稳定。

cpu在N个沿去读RAM,在N+1个沿将读来的数据进行处理。如果在N和N+1之间晶振频率抖动了,那就有可能还没有读到有效数据,cpu就开始处理了。如果只是一些运算数据倒无所谓,大概就是结果出错。而如果是影响到系统的,那结果就难预料了。


keil里填写的那个晶振值只是为了软件模拟debug用的,不会影响程序。
[解决办法]
KEIL中的晶振频率设置,是给仿真用的,和你最终输出的HEX文件完全没有关系。

你的问题很难定位的,因为你的测试温度已经超过了片子正常工作的温度,单片机在这种温度下工作与否都是可能的(概率的问题)。

正常的测试没有你这么做的。我参加过军品的测试,如果你芯片的工作温度是0-70度,那么通常高低温测试用5度和65度,要留有一定的裕量。

低于正常工作温度时单片机比较容易死机的,ARM也是一样。
[解决办法]
既然要保证低温工作正常,肯定要选择工业极的片子,板子上所有器件都要在器件的标称温度范围里面。

你现在选用的商业级芯片大多情况应该都可以通过公司的高低温测试,但是这并不是好事,这样的产品如果上市了可能会让你付出多倍的代价。所以,你的目标可能不是找到板子上哪个器件坏了,并换上个好的器件来通过测试。

个人建议,你现在要做的不是测试坏的板子,怀疑哪个元件的问题。可以仔细检查一下板子上用到的所有元器件的标称工作温度。

你选择的这款芯片可以设置成双倍频,也就是6时钟周期,不过它不是象ARM器件那样通过软件设置PLL电路,而是通过IAP软件或者烧录器设置,所以跟你的代码或者编译器无关
[解决办法]
楼主是想要通过这个帖子来增加测试环节呢?还是想针对你目前遇到的低温问题得到解决方案呢??我没有能看明白楼主最后几个问题是什么意思.

如果是要想一些测试方案,我不是很有经验,但是对于低温问题的话,我接触过一些设备的处理芯片也是有恒温要求的,基本上要么是针对高温要么是针对低温的.
因为一般来说很少场合会经历从芯片最低温到最高温的环境变化的. 大多数的解决方案都是通过温度传感器+半导体制冷/制热来做的. 并且对半导体制冷/制热模块的控制也可以直接写在单片机的程序内部的,只要通过温度传感器和单片机的I/O接口进行触发就可以.不是很难.

热点排行