[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 05 июля 2002 г. 14:40
В ответ на: Ответ: отправлено Dzen 05 июля 2002 г. 14:10

На ходу не пробовал.
Но подключение и отключение устройства, определяется резистором подсоединенным к D+ или D-.
(в моем PDIUSBD12 внутренний SoftConnect).
Я определил 3 состояния устройства

DefaultState equ 0
AdressState equ 1
ConfiguredState equ 2

после получения команды SetAdress устанавливаю его и разрешаю PDI
использовать его.

mov DeviceState,#AdressState ; устройство имеет адрес
Command 0D8h ; разрешить все Endpoints
seld
mov a,#01
movx @R0,A ; разрешаем страница 9 Product Specification

Set Config отрабатываю так

;----------- Set Config
; если пришло число отличное от 0 переводим устройство в ConfiguredState
; в противном случае переводим в AdressState
; 7.6 Fimware Programming Guide
; в Guide написано что меняются только флаги
; но должно менятся и поведение устройства ?

SetConfiguration:
mov a,ConfigValue
jz toAdressState
mov DeviceState,#ConfiguredState
jmp SetConfigurationEnd

toAdressState:
mov DeviceState,#AdressState

SetConfigurationEnd:
clr a
call AnswerMaker
jmp EndMakeControlOut

то есть если пришло SetConfiguration c 0 перехожу в состояние Adressed в противном случае в Configured.

В комплекте NTDDK идет программа USBVerify ее нужно скомпилировать.
Она показывает в каком состоянии находится устройство.

А в комплекте Jungo есть утилитка позволяющая посылать посылки в ControlOut и смотреть ответ ControlIn.

Та есть глюк.

Если ожыдаемую длину ответа установить в 255 то для Control Endpoint
отрабатывает правильно. А для остальных требует точную длину ответа.



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru