lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2369回复:22

d12固件调试:收到reset中断后。。 (老朋友们来帮忙呀)

楼主#
更多 发布于:2004-09-06 13:56
设备上电后,先产生reset 中断,这个中断能收到,但是为什么进入不到,主循环的程序中呢?
  if(i_st & 0x40)
           LED=0;
bEPPflags.bits.bus_reset = 1;
  中断里加了一个指示灯,灯亮,说明收到了中断,也置为高了。
下一步应该到了下面的主循环才对呀!这样 suspend 才会置高,产生挂起,对不?
  
    while( TRUE )
{
  if (bEPPflags.bits.bus_reset)
  {
DISABLE;
bEPPflags.bits.bus_reset = 0;
ENABLE;
D12SUSPD = 1;
   } // if bus reset
  
    为什么进不去呢。  
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-06 18:29
同样,进入ep0 out()后,把setup_packet 置为高后,也进不去下面的程序,进不去 control_handle

if (bEPPflags.bits.setup_packet){//Setup包处理
DISABLE;
bEPPflags.bits.setup_packet = 0;
ENABLE;
 
control_handler();//调用请求处理子程序
D12SUSPD = 1;
} // if setup_packet
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-06 21:32
你"bEPPflags.bits.setup_packet = 0"后,你看看中断是否还在.有
的芯片的清中断是通过置1(bEPPflags.bits.setup_packet = 1)来清
的.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-07 16:28
没法子看呀!
我就是进不了主循环的那一段呀,能进入ep0 out()里, 在ControlData.wLength = 0;
ControlData.wCount = 0;之后加了指示灯,是可以亮的。程序走到这一步,往下就不知道怎么走的了。

我想知道,设置断点的话,如果程序能走到这一步会是什么现象。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-07 16:59
你没用仿真器吗?用仿真器跟一下就可以了嘛.
新手上路,请多关照.
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-07 17:26
老朋友快挂了,自己顶下,先。
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-07 17:44
我正在用仿真器,感觉程序怎么在ep0 out()里瞎跑,跟着跟着又进了中断程序。不明白怎么回事。

   我想知道 如果主机发送了setup包,程序在ep0_rxdone()里应该是按怎样的顺序走的
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-07 18:03
我不知道你的程序,所以也就不知道该怎么走.你用的是什么仿真器?
我用的是伟福仿真器,可以观察到MCU内各寄存器的状态,我想你的也
应该可以.你单步跟踪程序,并观察中断端口的状态,看看在你收到中
断时是什么中断,清中断寄存器后,中断端口又是什么状态.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-07 21:24
我也用的伟福的仿真器,
可我不知道d12的中断寄存器和mcu的寄存器有什么对应关系,怎么看呀,请求指点。
 
虽然没看到寄存器的状态,但可以知道收到了 reset 和 suspend 中断,也可以进入ep0 rx()中断,设置端点可以走到bEPPflags.bits.setup_packet = 1 这一步,但是进不了主循环中,
跟踪发现,走到中断程序的最后就不走了。郁闷死了!

lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-07 21:38
看到了  中断寄存器为 1100 0001 ,收到了reset 和 suspend和ep0 out  中断.
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-08 08:22
你也应该可以看到MCU的中断(P3口).看看在你清中断后,USB控制芯片
和MCU中断是否被清了.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-08 09:48
清中断后(ep_last), MCU中断脚 p3.2为高了,中断被清了。这个结果对还是不对呀。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-09-08 10:03
结果正确.那你对中断进行处理了吗?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-09-09 10:03
1 goodlink一直亮着。从bushound抓到的数据来看,有Get
Configuration Descriptor (80,06,00,02,00,00,09,00),返回09 02 2e 00  01 01 00
e0  ....。然后就没有了,没有看到读取全部的描述符。用busview可以看到设备描述符和端点描述,没有看到配置描述符。  但是驱动装上了,这样有问题吗?

2 以上是仿真器的结果,写在片子里,就好像没有回应GET_DESCRIPTION。我在程序开始加了延时好像没有改善。应该怎么办呢,急死了!

3 奇怪的现象,我不上电插上电缆开始是不会发现设备的,这也是正确的,但是过了大概30秒后就会发现设备,但仅仅能维持几十秒钟,就不见了。过一会出现了,一直这样。直到送电。
          
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-09-09 10:09
注: 仿真器调试时,已经装上了驱动。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-09-09 10:38
从你的现象上看,好象是已经枚举了,但可能枚举不完全.
HOST给你发了80,06,00,02,00,00,FF(或大于2E),00了吗?你
回复了吗?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-09-09 12:04
奇怪的现象和烧到片子里程序执行不对的问题都已经解决。原因是USB接口的地线接错了,真是太粗心了。真想 打自己一顿。

TO metalwing: 没有收到,最后收到的就是,80,06,00,02,00,00,09,00返回09 02 2e 00 01 01 00 e0 。啥原因呢??

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-09-09 12:27
没收到?为什么?不明白.不清楚,不理解,不...
能否把你用BUSHOUND采集到的数据(HUB和DEVICE端的都要)传上来?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-09-09 13:12
我删掉了一些总线上的没用的,有用的就是下面了
附件名称/大小 下载次数 最后更新
2004-09-09_intest3suc.txt (3KB)  0
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-09-09 14:09
奇怪.
然后他干了什么事?问你要驱动?安装了?正确了?设备正常?用USB VIEW看你的设备是否正常(是否提示枚举错误).如果都正常,那就不用
管他了.
新手上路,请多关照.
上一页
游客

返回顶部