打印

用PIC的郁闷事

[复制链接]
2298|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoyu2005|  楼主 | 2008-1-12 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前用ATMEL的单片机感觉驱动能力受限,另外抗干扰有点难以接受,就用PIC单片机了,结果就遇到郁闷事了:

1.PIC16F77,一个口的3根口线通过光耦驱动三极管再驱动继电器,如果想三个口线同时置高(直接口赋值和位操作都不行)驱动继电器,经常出现有一个或两个继电器不动作,测量是对应口线没有输出高电平,如果三个继电器动作有mS级的时间差,基本上正常。怀疑是驱动光耦的电流太大(每一个约19mA)造成的,但是看资料并没有超出极限情况(单口线最大25mA,口最大200mA),不知道有没有遇到同样情况的。

2.PIC16F54,这个就更郁闷了,定义Com2=RB6,Zoom=RB7,Focus=RA0,位操作Com2=1,Focus=1,执行正常,位操作Com2=1,Zoom=1,执行结果是只有Zoom=1,怀疑是假片,但是用PORTB|=0xc0,执行正常,说明片子正常,只是位操作有问题

以上都看过picc产生的汇编,程序正常。


昨天打PIC的技术支持,告诉是读-修改-写模式造成的,但是我只知道读-修改-写模式对有方向切换(输入、输出切换)的口线有影响,对固定方向的口是没有影响的,还有就是但是没在电脑旁,

那个MM说有一个参数Iol=8.5mA,Ioh=3mA,超过这个值就可能出问题(今天一看是Vol和Voh的测试条件,就是在这个测试条件下的输出电压,根本不是什么极限条件)

还有,我们的芯片是在深圳订购的,不是官方网站上显示的公司,应该是一个分销商,当时为了说明我们的片子是正规途径订购的,我说是从国内最大代理商拿的货,结果那个MM说既然是最大代理商应该有技术人员吧,让他们上门测试好了,由于不知道怎么应付就说好,就挂了电话

后来一想,感觉不怎么对,好像没听说过有代理商有资质测试芯片的,还有作为技术支持人员,应该有一定的技术水平,怎么连测试条件和限制条件都分不清?怎么找这样技术支持人员,简直是狗屁不通

很是郁闷,本来觉得PIC的单片机抗干扰还可以(没经过严格测试验证,从网上查的,另外在一些项目中觉得还行),打算以后主打PIC芯片,现在有点爱不起了


沙发
yewuyi| | 2008-1-12 11:36 | 只看该作者

~~,很简单的问题

都是你自己的程序或硬件设计不当造成的。

::昨天打PIC的技术支持,告诉是读-修改-写模式造成的,但是我只知道读
::-修改-写模式对有方向切换(输入、输出切换)的口线有影响,对固定
::方向的口是没有影响的

A:很明显的读-修改-写现象,没有输入输出切换也存在读-修改-写问题,例如位操作PORTA.2=1口时,MCU先读会PORTA的值,此时若你的硬件不当(包含你设置PORTA各项特性不当),此时就有可能你本来的PORTA输出为1,但读回来是0这样的问题,MCU设置PORTA.2=1后,再把PORTA整体送出去,此时就发生了读-修改-写现象。

解决的方法:(必须保证你自己的硬件正确,不包含MCU内部的PORTA设置不对问题)
:设置一个PORTABUF,每次位操作都是操作PORTABUF的某一位,操作完成了后,把PORTABUF整体送给PORTA。

反过来说,是你的软件设计不够规范造成的,在软件设计的时候,使用RAM缓冲技术将对你以后的工作大有帮助。


至于你打什么技术支持电话出的事情,我就不评价了,因为我不是MCP的人,我和你一样也只是用户,不关我的事……

遇到这些问题,建议你多上21ICBBS问问,MCP的工程师也是经常上来回答的,根据我这么多年的经历,MCP的工程师是非常认真负责的,能解决问题就好了把,MCP的质量是非常非常棒的……

我2007年用MCP各个型号600~700K的……

使用特权

评论回复
板凳
ddb_21ic| | 2008-1-12 19:53 | 只看该作者

