Esa es una forma razonable de resolver el problema con colisiones accidentales.
Otro método común es utilizar una salida de drenaje agotado . Es el metodo
utilizado por I2C para garantizar que dos controladores en conflicto no consuman demasiada corriente y para garantizar que la señal sea baja o alta, y no algo intermedio.
De esta manera, puedes conectar tantas salidas como desees, ya que no hacen nada o llevan la salida a tierra. Si dos o más pines llevan la misma señal a tierra, no pasa nada malo.
Para hacer que esto funcione, necesita un solo resistor de pull-up en el bus, y dado que nadie está manejando activamente la señal alta, esto hace que la tasa de bits máxima sea menor.
Ya que está utilizando una interfaz serial controlada por software, debería ser fácil de adaptar a sus necesidades. En lugar de configurar los puertos como salidas push-pull y luego configurarlos como bajos o altos, los configura como entradas con pull-up cuando se supone que tienen salida alta o input , y configúrelos como output low cuando se supone que están output low .