打印

PIC中ps2轨迹球和232通讯二个中断冲突死机

[复制链接]
2499|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tcc8073|  楼主 | 2010-10-17 02:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tcc8073 于 2010-10-17 02:58 编辑

PIC16F877A程序在ps2轨迹球和232通讯二个中断程序共存时候冲突死机,程序需要读取PS2轨迹球的三个数据通过232发给PC,有时候PC也发数据给PIC16F877A,二个中断对时序要求都很高,PS2是通过RB0口中断进入后查询读数据,但是现在很难做到稳定,不知道为什么,有人搞过吗,指点下,想了不少办法都不行,PIC的中断处理真容易出问题,看来只好用51了
沙发
yewuyi| | 2010-10-17 09:44 | 只看该作者
什么叫PIC中断处理真容易出问题?

呵呵,不能因为你处理不好就说东西有问题,这也太主观了吧,如果用51也没处理好,是不是51也有问题呢?

你的这个问题从表面看,似乎是因为PS2和232的中断响应都要求比较快,造成了资源冲突带来的问题。
但事实上需要那么快的中断响应吗?或者即使需要较快的中断响应就没有办法了吗?
我们可以这样理解这个问题:
PS2其实也是串行通信方式,你的MCU读取PS2设备的状态并得到三个数据,假设这三个数据都是BYTE类型,从表面看真个工作过程是串接的,MCU先读取PS2,然后再使用UART发送给PC,但实质上PS2本身也是有一定的反应速度,假设PS2设备本身5MS更新一次数据,那么MCU只需要定时小于5MS读取一次PS2就可以保证不丢失数据,建立一个缓冲数据数组,这个数据中保存着每次从PS2中读取的数据,UART使用中断发送这个数组中的数据,这既是没有中断只用查询方式也是很轻松完成的事情。
如果可能还存在PS2数据更新速度超过UART发送到PC速度的问题,则可以提高UART的通信速度,另外,PS2设备也应该不是一直更新数据,此时如果开辟了足够大的缓冲,那么UART也能慢慢发完,否则,这就是方案本身不可行,换什么MCU都白搭。

使用特权

评论回复
板凳
tcc8073|  楼主 | 2010-11-20 17:27 | 只看该作者
已经验证了,这个方案用PIC确实做不出来,因为是工业上用,实时性强,PIC的中断处理方式会影响到整个程序的运行的时序,PIC的中断处理方式和厂家给的轨迹球相关电路不太合适一起使用,我们自己设计了轨迹球相关电路,换用51已经把项目做出来了,实现了我们想要达到的最好功能效果。

使用特权

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

本版积分规则

个人签名:诚信,务实,专业,创新

179

主题

1359

帖子

7

粉丝