阅读:2376回复: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-09 15:39
1 是的,重起机子时,不管设备是否运行,都出现那个提示。
2 USBVIEW 左边没有提示错误,右边是我上边贴的描述符。 3 是的,插上 ,设备管理器里出现,拔下,没有了。 |
|
板凳#
发布于:2004-09-09 15:05
厂商请求处理不会影响到枚举过程.
在设备管理器中你的设备属性里是否是正常工作?在USB VIEW里左边 设备框中你的设备是否正常(没有出现枚举错误提示)?一般来说,问你 要驱动就说明枚举是正确的. "计算机开机时,出现 “至少有一个驱动或**出现错误”"是什么意 思?是说在你重起机子时,不管设备是否正常运行,都报错还是怎么的? 一般来说,当你接上设备时,PC发现新硬件,并安装驱动(或已经装上); 拔下设备就是删除设备(在设备管理器中).再插上,又重来. [编辑 - 9/9/04 by metalwing] |
|
|
地板#
发布于:2004-09-09 14:43
然后提示要装驱动, 安装正确, 设备管理器可以看到PHILIPS PDIUSBD12 SMART EVALUATION BROARD ,没有出现没举错误,但是计算机开机时,出现 “至少有一个驱动或**出现错误”。
用USB VIEW看设备得到下面的: Device Descriptor: bcdUSB: 0x0110 bDeviceClass: 0xDC bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x10 (16) idVendor: 0x0471 (Philips) idProduct: 0x0666 bcdDevice: 0x0100 iManufacturer: 0x00 iProduct: 0x00 iSerialNumber: 0x00 bNumConfigurations: 0x01 ConnectionStatus: DeviceConnected Current Config Value: 0x01 Device Bus Speed: Full Device Address: 0x02 Open Pipes: 4 Endpoint Descriptor: bEndpointAddress: 0x81 Transfer Type: Interrupt wMaxPacketSize: 0x0010 (16) bInterval: 0x01 Endpoint Descriptor: bEndpointAddress: 0x00 Transfer Type: Control wMaxPacketSize: 0x0507 (1287) wInterval: 0x0301 bSyncAddress: 0x10 Endpoint Descriptor: bEndpointAddress: 0x00 Transfer Type: Isochronous wMaxPacketSize: 0x0000 (0) wInterval: 0x0000 bSyncAddress: 0x07 Endpoint Descriptor: bEndpointAddress: 0x05 Transfer Type: Bulk wMaxPacketSize: 0x4002 (16386) wInterval: 0x0A00 bSyncAddress: 0x00 没有看到设备描述符。 我在固件中没有加 厂商请求处理,不知道他们有什么作用,对固件有影响吗? 也没有加下面的这些,程序中没有用到呀 code char * _NAME_USB_REQUEST_DIRECTION[] = { "Host_to_device", "Device_to_host" } code char * _NAME_USB_REQUEST_RECIPIENT[] = { "Device", "Interface", "Endpoint(0)", "Other" }; code char * _NAME_USB_REQUEST_TYPE[] = { "Standard", "Class", "Vendor", "Reserved" } |
|
地下室#
发布于:2004-09-09 14:09
奇怪.
然后他干了什么事?问你要驱动?安装了?正确了?设备正常?用USB VIEW看你的设备是否正常(是否提示枚举错误).如果都正常,那就不用 管他了. |
|
|
5楼#
发布于:2004-09-09 13:12
我删掉了一些总线上的没用的,有用的就是下面了
|
|
|
6楼#
发布于:2004-09-09 12:27
没收到?为什么?不明白.不清楚,不理解,不...
能否把你用BUSHOUND采集到的数据(HUB和DEVICE端的都要)传上来? |
|
|
7楼#
发布于:2004-09-09 12:04
奇怪的现象和烧到片子里程序执行不对的问题都已经解决。原因是USB接口的地线接错了,真是太粗心了。真想 打自己一顿。
TO metalwing: 没有收到,最后收到的就是,80,06,00,02,00,00,09,00返回09 02 2e 00 01 01 00 e0 。啥原因呢?? |
|
8楼#
发布于:2004-09-09 10:38
从你的现象上看,好象是已经枚举了,但可能枚举不完全.
HOST给你发了80,06,00,02,00,00,FF(或大于2E),00了吗?你 回复了吗? |
|
|
9楼#
发布于:2004-09-09 10:09
注: 仿真器调试时,已经装上了驱动。
|
|
10楼#
发布于: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秒后就会发现设备,但仅仅能维持几十秒钟,就不见了。过一会出现了,一直这样。直到送电。 |
|
11楼#
发布于:2004-09-08 10:03
结果正确.那你对中断进行处理了吗?
|
|
|
12楼#
发布于:2004-09-08 09:48
清中断后(ep_last), MCU中断脚 p3.2为高了,中断被清了。这个结果对还是不对呀。
|
|
13楼#
发布于:2004-09-08 08:22
你也应该可以看到MCU的中断(P3口).看看在你清中断后,USB控制芯片
和MCU中断是否被清了. |
|
|
14楼#
发布于:2004-09-07 21:38
看到了 中断寄存器为 1100 0001 ,收到了reset 和 suspend和ep0 out 中断.
|
|
15楼#
发布于:2004-09-07 21:24
我也用的伟福的仿真器,
可我不知道d12的中断寄存器和mcu的寄存器有什么对应关系,怎么看呀,请求指点。 虽然没看到寄存器的状态,但可以知道收到了 reset 和 suspend 中断,也可以进入ep0 rx()中断,设置端点可以走到bEPPflags.bits.setup_packet = 1 这一步,但是进不了主循环中, 跟踪发现,走到中断程序的最后就不走了。郁闷死了! |
|
16楼#
发布于:2004-09-07 18:03
我不知道你的程序,所以也就不知道该怎么走.你用的是什么仿真器?
我用的是伟福仿真器,可以观察到MCU内各寄存器的状态,我想你的也 应该可以.你单步跟踪程序,并观察中断端口的状态,看看在你收到中 断时是什么中断,清中断寄存器后,中断端口又是什么状态. |
|
|
17楼#
发布于:2004-09-07 17:44
我正在用仿真器,感觉程序怎么在ep0 out()里瞎跑,跟着跟着又进了中断程序。不明白怎么回事。
我想知道 如果主机发送了setup包,程序在ep0_rxdone()里应该是按怎样的顺序走的 |
|
18楼#
发布于:2004-09-07 17:26
老朋友快挂了,自己顶下,先。
|
|
19楼#
发布于:2004-09-07 16:59
你没用仿真器吗?用仿真器跟一下就可以了嘛.
|
|
|
上一页
下一页