打印

有难题请教各位高手

[复制链接]
3608|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t.xw|  楼主 | 2008-9-23 15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
俺手头有一个案子,使用PIC18F4620,10MHz晶振,现在出了一个怪现象:

一个键盘检测电路,采用数字电路(移位寄存器)扩展之后,进行采样检测。但是在一批小批量试产中发现,键盘电路失效,基本上失效率达到20%左右。

注意,俺是在同一台机器上,仅仅是更换IC,就检测出大约有20%的芯片不良,这点就很奇怪了。

俺们的芯片全部采购自正规的Microchip代理商,质量是有保证的。因此我怀疑是检测程序的某个部分处于了临界状态,所以有些IC能用,有些不行,不知是否可能?有何解决办法?请各位大虾指教。多谢先!
沙发
xieyuanbin| | 2008-9-23 16:34 | 只看该作者

仅仅是更换IC?

更换什么IC?是单片机还是你的移位寄存器?移位寄存器什么型号?你所做的程序符合该移位寄存器的要求吗?

使用特权

评论回复
板凳
t.xw|  楼主 | 2008-9-23 21:38 | 只看该作者

对的,仅仅只是更换了单片机(18F4620),效果就截然不同

很遗憾,程序不是我写的,而且我也有6、7年没玩PIC了,否则也不会这么为难了,呵呵。


这个案子是两年前的旧案子了,当时是应客户的要求开发的,但是只PP了30台,就因为客户方的原因而终止了这个案子。现在用户又重新提出要做,然而之前的开发人员已经辞职离开深圳了,现在搞的俺头都大了,唉!

恳请各位大虾帮忙,多谢先!

使用特权

评论回复
地板
t.xw|  楼主 | 2008-9-23 21:42 | 只看该作者

附上示波器的测试波形图

这是可以正常工作的波形图

使用特权

评论回复
5
t.xw|  楼主 | 2008-9-23 21:44 | 只看该作者

这是有问题的波形图

单纯从波形来看,两组图片没有什么差别。但是实际效果就是一个可以正常工作,另外一个不行,唉!

使用特权

评论回复
6
t.xw|  楼主 | 2008-9-23 21:53 | 只看该作者

其他说明:

1、扫描脉冲信号从RA1输出,返回的信号在RA2检测;
   图中CH1就是RA1上的波形,CH2就是RA2上的波形。

2、大致过程是,RA1输出一个高电平脉冲,触发后续的电路动作,这时如果有按键按下,将返回一个低电平脉冲到RA2上。如图中所示,有两个按键被按下了,但是有问题的那个单片机,一个都没检测到,而没问题的那个就两个按键都检测到了。


郁闷ing

使用特权

评论回复
7
awey| | 2008-9-23 22:27 | 只看该作者

最好上个图

如果图没问题,那就是软件的问题

使用特权

评论回复
8
yewuyi| | 2008-9-24 08:50 | 只看该作者

估计是按键检测写的比较糗。。。

使用特权

评论回复
9
t.xw|  楼主 | 2008-9-24 10:17 | 只看该作者

楼上说的对,的确是写的有点问题,但是程序太长,一时之

不到具体的程序入口位置。但是从示波器已经看出他的EEPROM读写时序是有问题的,唉!

除了程序问题之外,是否还会有参数设置的问题?我发现这个18F4620的内部参数设置相当复杂,比我以前用16F72的时代要复杂多了   :P

使用特权

评论回复
10
bob.xue| | 2008-9-24 10:35 | 只看该作者

不妨做个好坏交换测试

1,合格产品的电路板+不合格产品的IC
2,不良产品的电路板+合格产品的IC

交换之后,看看不良率。如果都在20%的话,就说明软件设计有问题。

软件问题,不妨贴代码出来看看。

使用特权

评论回复
11
yewuyi| | 2008-9-24 11:13 | 只看该作者

呵呵,F72性能肯定不能和18F4620比。。。

~~,你6、7年没玩PIC了,呵呵,F72在中国推出也没多少年啊,C72把。。。

使用特权

评论回复
12
t.xw|  楼主 | 2008-9-24 12:35 | 只看该作者

to 10楼:没有不良电路板,所以的电路板均能正常工作

仅仅只是交换了单片机,就会出现截然相反的结果。

随便拿一块板子,能用的片子就是能用,不能用的就是不能用,不管换几块板子都是这样的结果,唉!

也曾怀疑是否烧写器有问题,以至写进去的程序乱了,但是借了一台原装的PICSTAR PLUS,反复烧写、校验,结果还是一样,郁闷ing     :(

使用特权

评论回复
13
yewuyi| | 2008-9-24 13:24 | 只看该作者

代码大约多大?

不复杂的话,重做拉倒。。。

使用特权

评论回复
14
t.xw|  楼主 | 2008-9-24 14:46 | 只看该作者

回楼上:整个程序区基本用完了。。。。。 :(

使用特权

评论回复
15
t.xw|  楼主 | 2008-9-24 14:49 | 只看该作者

实在没辙了,准备用仿真调试的办法找出问题来。跟供应商

MPLAB ICD2,现在也把MAPLB IDE 7.61装上了,但是还不大会玩。

据说使用ICD2是要占用一些资源的,硬件方面主要是占用了RB6、RB7这两个端口,我已经避让开了;软件方面听说还要占用几个内部寄存器,不知具体是那些,请各位大侠告知,我好先行修改,跳开它。

使用特权

评论回复
16
yewuyi| | 2008-9-24 15:58 | 只看该作者

占用部分ROM和RAM

具体怎么占用,如果你是用C的话,那基本不用考虑,编译器会自动把那一段空出来,当然了,如果你的代码+ICD2需要用的代码空间超过了CHIP的总空间,那就不行了,ICD2大约需要2百多个代码空间。


你在MPLAB上设置了使用ICD2后,基本上就交给编译器去做其它事情了,不需要太操心,但需要用到RB6、RB7、MCLR、VCC、GND这5个脚。。。

使用特权

评论回复
17
jetson001| | 2008-9-24 16:18 | 只看该作者

11

很明显 RA1上下沿改变的时候,毛刺重了
看看是不是这方面的原因
周期是500ns吗?很短吧

使用特权

评论回复
18
t.xw|  楼主 | 2008-9-24 16:21 | 只看该作者

谢谢16楼的指教。再细问一下:

1、硬件应该不成问题,我已经把RB7、RB6给腾出来了。他原来是用到这两个脚的,但是用来控制一排状态指示灯的,现在暂时可以不管他,直接挪用来调试了。
具体来说,就是把这两个脚从线路上割断,然后单独连接出来,不知妥否?

2、代码空间应该还有。我查了一下他原来编译好的文件,HEX文件大概是140KB左右,故此应该还有几十K的富余空间吧,所以应该也够用。
只是不知ICD2要占用哪一部分的空间呢?具体的代码是什么样的呢?

恳请指教。

使用特权

评论回复
19
t.xw|  楼主 | 2008-9-24 16:29 | 只看该作者

to 17楼:毛刺是稍微重了一点,但是我觉得对于这种低速率的

这一点点上下过冲应该还算什么吧?要想滤掉也不难,串个电阻就是了,只怕未必有效。

具体参数:
RA1:输出扫描脉冲脚,脉冲高电平周期为125nS,低电平时间为500nS
RA2:输入检测脚,低电平有效,正常返回的低电平周期也是500nS。

使用特权

评论回复
20
yewuyi| | 2008-9-24 18:01 | 只看该作者

RB6、RB7、MCLR上尽量不能有容性和感性负载。。。

和ICD2相关的那段代码和你没关系,不需要你编写,在编译的时候自动加进去的,和你没关系,**中那段代码一般定位在CHIP代码空间的最后面,编译器自动帮你完成以上工作///

使用特权

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

本版积分规则

10

主题

96

帖子

0

粉丝