watsonhua
驱动牛犊
驱动牛犊
  • 注册日期2008-04-23
  • 最后登录2009-07-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望24点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1175回复:0

68013 多级中断问题

楼主#
更多 发布于:2008-06-23 12:30
68013手册上说,对USB中断,清标志位应当先清除EXIF.4,再清除该中断自己的IRQ
那么对IBN这种3级的呢?是否应当先清除EXIF.4,再清除NAKIRQ,最后清除IBNIRQ ?

还有,如果要暂时禁用IBN,只在一次传输结束后再开启,应当怎么写?(PC 10us一次的轮询太恐怖了)

现在遇到的问题是,平时很正常,但在恶劣条件下(如边上放个U盘疯狂xcopy个一天),就会“丢中断”,表现为所有IE都正常,IBNIRQ和NAKIRQ被置位,但EXIF.4没有置位,同时系统也没有进入任何一个ISR,主while中的heart_beat也正常。故障时,程序没有其他异常,用resetPipe手动触发error事件,每次可以传送一帧正确的数据,但IBN不工作了,setupcommand等基于USB中断的东西也不工作了

我现在的IBN ISR如下
IBNIE &= ~bmEP2IBN;
NAKIE &= ~bmIBN;  
  
EZUSB_IRQ_CLEAR();
if( IBNIRQ & bmEP2IBN )
{  
     gs_flag_video_frame_ask = 1;
}
else
{
     IBNIE |= bmEP2IBN;
     NAKIE |= bmIBN;                  
}
IBNIRQ = 0xFF;  
NAKIRQ = bmIBN;

然后,再需要再开IBN时:
IBNIRQ = 0xFF; //clear all IBN IRQ
SYNCDELAY;    
NAKIRQ = 0xFF;
SYNCDELAY;
IBNIE |= bmEP2IBN;
SYNCDELAY;
NAKIE |= bmIBN;    

谢谢!
游客

返回顶部