|
Subject - Re: PDIUSBD12 enumeration problem (once again! )
Posted by Michael DeVault - DeVaSys on April 20, 2001 at 11:20:33:
In Reply to: PDIUSBD12 enumeration problem (once again! )
Posted by Partha on April 20, 2001 at 10:52:25:
Partha,
You are welcome.
Ok... a little more information for you...
If the hardware is implemented correctly, and you properly initialize the 'D12,
then connect the cable, you should expect to see something similar
to the following sequence of events...
Suspend Change
Suspend change!
Idle time = 1 sec.
Bus Reset
Bus reset!
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 40 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID
Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Bus Reset
Bus reset!
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 00 05 02 00 00 00 00 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = SET_ADDRESS.
WrEp1 0 - { } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 12 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID
Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 02 00 00 FF 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 09 02 2E 00 01 01 00 60 01 09 04 00 00 04 DC A0 } VALID
Ep0_IN_ISR
WrEp1 16 - { B0 00 07 05 81 03 10 00 0A 07 05 01 03 10 00 0A } VALID
Ep0_IN_ISR
WrEp1 14 - { 07 05 82 02 40 00 0A 07 05 02 02 40 00 0A } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 12 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID
Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 02 00 00 09 01 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 09 02 2E 00 01 01 00 60 01 09 04 00 00 04 DC A0 } VALID
Ep0_IN_ISR
WrEp1 16 - { B0 00 07 05 81 03 10 00 0A 07 05 01 03 10 00 0A } VALID
Ep0_IN_ISR
WrEp1 14 - { 07 05 82 02 40 00 0A 07 05 02 02 40 00 0A } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 00 09 01 00 00 00 00 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = SET_CONFIGURATION.
WrEp1 0 - { } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 08 00 00 00 00 01 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_CONFIGURATION.
WrEp1 1 - { 01 } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 81 0A 00 00 00 00 01 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_INTERFACE.
WrEp1 1 - { 00 } VALID
Ep0_IN_ISR
Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR
Your enumeration sequence may be quite different... it changes for different devices,
and from OS to OS. This is one of the reasons I made my comment about your code needing to be
"event driven" instead of linear.
Anyway, it's a little cryptic... but if you stare at it long enough...
there are a whole lot of hints to be found.
Hope this helps,
Michael
E-mail: info@telesys.ru