Chinaunix
标题:
[紧急求助]单片机系统在高低温过程中死机,不可自恢复!!!!!!!
[打印本页]
作者:
hustzxx
时间:
2008-12-19 14:39
标题:
[紧急求助]单片机系统在高低温过程中死机,不可自恢复!!!!!!!
我的系统采用了一款philips的80C51单片机P89LV51RD2,其温度范围是0-70度。单片机系统在常温下已 经过至少2周的烤机,没有复位过。在常温测试完成后,进入高低温测试阶段。启用了单片机自带的看门狗,所以没有设置外部的硬件看门狗。
目前的现象是,在经过至少3个小时50度高温测试后,仍工作正常。在进入低温-10度大约1小时后,系统死机,而且不可自恢复。我在软件系统内设置了几个监测变量,有两个分别是系统总的复位次数统计 和 单片机由于内部RAM和外部RAM出错而复位的次数统计,死机后手动复位系统,可正常工作,读取这两个变量的值分别是m和n(m略大于n),由此可看出,在完全死机之前,系统复位主要是由于RAM出错而导致的。注,在常温下,这几个监测值都是0。
我目前猜测可能的原因主要有以下几条:
1,单片机标称的温度范围是0-75度,虽然大家都知道,这个标称的温度范围是有余量的,但是余量有多大,这个不好确认,而且和厂家也确定不了(呵呵,他们不会随便乱说的)。所以我觉得是这个问题的可能性比较大。
2,晶振。大家都知道,晶振是比较脆弱的,而且我们使用的这款晶振,由于时间比较紧,没有经过公司的认证程序。我觉得,如果晶振偏了,应该不仅仅是影响系统的定时,也会导致系统的指令周期混乱。在操作外部RAM时,可能就会出错。
3,其他。呵呵,希望大家帮忙提示了。
如果还需要什么其他的测试信息,请在回复中提出来。多谢了!!
顺带还请教一个问题,晶振对系统的正常运行有什么作用?以前学CPU原理的时候,没有学好,请大家指点。最好说详细点,我想好好复习一下,或者有相应的参考书,敬请推荐一下。
反正,我觉得应该不只是影响定时这么简单吧!!
作者:
q1208c
时间:
2008-12-19 14:46
建议做高温试验.
低温可能是真的很麻烦. 别说 -10, -2 估计都会有问题.
关于没有重置的问题, 估计是由于在低温下, RAM, CPU等硬件都不能正常工作了. 所以, 你的软件再好, 也没人帮你执行了.
俺不是专业搞这个的, 瞎猜的.
作者:
fineamy
时间:
2008-12-19 16:08
标题:
回复 #1 hustzxx 的帖子
器件都有工作的温度范围,
晶振也一样。超出范围器件特性不能保证。
作者:
hustzxx
时间:
2008-12-19 16:27
十分感谢楼上二位的回复!!
不好意思,平时没有注意攒分,以后再给二位还上!
作者:
hustzxx
时间:
2008-12-19 17:01
请教一下q1208c ,为什么在低温下,器件反而容易出问题了!
作者:
hustzxx
时间:
2008-12-19 17:03
我请教了别人,他们说“晶振就是用来提供时钟信号的,单片机根据这个标准的时钟信号来确定各个指令的时间,从而协调各部分的工作,如果没有晶振,就没有一个标准,那系统也就没办法相互协调工作了。读取外部RAM,用的时钟信号是有单片机提供的,就算晶振有偏差,只要满足读写的时序要求和延时要求就不会出问题,晶振的偏差主要还是影响定时那一块。”
但是我还有一点疑惑。无论晶振是否有偏差,单片机程序在操作外部扩展RAM时,在高温和常温下,都应该是满足读写的时序要求和延时要求。我设置的RAM监测代码,在RAM的值出错时,才会去复位系统。
难道在-10度时,会有什么原因导致 不满足读写的时序要求和延时要求了呢?或者是什么原因改写了RAM中保存的值?
还请指点一下!
作者:
fineamy
时间:
2008-12-19 17:43
标题:
回复 #6 hustzxx 的帖子
所有读写时序等假定都是在器件正常工作范围的前提下。
这个范围外的器件工作特性是未知的,比如ram会出现数据莫名丢失,无法读写都有可能。
要分析这些异常的原因是非常艰难的。
使用器件前都要看它的工作温度,这是起码的常识。
[
本帖最后由 fineamy 于 2008-12-19 17:45 编辑
]
作者:
fineamy
时间:
2008-12-19 18:02
标题:
另外
你的高低温测试应该在0~70范围。
单片机有军工级,工业级等分别
你的CPU属于消费类级别,
作者:
cjaizss
时间:
2008-12-19 19:10
在硬件设计前,先决定好你的需求。如果你选好了这样的IC,却还要去搞这种低温测试,我只能说你们当初设计的时候怎么想的呢?
-10度的时候,你的单片机都已经不正常了,你的这个硬件还测试个啥劲?
找别的芯片替代,换个引角、电气参数兼容的代替。
作者:
cjaizss
时间:
2008-12-19 22:11
另外,温度对半导体的影响在于载流子浓度、载流子迁移率会随着温度的变化而变化。
这种影响会导致你的器件工作异常甚至无法工作。
不同级别(商用、工用、军用)的芯片的电路是不一样的,军用芯片的电路设计是不一样,为了满足恶劣情况下的工作,其设计想了很多点子,不是一般工用甚至商用可比。
作者:
emmoblin
时间:
2008-12-19 22:12
我以前也死机过,主要是因为温度高,程序跑飞了。
建议看看能不能把程序读指令周期加长。
让运行速度延长,可能就不会死机了
作者:
hustzxx
时间:
2008-12-22 08:56
十分感谢大家的回复!
当初选择器件的时候,我是考虑了温度范围的问题,但是领导想用这个器件尝试一下,胳膊柠不过大腿,所以现在就这样了。请大家也不要在这个上面讨论了,我之所以提出这个问题,就是想挖点东西出来学习一下。
我也知道温度对半导体性能的影响,载流子和迁移率之类的东东,但是我想搞清楚,在一个系统中,晶振的作用是什么?如果它工作不正常了,会有什么样的后果?对单片机有什么影响?
另外,在keil的工程属性要填晶振的工作频率,我想问一下,在工程属性里面指明晶振的工作频率有何目的了?除了在使用调试器的时候,计算程序执行时间之外,难道会把这个属性传递给单片机吗?我想应该不是的,单片机应该是在启动的时候,自动去适应晶振的频率,相当于把这个频率测出来之后,就按照这个频率去工作,一旦工作起来之后,估计不会再去调整了。
大家说说看了!
作者:
hustzxx
时间:
2008-12-22 10:36
验证了一下,我的系统实际晶振是22M的,把工程属性里面的晶振改为44M的,程序下载下去之后,系统仍然工作正常。我觉得这似乎说明在工程属性里面指明系统的晶振,目的之一是用于在调试器里面计算程序的工作时间,与系统的实际工作似乎关系不大。
作者:
cjaizss
时间:
2008-12-22 10:40
晶振只是给了状态机一个脉冲源,以便其内部触发器可以正常工作而已.
作者:
hustzxx
时间:
2008-12-24 10:43
这几天忙着定位问题,不好意思,没有来得及提供更多的测试信息。
我们现在多加了几块班子去做高低温测试,现在发现还是以前出问题的那一块又死机了,其它的几块都是好的。然后把那块死机的板子的单片机换了个新的,再做高低温还是死机。现在我们把这块板子的晶振和电源芯片换成新的,正在做高低温,结果还没出来。
从以上的现象来看,似乎不是单片机问题了,似乎是一个 单个问题,死机的那块板子的某个器件存在问题。
作者:
beepbug
时间:
2008-12-24 19:12
比较容易出问题的,不是单片机芯片,而是外部的分立元件(包括晶振)。请核实一下所有元器件的温度范围。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2