Desde luego, no intentaría hacer esto con un Arduino (recuerda, preguntaste qué haría I ). Medir las características de los pulsos a una velocidad de 500 kHz será complicado. La gran pregunta que dejó abierta es qué tan cerca debe estar, o más exactamente, qué tan cerca debe saber que está de los tiempos perfectos de 500 ns y 1.5 µs. Si necesita saber esto dentro del 1%, por ejemplo, será difícil y costará bastante.
Si es lo suficientemente bueno como para muestrear la señal cada 250 ns y vivir con la incertidumbre resultante en el tiempo, entonces es más fácil pero aún así es complicado. En ese caso, puede muestrear la señal en un registro de desplazamiento a 4 MHz y luego analizar el resultado en el firmware. Generar una salida de reloj de 4 MHz con la mayoría de los micros avanzados es fácil, y muchos tendrán un periférico SPI que se puede reutilizar en un convertidor de serie a paralelo.
En un procesador como un PIC 24H, la velocidad de instrucción puede ir a 40 MHz. Eso solo deja 10 instrucciones en promedio por bit para procesar, lo que suena muy poco para que este método sea viable.
Otro enfoque es activar los contadores para los tiempos altos y bajos, y así obtener un recuento del número de tics del reloj entre los bordes. Aún tiene 1M de bordes por segundo para tratar, o 40 instrucciones por borde. Eso todavía suena ajustado, pero posiblemente se puede hacer dependiendo de lo que necesita hacer y lo que se debe hacer con el resultado. El 24H tiene módulos de "captura de entrada" que hacen la mayor parte de esto en hardware, pero el firmware todavía tiene que dar sentido a las mediciones de duración resultantes.
Tenga en cuenta que su tren de pulsos tiene un nivel promedio de 1/4, lo que podría ser posible explotar con cierta inteligencia y dependiendo de lo que esté sucediendo, qué tan rápido lo necesita y muchas otras cosas que no tiene t dijo.