Múltiples clientes escuchando la línea UART TX

0

Estoy construyendo un dispositivo DMX y estoy pensando en poner en paralelo la carga de trabajo entre varios microcontroladores. El dispositivo tiene que admitir 24 canales PWM y me temo que no podré dar servicio a los 24 canales (software modulado por ángulo de bits) en una atmu MCU. ¿Es posible / correcto conectar varios Atmegas para escuchar en la línea TX después del receptor RS485 o must coloco un receptor RS485 en cada MCU?

Mi idea es que la primera MCU tendrá un conmutador DIP de dirección y establecerá las direcciones para las MCU posteriores a través de SPI o I2C, luego todas escucharán la misma línea de TX proveniente de un receptor RS485 y actuarán como deberían cuando Recibe sus propias direcciones. (Los valores del bus DMX para todos los 512 canales se repiten una y otra vez)

¿Esto es factible? Creo que no tendría más de 3 MCU paralelas escuchando la misma línea.

    
pregunta miceuz

2 respuestas

1

Si observamos el MAX485 específicamente, la hoja de datos dice que la corriente de cortocircuito del receptor es de hasta 95 mA. Creo que podemos tomar esto como una estimación de la capacidad de conducción del pin RO (recibir salida). Si tienes tres dispositivos escuchando esto, solo es cuestión de que la impedancia de entrada resultante sea lo suficientemente alta para que el pin RO no esté sobrecargado.

De acuerdo con la hoja de datos de Atmega ( enlace , ¿estoy buscando lo correcto?), el puerto los pines tienen resistencias de extracción programables, de modo que si se usan como entradas, generan corriente cuando se bajan. Esta resistencia de pull-up debe estar apagada para los pines que están obteniendo la señal de recepción, de modo que estén en el estado "Tri-State / High-Z" (tabla 20). No se especifica la altura de "High-Z", pero como se trata de un chip CMOS, es probable que sea tan alto que no tenga que preocuparse por atascarse en el receptor.

    
respondido por el Kaz
3

Sí, funcionará, no hay ninguna diferencia entre usar uno o varios mcu para realizar el trabajo siempre que pueda particionarlos correctamente para que no haya contención / superposición entre el trabajo.

Dado que cada MCU solo está escuchando, debería ser bastante fácil de hacer (ya que nunca pueden transmitir nada si no hay contención en el bus).

Entonces, solo tiene que especificar alguna forma para que cada MCU haga su propio conjunto de trabajo. Cada carga de trabajo es independiente de la otra, esto debería ser relativamente fácil. Si la carga de trabajo no se puede dividir en partes independientes, entonces es un problema potencialmente mucho más difícil y entra en el ámbito de los subprocesos múltiples.

Ahora, en cuanto a los receptores múltiples, eso depende. Cada MCU actuará como un código auxiliar en la línea TX y esto puede causar una degradación de la señal (problemas de adaptación de impedancia, reflexiones, etc.). Cada receptor RS485 también actuará como un código auxiliar. Ya que RS485 está diseñado para hacer estas cosas y tiene una velocidad relativamente baja, debería estar bien.

Es difícil saber si esto causará problemas o no, ya que depende de los detalles finos. Cómo enrutar, desviar, longitud de trazas, impedancia de traza, etc ...

Diría que, adelante, probablemente funcionará bien.

    
respondido por el AbstractDissonance

Lea otras preguntas en las etiquetas