打印

同一个程序同一个目标板,为什么有芯片可以有些芯片工作不

[复制链接]
1633|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
l03|  楼主 | 2008-10-15 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zjh006| | 2008-10-15 12:02 | 只看该作者

可能是部分RAM没有初始化

使用特权

评论回复
板凳
warm_ice| | 2008-10-15 14:39 | 只看该作者

有很多可能.

很多原因会导致这个问题,像2楼说的就是其中一种可能,从我们了解到的情况来看,很大一部分是用户程序设计时不够严谨造成的.请您提供一些详细的情况,不然,只凭现有信息没办法做出准确的判断.

使用特权

评论回复
地板
l03|  楼主 | 2008-10-15 17:15 | 只看该作者

回复:warm_ice

程序是比较复杂大体流程是:
初始化RAM和端口寄存器后,程序延时20MS就会进入一个判断PC.0口电平情况的子程序(1)并保存这个I/O口的电平情况给其它子程序用。

子程序(2)中会判断子程序(1)记录的PC.0的I/O口电平情,如果是高电平那就退出该子程序(子程序2里内容输多在这不便多说)而执行其它程序。否则子程序(2)会进入PE.2输出高电平死循环中.

测到的有些芯片现象是:当PC.0接用一个10K的电阻上拉到5V(也就是单片机的电源上),电路板一供电单片机一上电就会死在子程序(2)中,测试PE.2为高电平.电路板上断电重新上电,单片机工作正常(电路板上的电容还有一点电)。如果电路板上的电容全部放电后重新供电单片机就不能正常工作了.

使用特权

评论回复
5
warm_ice| | 2008-10-16 08:51 | 只看该作者

这样

看了一下你的描述,大概清楚了你的思路.有2点可能你要注意一下:
1.不知道你用哪颗芯片,烧写的时候记得打开低电压复位功能.
2.读取PC.0状态时,最好是连续多次(如每隔2MS读一次,连续16次)为同一电平时才判定为固定状态,以免把一些干扰误判为稳定状态.

使用特权

评论回复
6
l03|  楼主 | 2008-10-16 10:40 | 只看该作者

回复:这样

用的是69P42,已经开低电压复位功能.
现在的方法只能在死循环内加判断PC.0口.然后跳出死循环.现在要求找原因!
苦啊!!!!!!!!!!!!!!!!

使用特权

评论回复
7
warm_ice| | 2008-10-16 11:38 | 只看该作者

有没有按第2条做?

现在最关键的问题是为什么会误判PC.0的状态,跳进死循环,应该从前面判断PC.0状态这部分程序入手,像我之前回复的多次连续读到相同的状态后再确认为稳定可靠的状态,否则就认为是干扰,不确认状态,重新开始读取状态进行判断.

另外.用SH69P42的PC.0,那振荡的部分就只能用内部或外部RC了,这个你应该清楚.

使用特权

评论回复
8
warm_ice| | 2008-10-16 11:39 | 只看该作者

另外,如果方便,把判断PC.0状态这部分程序弄上来看看.

另外,如果方便,把判断PC.0状态这部分程序弄上来看看.

使用特权

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

本版积分规则

l03

1

主题

3

帖子

0

粉丝