打印

单片机晶振偶尔停振,然后重新起振,什么原因?

[复制链接]
楼主: 血刀老祖
手机看帖
扫描二维码
随时随地手机跟帖
41
wxrbjrx| | 2011-6-20 11:29 | 只看该作者 回帖奖励 |倒序浏览
三块故障板子用示波器测晶振osc2端峰峰值电压都是5.6V,osc1端峰峰值电压分别为4.1V    4.1V   4.6V。前面两个为万士和的,后面这个是晶源的。工作3个来小时后重新测,电压基本不变,也未出现故障
从故障板中选了一块,更换新晶振,试了5、6个,电压变化正负0.1V左右,小于正负0.2V。
有两块老化很长时间了,未发现故障的板子,晶振和第三块故障板是同一个厂家的,osc2端电压分别为5.6V    5.7V ,osc1端电压分别为4.6V    4.7V。工作3个来小时后重新测,电压基本不变。
将原来200欧的电阻换成5.1k欧的电阻,用几种晶振分别试了,osc2端峰峰值3.2V,osc1端峰峰值2.3V,能正常工作。
找了另外一家的晶振,和我们现在用的进行比较,osc2端电压差不多,osc1端电压比我们现在用的一致性要好很多,我们现在用的有正负0.2V的变化。

-----------------------------------------------------
从上面的情况,能看出什么问题吗?

使用特权

评论回复
42
yewuyi| | 2011-6-20 11:45 | 只看该作者
振荡有没有过激,你可以先看看波形是否为标准的正弦波。

要想找到问题,首先要先想办法让问题重现。

请问,你是如何判断现场故障后是因为晶体停振造成的!?
这个判断的方法如果不正确,从而得到了错误的结果,那就找错了方向,无法分析。

个人估计可能比较大的两种原因:
1、程序有问题造成了MCU的PC指针溢出等形成复位
2、EMC性能较差,造成在现场被干扰导致复位

使用特权

评论回复
43
wxrbjrx| | 2011-6-20 12:53 | 只看该作者
振荡有没有过激,你可以先看看波形是否为标准的正弦波。

要想找到问题,首先要先想办法让问题重现。

请问,你是如何判断现场故障后是因为晶体停振造成的!?
这个判断的方法如果不正确,从而得到了错误的结果,那 ...
yewuyi 发表于 2011-6-20 11:45

谢谢yewuyi,我们的设备有液晶显示,开机后首先是一段开机欢迎界面,然后开始工作。
故障是在工作过程中突然不动作了,保持当时的工作状态大概1分钟,这一分钟里,液晶显示不变化,继电器保持当时状态。
然后从停止的那个点继续工作,液晶显示开始变化,继电器开始动作,没有复位重起。

这个软件使用1年多了,如果是软件问题,是不是应该故障比例相当高啊?实际上我们发现这种情况很少,对于故障板我们观察很长时间,都不一定出现。
EMC性能差我觉得应该有可能,受到外界干扰,会不会不重起,而是动作异常?
经常出现的故障就好解决了,这种好长时间看不到一次的,太麻烦了。

使用特权

评论回复
44
wxrbjrx| | 2011-6-20 13:03 | 只看该作者
本帖最后由 wxrbjrx 于 2011-6-20 13:34 编辑

故障板1:工作过程中突然死机20秒左右,无动作,然后又恢复正常继续工作,但此时重新进行的压力测量不准了(使用内部AD),反复充气排气,过了几分钟后,压力测量又准了。
故障2:工作过程中死机,无动作,1分多种后恢复正常,继续动作,过程中压力测量准确。
故障3:工作过程中死机,无动作,30秒后恢复正常继续工作,但重新进行的压力测量不准,3分钟后压力测量变准了。

使用特权

评论回复
45
yewuyi| | 2011-6-20 13:24 | 只看该作者
请问你使用了内部看门狗没有!?

使用特权

评论回复
46
wxrbjrx| | 2011-6-20 13:46 | 只看该作者
本帖最后由 wxrbjrx 于 2011-6-20 13:56 编辑

没有,没有看门狗,如果程序跑飞,应该不会回来了吧,并且三块都能从跑飞处回头接着运行,是不是几率比较小啊。

使用特权

评论回复
47
t.jm| | 2011-6-20 13:46 | 只看该作者
故障板1:工作过程中突然死机20秒左右,无动作,然后又恢复正常继续工作,但此时重新进行的压力测量不准了(使用内部AD),反复充气排气,过了几分钟后,压力测量又准了。
故障2:工作过程中死机,无动作,1分多种后恢 ...
wxrbjrx 发表于 2011-6-20 13:03

