zzxiaohua
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1558回复:6

求助:关于d12端点输入中断程序的疑问

楼主#
更多 发布于:2004-11-19 20:09
在周立功的那本d12书中和源代码中都提到d12的端点1和2的输入中断是在发送完数据后才产生的,中断程序只要读取端点号的最后状态寄存器来清除中断寄存器的相应位,并把状态清零即可。USBCHIP_ReadLastTransactionStatus(3);
那么输入的数据是GenBuf[]或EpBuf[]中的数据吗?如果GenBuf[]或EpBuf[]中的数据为零,是否不产生中断呢?
grimreaper
驱动牛犊
驱动牛犊
  • 注册日期2004-10-13
  • 最后登录2006-08-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-21 16:12
实际上是你调用了D12_WriteEndpoint(endp,len,buf),在主机下一个in包来的时候,主机取走数据,它才进入EP1IN中断服务子程序的。至于什么时候调用D12_WriteEndpoint(endp,len,buf),你想传数据给主机的时候,你就得调用它了


[编辑 -  11/20/04 by  frades]


同意!不过我是菜鸟,没有发言权
frades
驱动牛犊
驱动牛犊
  • 注册日期2004-10-16
  • 最后登录2005-11-03
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-20 15:59
实际上是你调用了D12_WriteEndpoint(endp,len,buf),在主机下一个in包来的时候,主机取走数据,它才进入EP1IN中断服务子程序的。至于什么时候调用D12_WriteEndpoint(endp,len,buf),你想传数据给主机的时候,你就得调用它了


[编辑 -  11/20/04 by  frades]
frades
驱动牛犊
驱动牛犊
  • 注册日期2004-10-16
  • 最后登录2005-11-03
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-20 15:53


[编辑 -  11/20/04 by  frades]
zzxiaohua
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-20 15:51
可是在d12固件程序中端点1的IN中断处理程序中只有:
void ep1_txdone(void)
{
D12_ReadLastTransactionStatus(3);
}
什么时候调用的D12_WriteEndpoint(endp,len,buf)呢?
frades
驱动牛犊
驱动牛犊
  • 注册日期2004-10-16
  • 最后登录2005-11-03
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-20 15:41
我的理解是:当你调用D12_WriteEndpoint(endp,len,buf)时,D12将数据写入端点,在主机下一个in包来的时候自动将其送出,送出同时产生中断。
不知我的理解是否正确,还请大侠们指正。
zzxiaohua
驱动牛犊
驱动牛犊
  • 注册日期2004-04-09
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-20 11:50
怎么没人回呀,难道我的问题太弱?
游客

返回顶部