发新帖我要提问
123
返回列表
打印

复位电路难题求解。

[复制链接]
楼主: 冷漠
手机看帖
扫描二维码
随时随地手机跟帖
41
jiabin1024| | 2010-4-10 15:17 | 只看该作者 回帖奖励 |倒序浏览
谜底揭晓了

使用特权

评论回复
42
dong2007| | 2010-4-10 16:29 | 只看该作者
来看大侠吵架!

使用特权

评论回复
43
冷漠|  楼主 | 2010-4-10 19:28 | 只看该作者
本帖最后由 冷漠 于 2010-4-11 21:35 编辑
"亮灭运行是正常的"  ------- 这说明复位电路没有问题,也不应该有问题,否则就是厂家的 RP 问题了。



讨论:程序可以运行,不一定说明复位电路没有问题。

很简单的道理,看芯片手册,是这样写的:

     “如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个正确的起始初值。因此,CPU可能会从一个未被定义的位置开始执行程序。”

    很容易理解,不完全的复位,不能使51系列PC指针初始化为0x0000;但是程序计数器PC仍然会在机器时钟的驱动下计数,CPU从随机地址开始执行程序。

    我固化的下面一个闪烁LED测试程序只占了8K程序空间很小的一部分。程序空间大部分固化为空 0xFF,——即汇编指令 MOV  R7,A ; 于是不完整的复位使CPU从随机地址,大概率程序空代码0xFF 区域开始运行: MOV  R7,A ; MOV  R7,A ;MOV  R7,A .....一直运行到PC=0xFFF,再回卷到0x0000,结果CPU经过随机地址, 进入正常程序轨道,LED开始闪亮。
     
     这个非正常复位进入正常程序轨道的异常过程,并没有使所有应该初始化的端口、专用功能寄存器SFR 等恢复到复位初始值。ALE也不受影响,该没有还是没有。

   测试程序如下:
sbit  LED=P1^0;

void  main(void)
(
while(1)
{
LED=!LED;
delayms(1000);    //延时1秒
}
}

程序虽然看上去正常运行了,它并不是正常复位引导的。芯片并没有正常复位!
可以在空代码地址位置布一个陷阱,例如在0xC00处写下while(1);马上就可以知道以上论证的正确性了。

使用特权

评论回复
44
highgear| | 2010-4-11 09:53 | 只看该作者
冷漠你发了这么多帖子, 却不把事情讲清楚, 前后混乱矛盾, 一会按键可以复位, 一会又不可以。 谁也没这个耐心陪你猜谜, 你自己慢慢折腾吧。

使用特权

评论回复
45
strang| | 2010-4-11 21:05 | 只看该作者
学习了,受益匪浅~!!

使用特权

评论回复
46
冷漠|  楼主 | 2010-4-11 22:04 | 只看该作者
high老师是B型血型吧。......没什么,挺好的。

昨天看了一下《匠人手记》,书中关于复位电路需要注意的2个问题,恰好就是我们遇到的两个故障!有时间专题讨论吧。内容太多了。

站长是A型血型?冷漠——O型。

使用特权

评论回复
47
程序匠人| | 2010-4-11 22:11 | 只看该作者
这个还跟血型有关?

使用特权

评论回复
48
szshawn2010| | 2010-4-12 07:07 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-12 07:11 编辑

本菜鸟没用过51芯片。但是对51是略知一点点:
对于你的问题,有以下几个问题可以确定:

1.不要怀疑MCU有问题,MCU很正常,只是应用不正常;
2.RESET接口,下拉到地,阻值10K,同时,reset接口与VCC之间加个电容10uf;
3.LZ老兄,看了资料说,RESERT要VCC才有效。但是资料上原文应该是“2个周期以上的高电平(没有指一定要达到VCC,但是有提到时间)”
3.ALE无信号输出
  芯片资料上的原文是这样的。“ALE引脚以不变的频率(FOSC/6)周期性地发出正脉冲信号,因此,它可以用作对外输出的时钟或用于定时目的。但要注意:每当访问外部数据存储器时,将跳过一个ALE脉冲”(备注:因为没用过51芯片,所以不知没有ALE信号是否意味着MCU在一直在试图读取外部存储器的内容/程序。请检查相关寄存器及EA脚是否为稳定的高电平)

  假如你的DEMO板上 ALE无信号,你的软件又能在防真器上运行(没有过51,也不知51的防真器与其他品牌的防真器是不是一个道理。我用过的防真器,都是从防真器上引出PIN脚插到DEMO板上的。若防真器上能通过,而DEMO不通过,通常都是MCU的抗干扰没有防真器好)。

