首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

JB16的中断问题

JB16的中断问题

JB16的USB口上电后,系统提示有新硬件,要求安装软件,但是是unkown device,应该是枚举没通过,中断程序interrupt 2 void isrUSB() 是参考codeworriar_example的JB8的,start08和prm等文件都是建立工程自动生成的,主程序也简单

 void main(void)
{
  int i;
  DDRC=0xff;
  initUSB();  
  cli();
  for(;;) {
  i=0;
  __RESET_WATCHDOG();
  }
}

跟踪中断程序,发现上电后根本没有运行,如果CONFIG中URSTD置位了,中断程序RSTF一段会运行,不知道是什么问题,是不是软件哪儿没设置啊 ,还是硬件有问题,各位老师指点一下

[此贴子已经被作者于2005-11-24 18:03:16编辑过]

有安装驱动的提示硬件应该没有问题了,CONFIG的URSTD是要设置的,运行的是usb复位,在看看你的程序,start08,prm都不需要改动了,看一下你的usb设备描述符定义有问题没
不断学习,摸索中进步!

interrupt 2 void isrUSB() {
 if(UIR1 & BM_EOPF) {  
  SuspendCounter = 0;   
  UIR2 = BM_EOPFR;    
  }
 else if(UIR1 & BM_RXD0F) { 
  LED2=0;
    LED3=1;
  if(USR0 & BM_SETUP)    
   handleSETUP();
  else       
   handleOUT();
  }       
 else if ...

我放了两个led的地方都还没执行到啊,还没到描述符啊,JB16如果接收到setup令牌,如果USBEN=1,RX0E=1,RXDOF=0,就应该自动接受数据并给RXD0F置位,在RXD01E=1的情况下产生中断,但是我这个中断就没产生过,怎么回事啊,难道开中断速度不匹配没接受到主机SETUP包?

[此贴子已经被作者于2005-11-25 20:12:09编辑过]

昨晚找到原因了还是硬件有点小的问题,汗
返回列表