zjy3411
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2007-03-22
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望14点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1384回复:3

枚举中的中断问题?

楼主#
更多 发布于:2005-07-28 11:50
  void fn_usb_isr()
{

       unsigned int i_st = 0;
       unsigned char ep_last;

       bEPPflags.bits.in_isr = 1;

       i_st = D12_ReadInterruptRegister();
        if(i_st != 0)
              {
                     if(i_st & D12_INT_BUSRESET)
                            {
                                   bus_reset();
 
                                   bEPPflags.bits.bus_reset = 1;
                            }

                     if(i_st & D12_INT_EOT)
                            dma_eot();

                     if(i_st & D12_INT_SUSPENDCHANGE)
                            bEPPflags.bits.suspend = 1;

                     if(i_st & D12_INT_ENDP0IN)
                            ep0_txdone();
                     if(i_st & D12_INT_ENDP0OUT)
                            ep0_rxdone();
                     if(i_st & D12_INT_ENDP1IN)
                            ep1_txdone();
                     if(i_st & D12_INT_ENDP1OUT)
                            ep1_rxdone();
                     if(i_st & D12_INT_ENDP2IN)
                            main_txdone();
                     if(i_st & D12_INT_ENDP2OUT)
                            main_rxdone();
              }

       bEPPflags.bits.in_isr = 0;
}

单步只执行为:i_st =0080H(USB Suspend信号发生)===>i_st =00C0H(USB Resume信号)===>i_st =0040H(不知道为什么会这样)===>i_st =0080H(又回出现)这时WINXP会找到
Unkonw 设备,再单步执行i_st =00C0H(USB Resume信号)===>i_st =0000H后面一直都是0000h中断.请哪位DX指点一下.再做不出来,兄弟我就要out拉.
wenbbo
驱动牛犊
驱动牛犊
  • 注册日期2005-07-29
  • 最后登录2006-04-01
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-07-29 10:16
out?是over吧。
1,0000h中断?可能是你没有在中断后清除中断标志寄存器,这个寄存器是mcu的(我用的三星4510),不是usb 的。
2,接口应该送进主机信号了,没有?联线有问题。
zjy3411
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2007-03-22
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望14点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-29 14:24
我用的是外部中断_INT1,不要清除.而D12,只有0-5(ENDP0IN and ENDP1OUT)才清除,老大能不能清楚一点.呵呵
zjy3411
驱动牛犊
驱动牛犊
  • 注册日期2005-07-20
  • 最后登录2007-03-22
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望14点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-30 10:43
问题已解决,是lpc931的输入输出要配好.
游客

返回顶部