不要怀疑芯片有问题,查看一下你软件上的寄存器设置有没有出错,再检查下烧录页面的选项有没有出错。再检查DEMO板的实际走线与原理图是否一致。是否有断线、短路等毛病。


-----
虽然本菜鸟说的这些东东很肤浅,但是没办法,这个错误本身就很低级。希望对LZ有些许许的帮助

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
程序匠人 + 6
49
程序匠人| | 2010-4-12 08:45 | 只看该作者
鼓励楼上一下。

使用特权

评论回复
50
冷漠|  楼主 | 2010-4-12 09:11 | 只看该作者
本帖最后由 冷漠 于 2010-4-12 09:21 编辑

非常感谢LS的认真帮助,这里再补充一点手册上关于ALE和复位过程的关系:

再看手册上关于复位对 ALE 引脚的影响:

   “复位时序图如图4-29所示,因外部的复位信号是与内部时钟异步的,所以在每个机器周期的S5P2都对RTS引脚上的状态采样,当在RTS端采样到1信号且该信号维持19个振荡周期(24-5=19,——冷漠注)以后,将ALE和PSEN拉成高电平,使器件复位。在RTS端电压变低后,经过1、2个机器周期后退出复位状态,重新启动时钟,并恢复ALE和PSEN的状态。如果在系统复位期间,ALE和PSEN引脚被拉成低电平,会引起芯片进入不定状态。”



错误本身确实非常低级,而且故障原因很快就找到了。但是这个错误产生的现象却极少有人遇到过,而且不知道错误——现象之间关系的为什么。“物以稀为贵”。就像上面手册中的这段话,我自以为8051 已经研究透了,就从没有关注过这句话什么意思。这次遇到,很珍贵的奇遇,拿出来共享。以后不会看不懂手册中上面这句话了。
    ALE复位之后一直低电平,——终于从手册中找到这段话——只可能与复位电路的2个元件(或者印刷板)错误有关。查吧,不是开路就是短路,电阻值,电容值,价格比国产高10倍的工业级进口元件和CPU,没什么可怀疑的。
    最终原因......追究到了3个人,直接造成错误者——电路设计人,某重点大学研究生,B型血型......(早就走了。)

使用特权

评论回复
51
lych9139| | 2010-4-12 09:54 | 只看该作者
冷漠同志还太年轻啊!

使用特权

评论回复
52
szshawn2010| | 2010-4-12 10:36 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-12 10:37 编辑

49# 程序匠人


感谢鼓励!

匠人老大,上次请教大家那个过零检测电路。现在遇到新麻烦了。就是噪声干扰太大。无法排除。我试图请教大家一个软件去噪的法子,大家都说不可行。能赐教否?


详见:本坛《求教:中断 消抖的方法》

使用特权

评论回复
53
sanguo147| | 2010-4-23 21:06 | 只看该作者
看看啊,一般我也只是参考人家的
有没有专门讲复位电路设计的书籍 啊?

使用特权

评论回复
54
rootxie| | 2010-7-27 19:26 | 只看该作者
呵呵。。。飘过

使用特权

评论回复
55
machunshui| | 2010-7-27 19:34 | 只看该作者
专用马甲满天飞

使用特权

评论回复
56
kuguali| | 2010-11-11 22:08 | 只看该作者
:D:D:D:D

使用特权

评论回复
57
yixing2003| | 2010-11-12 20:45 | 只看该作者
奇怪,我就一个电容一个电阻,倒也在干扰环境运行了几年,没有收到错误报告。

使用特权

评论回复
58
wubing1211| | 2010-11-28 21:05 | 只看该作者
多加点时间就好了

使用特权

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

本版积分规则