La sincronización a una resolución de 100ns requiere un temporizador que funcione a 10MHz. Muchos microcontroladores deberían ser capaces de ejecutar un temporizador tan rápido.
El problema surge cuando intenta cronometrar la llegada de 6 señales. ¿Están todas estas señales en el mismo cable o cada una en un cable diferente?
Si todos están en el mismo cable, entonces es posible hacer esto con precisión en cualquier MCU con un solo temporizador de 10MHz. Ingenuamente, el código para hacer esto se vería así:
wait for trigger signal
reset timer
wait for first signal
save timer value
reset timer
....
wait for sixth signal
save timer value
reset timer
El problema es que lleva un tiempo finito restablecer el temporizador. Esto causa dos problemas:
Los tiempos medidos estarían mal por unos 100ns, dependiendo de su implementación. Sin embargo, deberían estar consistentemente equivocados. IE mal por exactamente la misma cantidad cada vez. Esto significa que puede compensarlo fácilmente agregando una pequeña cantidad a cada medición.
Habría un tiempo mínimo que podría medir. Si el pulso llegó 100ns después del anterior, entonces probablemente lo perderá. No sé si hay algo que puedas hacer al respecto en el software. Tendrá que encontrar un microcontrolador que pueda manejar múltiples pulsos en el hardware.
¿Qué microcontrolador puede manejar múltiples pulsos en hardware? El Cypress PSoC ! Este es un microcontrolador que también contiene bloques digitales configurables, lo que significa que puede tener fácilmente 6 temporizadores separados en funcionamiento, cada uno a 60MHz, lo que le brinda una resolución mejor que 20ns.
Aquí hay un ejemplo que hice rápidamente para mostrarle el tipo de cosas que podría hacer con él. Tengo 6 temporizadores separados, todos corriendo fuera del reloj del bus, que pueden llegar hasta 67MHz. Hay un pin de activación que inicia la ejecución de todos los temporizadores y otros 6 pines, cada uno de los cuales causa un evento de captura en el temporizador. Un registro de estado permite que su código monitoree qué temporizadores tienen un pulso. El código puede leer los valores de los temporizadores.