阅读:1175回复:0
68013 多级中断问题
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; 谢谢! |
|