阅读:2369回复:22
d12固件调试:收到reset中断后。。 (老朋友们来帮忙呀)
设备上电后,先产生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 为什么进不去呢。 |
|
沙发#
发布于: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 |
|
板凳#
发布于:2004-09-06 21:32
你"bEPPflags.bits.setup_packet = 0"后,你看看中断是否还在.有
的芯片的清中断是通过置1(bEPPflags.bits.setup_packet = 1)来清 的. |
|
|
地板#
发布于:2004-09-07 16:28
没法子看呀!
我就是进不了主循环的那一段呀,能进入ep0 out()里, 在ControlData.wLength = 0; ControlData.wCount = 0;之后加了指示灯,是可以亮的。程序走到这一步,往下就不知道怎么走的了。 我想知道,设置断点的话,如果程序能走到这一步会是什么现象。 |
|
地下室#
发布于:2004-09-07 16:59
你没用仿真器吗?用仿真器跟一下就可以了嘛.
|
|
|
5楼#
发布于:2004-09-07 17:26
老朋友快挂了,自己顶下,先。
|
|
6楼#
发布于:2004-09-07 17:44
我正在用仿真器,感觉程序怎么在ep0 out()里瞎跑,跟着跟着又进了中断程序。不明白怎么回事。
我想知道 如果主机发送了setup包,程序在ep0_rxdone()里应该是按怎样的顺序走的 |
|
7楼#
发布于:2004-09-07 18:03
我不知道你的程序,所以也就不知道该怎么走.你用的是什么仿真器?
我用的是伟福仿真器,可以观察到MCU内各寄存器的状态,我想你的也 应该可以.你单步跟踪程序,并观察中断端口的状态,看看在你收到中 断时是什么中断,清中断寄存器后,中断端口又是什么状态. |
|
|
8楼#
发布于:2004-09-07 21:24
我也用的伟福的仿真器,
可我不知道d12的中断寄存器和mcu的寄存器有什么对应关系,怎么看呀,请求指点。 虽然没看到寄存器的状态,但可以知道收到了 reset 和 suspend 中断,也可以进入ep0 rx()中断,设置端点可以走到bEPPflags.bits.setup_packet = 1 这一步,但是进不了主循环中, 跟踪发现,走到中断程序的最后就不走了。郁闷死了! |
|
9楼#
发布于:2004-09-07 21:38
看到了 中断寄存器为 1100 0001 ,收到了reset 和 suspend和ep0 out 中断.
|
|
10楼#
发布于:2004-09-08 08:22
你也应该可以看到MCU的中断(P3口).看看在你清中断后,USB控制芯片
和MCU中断是否被清了. |
|
|
11楼#
发布于:2004-09-08 09:48
清中断后(ep_last), MCU中断脚 p3.2为高了,中断被清了。这个结果对还是不对呀。
|
|
12楼#
发布于:2004-09-08 10:03
结果正确.那你对中断进行处理了吗?
|
|
|
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秒后就会发现设备,但仅仅能维持几十秒钟,就不见了。过一会出现了,一直这样。直到送电。 |
|
14楼#
发布于:2004-09-09 10:09
注: 仿真器调试时,已经装上了驱动。
|
|
15楼#
发布于:2004-09-09 10:38
从你的现象上看,好象是已经枚举了,但可能枚举不完全.
HOST给你发了80,06,00,02,00,00,FF(或大于2E),00了吗?你 回复了吗? |
|
|
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 。啥原因呢?? |
|
17楼#
发布于:2004-09-09 12:27
没收到?为什么?不明白.不清楚,不理解,不...
能否把你用BUSHOUND采集到的数据(HUB和DEVICE端的都要)传上来? |
|
|
18楼#
发布于:2004-09-09 13:12
我删掉了一些总线上的没用的,有用的就是下面了
|
|
|
19楼#
发布于:2004-09-09 14:09
奇怪.
然后他干了什么事?问你要驱动?安装了?正确了?设备正常?用USB VIEW看你的设备是否正常(是否提示枚举错误).如果都正常,那就不用 管他了. |
|
|
上一页
下一页