Evite reiniciar el dispositivo serie USB cuando se inserta otro dispositivo USB [cerrado]

-1

EDITAR 7/7/2018:

No se puede agregar una respuesta porque esta pregunta está cerrada, sin embargo, hay una respuesta aquí .

No es un problema relacionado con Windows solamente. El reinicio se debe al comportamiento del hardware, el propio microcontrolador, detecta un cambio y se reinicia.

Todavía no sé por qué se debe reiniciar la serie USB cuando se inserta o desenchufa un nuevo dispositivo USB. También sucede cuando inserta o desenchufa, por ejemplo, un mouse USB. Extraño.

Tengo dos dispositivos USB compatibles con Arduino (con IC serie CH341) en un concentrador USB integrado en una caja, un ESP8266 y una placa ATMega32u4 (Pro mini).

Ambos dispositivos se pueden encender o apagar (al activar o desactivar las líneas de + 5V y + D), por lo que se conectarán o desconectarán del concentrador USB.

Los dispositivos se pueden encontrar y comunicarse entre ellos a través de I2C, funciona bastante bien. El concentrador USB está conectado a una PC con el sistema operativo Windows 7.

El problema: es muy molesto que cuando enciendes uno de los dos, y uno de los dos ya está encendido, también se "reinicia" (el reinicio hace que la MCU se reinicie) el que estaba encendido.

Switched:      state other switch:   state ESP8266:        state ATMega32u4:      cause:    
 S1:OFF to ON   S2:ON                 off and turns on      is on because S2:ON    ATMega32u4 reset, why?
 S2:OFF to ON   S1:ON                 is on because S1:ON   is off and turns on    ESP8266 reset, why?

Especialmente el ESP2866 es molesto, porque tiene mucho trabajo que hacer para conectarse (tomarse un tiempo) etc.

No tiene nada que ver con los picos en el bus, el restablecimiento del hub, etc., ve el mismo comportamiento cuando inserta dichos dispositivos directamente en su PC, todos los mismos dispositivos se restablecerán por alguna razón.

¿Hay una manera de evitar esto y por qué sucede de todos modos?

Visualización de la situación

    
pregunta Codebeat

1 respuesta

1

Windows vuelve a enumerar el árbol en cada controlador UHCI cuando se inserta un dispositivo. Puede leer esto para Una buena descripción del proceso.
Supongo que el proceso es muy similar en Linux.

Si desea evitar la nueva enumeración, luego conecte los dos dispositivos a un controlador USB / árbol de concentradores por separado.
Recuerde que la mayoría de los controladores de PC USB en realidad tienen dos controladores UHCI, por lo que probablemente encontrará que los puertos traseros y frontales aparecen bajo diferentes Raíces UHCI. Para empezar, puedes experimentar usando puertos delanteros y traseros.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas