Mi proyecto involucra un PIC que se comunica a través de canales USB y RS-232, que luego se multiplexan a 1 UART por medio de un interruptor analógico dual SPDT. Como tal, el PIC debe saber qué puertos están conectados físicamente para poder seleccionar el puerto USB o el puerto RS232.
¿Cómo haría para hacer esto? Para RS-232, podría configurar una interrupción externa para la línea DTR, pero en mi campo industrial, solo se usan Tx, Rx y Gnd.
Para USB, podría usar Vbus para detectar la presencia, pero es posible una sobrecorriente
¿O sería más factible monitorear la impedancia de las líneas diferenciales usb y las líneas rs232 tx rx, como en los circuitos de detección del conector de audio?
Para USB, la forma más fácil es monitorear la presencia de VBUS.
No estoy seguro de lo que quiere decir con "sobrecorriente", no debería necesitar cargar mucho la línea de alimentación USB, si es que lo hace. Si está realmente preocupado, coloque una resistencia de 10K en serie con el USB Vcc y simplemente ejecútelo en un pin de entrada. Eso debería protegerlo de cualquier falla.
Desafortunadamente, para la serie, puede ser mucho más complicado.
Si tiene suerte, su sistema utiliza señalización de nivel TTL invertido, lo que significa que el nivel de línea cuando no hay tráfico es Vcc, o señalización de nivel RS232, lo que significa que el voltaje de línea sin tráfico es ~+10v o ~-10v , dependiendo de si su autobús está invertido.
Luego, simplemente puede monitorear el nivel de voltaje. 0v significa nada conectado.
Si no tiene suerte, su sistema usa señalización de nivel TTL, con el estado de bus inactivo en 0V. En este caso, realmente la única forma posible de determinar si un dispositivo está conectado es enviar algo de tráfico y ver si obtiene una respuesta.
Transeúnte