[紧急求助]单片机系统在高低温过程中死机,不可自恢复!!!!!!!我的系统采用了一款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,其他。呵呵,希望大家帮忙提示了。
如果还需要什么其他的测试信息,请在回复中提出来。多谢了!!
[解决办法]
晶振就是提供时钟信号的,单片机根据这个标准的时钟信号来各个指令的时间,从而协调各部分的工作,如果没有晶振,就没有一个标准,那系统也就没办法相互协调工作了
[解决办法]
[解决办法][解决办法]外部的设备时钟一般都是从单片机主晶振直接,或者分频,或者倍频后再分频等方式提供。
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接口进行触发就可以.不是很难.