6 votos

Cómo se pierde la conexión usb

Estoy trabajando con AT90USB1287 controlador con comunicación USB a la PC. Estoy enviando algunos comandos desde el PC al controlador por medio de la comunicación USB para activar algunos conmutador controlado. Soy capaz de cambiar los estados de interruptor mediante el envío de comandos(ENCENDIDO y APAGADO, interruptor controlado por tensión).

Mi problema es que cuando el interruptor está ENCENDIDO y lamentablemente usuario olvidó de enviar comandos desde el PC y se apaga la PC, pero todavía controlador se está ejecutando o supongo que si he perdido la conexión de la PC a través de usb, En que los tiempos se está causando problemas.

Yo quiero marcar la casilla en ATUSB1287 el código de controlador de sí mismo si la conexión usb desatado, a continuación, cambiar comando t debe ser igual a cero.

Puede alguien ayudarme cómo saber usb se pierde la conexión o no? este es mi enfoque como es posible comprobar en el bucle principal de que la conexión usb está perdido? si pierde, entonces apague.

Cualquier otra forma de apagar? después de perder la conexión a PC o de PC apagado.

Soy nuevo en este tipo de cosas, si hay algo mal en esta pregunta por favor, discúlpame.

3voto

Andrew Walker Puntos 9038

Es probable que la solución que mejor se adapte a su requisito sería buscar cuando los eventos de marco USB de 1 ms dejen de ocurrir. Debe haber una lógica relacionada en su código USB para manejar estos eventos, que podría haber restablecido una pérdida de temporizador de trama. Si ese temporizador llega a caducar, usted sabe que el PC ya no está gestionando activamente el USB, incluso si VBUS todavía está presente.

2voto

Wallace Puntos 95

En la página 258 de la hoja de datos:

• 0 – VBUS: VBus bandera
El valor leído de este bit indica el estado de el VBUS pin. Este bit se puede utilizar en el dispositivo modo de monitor del bus USB del estado de la conexión de la aplicación. Ver Sección 22.10, página 255 para obtener más detalles.

En la página 255:

22.10 detección de Plug-ins
La conexión USB es detectado por el VBUS pad, gracias a la siguiente arquitectura:
enter image description here
La lógica de control de la interfaz VBUS pad salidas de una señal con respecto a la VBUS nivel de tensión:
• El "Session_valid" de la señal es de alta actividad cuando el voltaje en el VBUS pad es mayor o igual a 1,4 V. Si es inferior a 1.4 V, la señal no está activo
•El "Vbus_valid" de la señal es de alta actividad cuando el la tensión en el VBUS pad es mayor o igual a 4.4 V. Si es inferior a 4.4 V, la señal no está activo
• El VBUS el bit de estado se establece cuando VBUS es mayor que "Vbus_ válido". El VBUS el bit de estado se borra cuando VBUS cae por debajo de "Session_valid" (histéresis comportamiento)
• El VBUSTI bandera cada vez que el VBUS poco los cambios de estado

No estoy seguro si esto Es lo que tu buscas, pero pensé que iba a publicar de todos modos.

1voto

markpasc Puntos 775

cómo saber usb se pierde la conexión o no?

Busque en el manual de instrucciones del microcontrolador, debe haber información sobre cómo coger el USB Suspender el evento. Este evento se produce cuando el host deja de comunicarse con el dispositivo por completo durante más de 3 ms - no enviar incluso marco de los eventos. Los dispositivos USB se supone que para reducir sus USB de corriente en este estado.

Tenga en cuenta que esto no va a ser útil en caso de que el conductor o el programa de control simplemente se mató, por ejemplo, mediante el administrador de tareas. El USB marco del evento serán enviados cada milisegundo.

1voto

devicenull Puntos 118

Si usted está utilizando la LUFA marco para la gestión de la comunicación USB, entonces usted puede utilizar el EVENT_USB_Device_Disconnect() el evento de detectar la física desconecte el cable (el mismo que el de la interfaz VBUS de detección de Wallace señaló).

Chris Stratton la respuesta también es compatible con la LUFA marco, a través de la EVENT_USB_Device_StartOfFrame (), que recibe cada 1mS, y puede ser utilizado para detectar una válida a nivel de protocolo de conexión. Simplemente restablecer el temporizador cada vez que se desencadena el evento, y comprobar si el temporizador nunca se desborda - si es así, entonces el dispositivo está conectado físicamente, pero no se comunican.

Usted puede encontrar más información sobre estos eventos en LUFA a través de la documentación aquí: LUFA USB Eventos

Si estás rodando su propia implementación, hay mucho que aprender de la LUFA código fuente y ejemplos para AVR.

0voto

Darren Newton Puntos 835

Un modo no específico del USB sería que el controlador ocasionalmente consulta el PC y espera un reconocimiento. Después de N consultas sin confirmación, el controlador puede asumir que se ha perdido la comunicación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X