有难题请教各位高手

[复制链接]
5258|20
 楼主| t.xw 发表于 2008-9-23 15:11 | 显示全部楼层 |阅读模式
俺手头有一个案子,使用PIC18F4620,10MHz晶振,现在出了一个怪现象:<br /><br />一个键盘检测电路,采用数字电路(移位寄存器)扩展之后,进行采样检测。但是在一批小批量试产中发现,键盘电路失效,基本上失效率达到20%左右。<br /><br />注意,俺是在同一台机器上,仅仅是更换IC,就检测出大约有20%的芯片不良,这点就很奇怪了。<br /><br />俺们的芯片全部采购自正规的Microchip代理商,质量是有保证的。因此我怀疑是检测程序的某个部分处于了临界状态,所以有些IC能用,有些不行,不知是否可能?有何解决办法?请各位大虾指教。多谢先!
xieyuanbin 发表于 2008-9-23 16:34 | 显示全部楼层

仅仅是更换IC?

更换什么IC?是单片机还是你的移位寄存器?移位寄存器什么型号?你所做的程序符合该移位寄存器的要求吗?
 楼主| t.xw 发表于 2008-9-23 21:38 | 显示全部楼层

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

很遗憾,程序不是我写的,而且我也有6、7年没玩PIC了,否则也不会这么为难了,呵呵。<br /><br /><br />这个案子是两年前的旧案子了,当时是应客户的要求开发的,但是只PP了30台,就因为客户方的原因而终止了这个案子。现在用户又重新提出要做,然而之前的开发人员已经辞职离开深圳了,现在搞的俺头都大了,唉!<br /><br />恳请各位大虾帮忙,多谢先!<br />
 楼主| t.xw 发表于 2008-9-23 21:42 | 显示全部楼层

附上示波器的测试波形图

这是可以正常工作的波形图
 楼主| t.xw 发表于 2008-9-23 21:44 | 显示全部楼层

这是有问题的波形图

单纯从波形来看,两组图片没有什么差别。但是实际效果就是一个可以正常工作,另外一个不行,唉!
 楼主| t.xw 发表于 2008-9-23 21:53 | 显示全部楼层

其他说明:

1、扫描脉冲信号从RA1输出,返回的信号在RA2检测;<br />&nbsp;&nbsp;&nbsp;图中CH1就是RA1上的波形,CH2就是RA2上的波形。<br /><br />2、大致过程是,RA1输出一个高电平脉冲,触发后续的电路动作,这时如果有按键按下,将返回一个低电平脉冲到RA2上。如图中所示,有两个按键被按下了,但是有问题的那个单片机,一个都没检测到,而没问题的那个就两个按键都检测到了。<br /><br /><br />郁闷ing
awey 发表于 2008-9-23 22:27 | 显示全部楼层

最好上个图

如果图没问题,那就是软件的问题
yewuyi 发表于 2008-9-24 08:50 | 显示全部楼层

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

  
 楼主| t.xw 发表于 2008-9-24 10:17 | 显示全部楼层

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

不到具体的程序入口位置。但是从示波器已经看出他的EEPROM读写时序是有问题的,唉!<br /><br />除了程序问题之外,是否还会有参数设置的问题?我发现这个18F4620的内部参数设置相当复杂,比我以前用16F72的时代要复杂多了&nbsp;&nbsp;&nbsp;:P
bob.xue 发表于 2008-9-24 10:35 | 显示全部楼层

不妨做个好坏交换测试

1,合格产品的电路板+不合格产品的IC<br />2,不良产品的电路板+合格产品的IC<br /><br />交换之后,看看不良率。如果都在20%的话,就说明软件设计有问题。<br /><br />软件问题,不妨贴代码出来看看。
yewuyi 发表于 2008-9-24 11:13 | 显示全部楼层

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

~~,你6、7年没玩PIC了,呵呵,F72在中国推出也没多少年啊,C72把。。。
 楼主| t.xw 发表于 2008-9-24 12:35 | 显示全部楼层

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

仅仅只是交换了单片机,就会出现截然相反的结果。<br /><br />随便拿一块板子,能用的片子就是能用,不能用的就是不能用,不管换几块板子都是这样的结果,唉!<br /><br />也曾怀疑是否烧写器有问题,以至写进去的程序乱了,但是借了一台原装的PICSTAR&nbsp;PLUS,反复烧写、校验,结果还是一样,郁闷ing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:(
yewuyi 发表于 2008-9-24 13:24 | 显示全部楼层

代码大约多大?

不复杂的话,重做拉倒。。。
 楼主| t.xw 发表于 2008-9-24 14:46 | 显示全部楼层

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

  
 楼主| t.xw 发表于 2008-9-24 14:49 | 显示全部楼层

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

MPLAB&nbsp;ICD2,现在也把MAPLB&nbsp;IDE&nbsp;7.61装上了,但是还不大会玩。<br /><br />据说使用ICD2是要占用一些资源的,硬件方面主要是占用了RB6、RB7这两个端口,我已经避让开了;软件方面听说还要占用几个内部寄存器,不知具体是那些,请各位大侠告知,我好先行修改,跳开它。
yewuyi 发表于 2008-9-24 15:58 | 显示全部楼层

占用部分ROM和RAM

具体怎么占用,如果你是用C的话,那基本不用考虑,编译器会自动把那一段空出来,当然了,如果你的代码+ICD2需要用的代码空间超过了CHIP的总空间,那就不行了,ICD2大约需要2百多个代码空间。<br /><br /><br />你在MPLAB上设置了使用ICD2后,基本上就交给编译器去做其它事情了,不需要太操心,但需要用到RB6、RB7、MCLR、VCC、GND这5个脚。。。
jetson001 发表于 2008-9-24 16:18 | 显示全部楼层

11

很明显&nbsp;RA1上下沿改变的时候,毛刺重了<br />看看是不是这方面的原因<br />周期是500ns吗?很短吧
 楼主| t.xw 发表于 2008-9-24 16:21 | 显示全部楼层

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

1、硬件应该不成问题,我已经把RB7、RB6给腾出来了。他原来是用到这两个脚的,但是用来控制一排状态指示灯的,现在暂时可以不管他,直接挪用来调试了。<br />具体来说,就是把这两个脚从线路上割断,然后单独连接出来,不知妥否?<br /><br />2、代码空间应该还有。我查了一下他原来编译好的文件,HEX文件大概是140KB左右,故此应该还有几十K的富余空间吧,所以应该也够用。<br />只是不知ICD2要占用哪一部分的空间呢?具体的代码是什么样的呢?<br /><br />恳请指教。
 楼主| t.xw 发表于 2008-9-24 16:29 | 显示全部楼层

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

这一点点上下过冲应该还算什么吧?要想滤掉也不难,串个电阻就是了,只怕未必有效。<br /><br />具体参数:<br />RA1:输出扫描脉冲脚,脉冲高电平周期为125nS,低电平时间为500nS<br />RA2:输入检测脚,低电平有效,正常返回的低电平周期也是500nS。
yewuyi 发表于 2008-9-24 18:01 | 显示全部楼层

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

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

本版积分规则

10

主题

96

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部