С этого начинали все кого я знаю(+) Помогает кстати.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено DM 05 марта 2003 г. 15:45
В ответ на: Спасибо. Так скорее всего и сделаю... отправлено Ю 04 марта 2003 г. 16:45

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