tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1350回复:0

关于D12丢包问题

楼主#
更多 发布于:2002-01-03 22:07
上次有位网友提到D12使用中丢包的问题,这里把我知道的说一下。
首先,我碰到的问题是用通道2(64 BYTES)时每次丢最后一个包,有一个帖子中提到只能收一个包,这我没碰到。
可以确定一点,这和D12的double buffer有关,在bulk out的情况下,当第一个bulk包传到D12,引发INT0下降沿,在MCU未将INT0重置为高时,因为double buffer的原因,第二个bulk包也能传到D12。这就引起INTO下降沿缺少一次(我用示波器看过),也就是说少进一次中断,自然会引起丢包。
至于解决办法
1:使MCU足够快,在第二个bulk包来之前将INT0重置为高。(我用的是AT89C52,24K。可能WINBAND的可以)
2:大家可以看一下PHILIPS的例程,在ISR.C中,有一个专处理double buffer的子程序,有一个命令0X84可判断buffer中是否有数剩余(注意,此命令在D12的文挡中没有,是在D11中才有,我问过PHILIPS的FAE,他说可以通用)

其实,我因为项目很急,也没时间去一个个试,上面的方法都只是我的推断。好在我不需要很高的速度,所以就用了通道1,反正也可编程为bulk,16byte也够用了。哪位兄弟有时间试,一定把答案share一下哦。

有driverdevelop上的网友问我这个问题,我元旦在江西婺源玩,一直没上网,见谅。这一并说了。
有问题欢迎一起讨论。
tony.fu@sinowealth.com.cn

对了,PHILIP的FAE的联系方式:潘小雷,
xiaolei.pan@philips.com
0755-5185311*8205
他人很好,很热情,有问题可以找他。
(希望不要把他的电话打爆,呵呵)
tony_fu@citiz.net
游客

返回顶部