连续输出时需要注意

可以在输出指令间加一个NOP指令
这是硬件时序的一个问题

使用特权

评论回复
地板
txh353012| | 2008-1-12 22:47 | 只看该作者

完全赞同2楼的

解决办法
:加个限流电阻.
可以先加个5K的可调电阻试试.

使用特权

评论回复
5
123654789| | 2008-1-12 22:48 | 只看该作者

翻译 完全赞同2楼 absolutely agree with 2nd flood

txh353012 发表于 2008-1-12 22:47 PIC 单片机 ←返回版面    

4楼: 完全赞同2楼的 














使用特权

评论回复
6
kuheye| | 2008-1-13 07:23 | 只看该作者

读-修-写

商榷2楼

固定输出端口也可能产生读-修改-死锁

张明峰的教材中,有详细的阐述

使用特权

评论回复
7
pjss| | 2008-1-13 11:18 | 只看该作者

关于IO驱动

20,25mA的确是每个IO的驱动上限
但是这是有条件的,不可能所有IO都在上限工作!
芯片本身有个功率耗散上限,累积每个IO的功率超过这个数值,就不会正常工作

使用特权

评论回复
8
zhaoyu2005|  楼主 | 2008-1-14 14:29 | 只看该作者

贴个图大家看一下

说明一下:
JP1是连接云台的排线的,其中MENU、FOCUS、COM2、ZOOM是控制镜头的,对应菜单、聚焦、公共端、变倍,控制电压直流3-12V,通过改变FOCUS对COM2的极性调整虚实,通过改变ZOOM对COM2的极性调整远近(焦距),5V驱动时电流大约5mA,12V驱动时大约15mA,经过测试电源能满足要求。
相关链接:https://bbs.21ic.com/upfiles/img/20081/2008114141929505.rar

使用特权

评论回复
9
zhaoyu2005|  楼主 | 2008-1-14 14:41 | 只看该作者

刚才忘了添加程序了

补充一点:云台镜头控制部分平时输出为低,只有在收到上位机的正常命令时才执行camera_control()函数,将对应部分输出高,其中云台电机控制部分正常,请yewuyi及其他大侠帮忙分析一下,让俺彻底明白
相关链接:https://bbs.21ic.com/upfiles/img/20081/2008114144030657.rar

使用特权

评论回复
10
兰天白云| | 2008-1-14 17:07 | 只看该作者

zhaoyu2005:2楼已经说的很清楚了

//----------------------------------
位操作Com2=1,Zoom=1,执行结果是只有Zoom=1
//------------------------------------

工作过程是这样的

当执行Com2=1时,单片机首先从RB口(从RB0~RB7)读回端口电平
然后修改RB6(Com2)为1,最后把整个RB口输出

当执行Zoom=1时,单片机首先从RB口(从RB0~RB7)读回端口电平(把Com2也读回),此时Com2可能还是低电平
然后修改RB7(Zoom)为1,此时RB6(Com2)为0,最后把整个RB口输出,输出的结果当然Com2=0了


使用特权

评论回复
11
xymxym| | 2008-1-14 21:33 | 只看该作者

帮你贴一下图

光藕发光管的限流电阻太小了,高电平驱动,如果限流电阻选得不合适,很容易出现读-修改-写问题,加大电阻或者改为低电平驱动.还有图中三极管基极电阻只有1K也不合适.以后碰到问题不要太钻牛角尖哦!

使用特权

评论回复
12
lifengtao| | 2008-1-15 10:18 | 只看该作者

基础太差了,建议先学学汇编

怀疑的精神是好的,但先要怀疑自己。假芯片,太可笑了!

使用特权

评论回复
13
zhaoyu2005|  楼主 | 2008-1-15 14:47 | 只看该作者

兰天白云大侠,您这样说俺就明白了,谢谢

使用特权

评论回复
14
luxinsun| | 2008-1-15 15:24 | 只看该作者

AVR,FSLS08怎么没有发现这个问题。

AVR,FSLS08怎么没有发现这个问题。

使用特权

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

本版积分规则

78

主题

2940

帖子

9

粉丝