这个“假象”似乎是停振了。
但是要这么多MCU的振荡都出问题更是比中奖还难。

使用特权

评论回复
48
wxrbjrx| | 2011-6-20 13:51 | 只看该作者
这个“假象”似乎是停振了。
但是要这么多MCU的振荡都出问题更是比中奖还难。
t.jm 发表于 2011-6-20 13:46

检查了故障板晶振,没发现和其他的有明显不同,似乎不应该是停振了,现在开始怀疑电磁兼容不好。

使用特权

评论回复
49
yewuyi| | 2011-6-20 13:56 | 只看该作者
LCD部分有没有做通信超时溢出的故障报警!?

看40楼的描述,可能是程序有临界代码等,这些临界代码在一些状态下可能被触发动作了。

使用特权

评论回复
50
wxrbjrx| | 2011-6-20 14:03 | 只看该作者
LCD部分有没有做通信超时溢出的故障报警!?

看40楼的描述,可能是程序有临界代码等,这些临界代码在一些状态下可能被触发动作了。
yewuyi 发表于 2011-6-20 13:56

“LCD部分有没有做通信超时溢出的故障报警”是什么意思啊?不太懂,是不是存储空间快用满了,不是我写的程序。

使用特权

评论回复
51
liweichun88| | 2011-6-20 16:10 | 只看该作者
电源是不是不稳定啊,

使用特权

评论回复
52
liweichun88| | 2011-6-20 16:11 | 只看该作者
工作正常,偶尔停,可能是程序跑飞了

使用特权

评论回复
53
liweichun88| | 2011-6-20 16:11 | 只看该作者
混点积分,但还是不能下东西,真奇怪,

使用特权

评论回复
54
wxrbjrx| | 2011-6-20 16:23 | 只看该作者
工作正常,偶尔停,可能是程序跑飞了
liweichun88 发表于 2011-6-20 16:11

电源没问题,不会低到死机的程度。程序跑飞了,一般不会再回来了吧。

使用特权

评论回复
55
yewuyi| | 2011-6-20 17:12 | 只看该作者
电源没问题,不会低到死机的程度。程序跑飞了,一般不会再回来了吧。
wxrbjrx 发表于 2011-6-20 16:23


PIC的硬堆栈结构和单字指令,一般都能形成溢出重启。

热复位重启时,RAM区数据不会丢失,如果你用C语言时没有那一段上电初始化RAM程序,则各个数据基本都不会被改变。

使用特权

评论回复
56
wxrbjrx| | 2011-6-20 21:27 | 只看该作者
PIC的硬堆栈结构和单字指令,一般都能形成溢出重启。

热复位重启时,RAM区数据不会丢失,如果你用C语言时没有那一段上电初始化RAM程序,则各个数据基本都不会被改变。 ...
yewuyi 发表于 2011-6-20 17:12

热复位重启,应该也要执行开机LCD显示欢迎的界面吧,他们说没显示最初的那个界面。

使用特权

评论回复
57
mmax| | 2011-6-20 22:02 | 只看该作者
热情参与一下:
1)故障样机是在一个客户那出现,还是多个客户?
2)故障样机拿回来后,复现问题了吗?
3)故障描述是现场工人复述的吗?

使用特权

评论回复
58
yewuyi| | 2011-6-21 09:20 | 只看该作者
PIC的硬堆栈结构和单字指令,一般都能形成溢出重启。

热复位重启时,RAM区数据不会丢失,如果你用C语言时没有那一段上电初始化RAM程序,则各个数据基本都不会被改变。 ...
yewuyi 发表于 2011-6-20 17:12


则需要看你的初始化程序怎么做的了

使用特权

评论回复
59
yewuyi| | 2011-6-21 09:21 | 只看该作者
1、3块都是生产调试时发现的,不同的人员发现的
2、每个都只发现1次,其中有一块发生过上电2分钟后才工作的情况,估计是别的故障,没什么大关系
3、都是现场工人说的,情况属实没问题

三块板分别是三个批次的,从0 ...
wxrbjrx 发表于 2011-6-21 09:12


从情况2看,你的这个设计肯定有问题。

使用特权

评论回复
60
zhaoyu2005| | 2011-6-21 10:02 | 只看该作者
俺觉得程序出问题或者由程序导致液晶刷新出问题的可能性大。
试想,如果晶振会停振,并且能恢复,那么晶振应该工作临界状态,如果工作在临界状态,那施加干扰或者让机器出在温度变化大的环境中,机器停振的现象应该能较容易重现。

使用特权

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

本版积分规则