zhangsai 发表于 2012-11-21 09:20:02

89C2051遇到鬼打墙

本帖最后由 zhangsai 于 2012-11-21 09:21 编辑

干单片机也有几年了,不敢说精通,可也见识过一些,做过几个小玩意儿。这两天让一个89C2051的小系统折腾死我了。
具体案例如下:
            89C2051+MAX813+24M有源晶振+78L05+MAX506(D/A),公司成熟产品,上市5年了。
            我就是利用这套成熟电路,应用到其他产品上,前期,相安无事。由于其他事情拖延,导致该项目由夏天拖至现在。基本功能完工后,今日发现奇怪现象,凉机子,上电初期,89C2051启动异常,示波器监视其喂狗波形,出现停顿。明显是单片机出现了停摆。导致D/A输出波形也是混乱的。甚至出现过D/A输出波形正常,频率降低的情况。
            反复开机几次后,故障发生率明显下降。
            关机闲置一段时间,比如半小时,开机后,故障发生率明显提升。
            更换89C2051故障依旧。
            测量复位脚,正常。
            示波器观察89C2051的VCC,D/A的正负电源、2.5V基准等,均无明显的问题。
            故障发生时,示波器观察24MHz有源晶振,频率、幅度正常。
            78L05为12V->5V。


            恳求各位能出奇招,帮我解决该问题。谢了!这问题真的把我弄崩溃了!

zhangsai 发表于 2012-11-21 09:37:29

大家别绕行呀,呵呵,给出出主意

starli 发表于 2012-11-21 09:40:49

路过,绕行

mbass51 发表于 2012-11-21 09:42:13

用仿真器看一看吧

amen 发表于 2012-11-21 09:42:54

以前的成熟产品有无这种问题

zhangsai 发表于 2012-11-21 09:51:50

89c2051,不能JTAG的。呵呵,感觉仿真没意义。以前的产品,没有听过此类故障。我总感觉,怎么这么像人品问题呢!呵呵。

dxm123 发表于 2012-11-21 09:59:40

猜想应该是程序问题,多检查一下吧!

xyz543 发表于 2012-11-21 10:03:14

有无可能与您所在的室温有关?

xymxym 发表于 2012-11-21 10:23:11

示波器持续监测振荡端,出现异常时观察振荡波型。2051跑24M应该是比较极限了,走钢丝状态。
可以人为的用酒精和吹风机,对可疑元件进行冷、热操作,检查是否是温度引起的故障。

zhangsai 发表于 2012-11-21 11:47:49

程序非常简单,程序分析,就是Timer0,出现停摆。

zhangsai 发表于 2012-11-21 11:49:16

我也有点儿怀疑,是温度造成的。

xslff 发表于 2012-11-21 12:01:14

由于楼主不许绕过,所以....
我跳过(真的不懂)...

jlhgold 发表于 2012-11-21 12:12:41

会不会是晶振问题?

ilikemcu 发表于 2012-11-21 12:19:41

会不会是芯片工艺改了?

不过如果芯片是整个渠道进货,那么只能说明这个设计的本身容限留得太小了

fulitun 发表于 2012-11-21 12:24:39

换78L05试试

xad74 发表于 2012-11-21 12:31:15

看看晶振上的电容,或是喂狗正常吗,还有就是看看是不是开了什么中断,但没有相应的中断处理程序
没JTAG,用串口

fwluck 发表于 2012-11-21 12:31:20

诸如晶振及相关电路拆掉重焊试试。
如原来正常,现在不正常。手工焊的可能很大,当然机焊质里不好时也会有问题。
拍图,大家看看。提供的信息越多越有助于问题解决。

zhanyanqiang 发表于 2012-11-21 12:47:13

24M,高~~~~~

cos 发表于 2012-11-21 12:52:24

mark一下

colgate 发表于 2012-11-21 13:04:28

24M有点高,2051能跑那么高主频吗。你降低频率试试

ksd 发表于 2012-11-21 13:30:30

本帖最后由 ksd 于 2012-11-21 13:38 编辑

你检查一下电容和晶体,对温度这么敏感,检查一下电路板的走线是否过长,因温度变化而引起阻值变化的原件。

前期正常工作,拖延了工期后出现问题,大多是虚焊引起的。重新焊接一遍,如果是北方,考虑点解电容被冻坏,我遇到过电解电容被冻坏的故障。

marshallemon 发表于 2012-11-21 13:33:57

停摆是什么意思?死机?
搞一个定时器出来,在引脚上接一个LED,定时器定时驱动LED,在出现异常的时候观察LED的频率是否正常

cmdrainsy 发表于 2012-11-21 13:50:43

看看 78l05部分的储能电容是否有问题,78l05更换试试
也很有可能是复位电路的问题

zhangsai 发表于 2012-11-21 17:16:32

晶振用的是外部有源晶振。不是晶体+电容的结构。程序超级简单,只开了定时器0的中断。每(20ms/150)的时间中断一次,并喂狗一次。我说的“停摆”就是,示波器看,喂狗脉冲,有较长时间停顿,较长,且无明显规律。感觉好像是启动不起来似的。但是电源无明显不稳定。电源电解是47uF。

zhangsai 发表于 2012-11-21 17:19:42

让我最受不了的是,目前发现的规律,好像是,放一晚上,早晨开机,故障非常明显,但是反复开机几次或十几次以后,现象就很少出现。肯定是有器件有问题。但是,我这脑袋,真有点儿找不到突破口。打算用STC的兼容芯片试试。也考虑更换外部有源晶振和78L05(改成7805)试试。气人的时,还完以后,一定要关一短时间的电源,故障是否解除,才能下定论。

zhangsai 发表于 2012-11-21 17:21:14

78L05的上级12V电源,是锂电池。应该可以排除78L05以上的问题。

weijia 发表于 2012-11-21 17:30:43

内存,控制寄存器。有哪个什么忘记初始化吧。搞不明白什么原因,怎么不先关掉看门狗看看。

lryxr2507 发表于 2012-11-21 20:15:32

本帖最后由 lryxr2507 于 2012-11-21 20:17 编辑

怀疑晶振旁的电容,换下试试,我遇到这类问题是换C51片试试,一般都是程序问题.对了代码有无超过2K?

sarcophile 发表于 2012-11-21 20:27:57

用实际工作正常的板子,拆元件来换上,看是否是元件问题,比如晶振什么的。用无水酒精清洗板子。用不同方式重新写同样功能的程序。总之逐步排查呗

sarcophile 发表于 2012-11-21 20:30:57

另外,虽然看起来可能和温度有关,但是无论如何,单纯的温度这么小点的变化不会导致这样的问题,最终还是器件不正常。就算你测出10度有问题,15度就不发生问题了,那又怎样,你还是得找出哪个元件受温度影响

fsmcu 发表于 2012-11-21 20:50:13

可以先换其他兼容型CPU测试,看看是否同样故障,再来一步一步排除啊

yangsen 发表于 2012-11-21 21:07:48

遇到过有源晶振输出幅度不够,单片机出停摆故障

Wxy8030 发表于 2012-11-21 21:15:15

程序里上电后先延时个0.5S再初始化 ......

pang7 发表于 2012-11-21 21:22:05

排除法 换晶振先 然后电容 受温度影响的器件

panguoxian 发表于 2012-11-21 22:06:20

个人感觉是软体的问题~~~

tonyone 发表于 2012-11-21 23:11:18

没跑过24M,不知道是不是这个问题

tonyone 发表于 2012-11-21 23:14:28

如果怀疑是温度的问题,把它包好塞冰箱里冻上一段时间,再拿出来测试,有问题就会显现出来的。我们以前就用这个方法发现过问题,LDO输出电解容量太小所致。

zhangsai 发表于 2012-11-22 08:12:57

基本可以结贴了。发现是24MHz的有源晶振,坑人呀。经过对比,查原材料采购记录,这两块实验板的24Mhz有源晶振是另一个供应商临时采购。目前更换晶振后,再没出现过该故障。不过,有必要进一步观察。同时,感谢给位好友出主意,89C2051跑24M,确实有些极端,有必要改进设计思路了。

Wxy8030 发表于 2012-11-22 08:49:45

晕,这故障真够坑爹的!

zhangsai 发表于 2012-11-22 10:03:32

劣质器件,害死人呀。零散采购,唉,如何保障材料的“安全”性。难。

bg8wj 发表于 2012-11-22 13:49:14

实物板图?电路图?程序?果然是鬼打头。

mTouch 发表于 2012-11-22 14:49:10

   应该是你购买的芯片有问题!
   购买芯片时,别忘了看最后的编号!
AT89C2051-24PU允许最高频率   24MHz
AT89C2051-12PU 允许最高频率   12MHz
AT89C2051-24SU 允许最高频率   24MHz
AT89C2051-12SU 允许最高频率   12MHz

   如果你的芯片允许最高频率12MHz ,你要它跑24Mhz,当然会有问题哦!

zhangsai 发表于 2012-11-23 08:16:55

已经确认,我所用的就是AT89C2051-24PU。更换24MHz晶振后,运行两天,一切正常。可以确认,是24Mhz有源晶振的问题。
页: [1]
查看完整版本: 89C2051遇到鬼打墙