Con la adición de un poco de hardware puede reducir las demandas del controlador. El principal problema (señalado por Dave) es que las frecuencias no son múltiples, por lo que es difícil sincronizarlas. El hardware sincroniza el flanco ascendente de los pulsos de 3.5Mhz con la salida (asíncrona) de la uC. Los chips pueden ser TTL (serie 7400) o CMOS (serie 4000)
El uC produce la señal 125uS (temporizador de interrupción). La señal de 3.5MHz podría ser producida por un oscilador Xtal externo y es simplemente un tren de pulsos a esa frecuencia. También podría derivarse del oscilador uC a través de divisores.
El flip flop tipo D es un flanco positivo activado. Cuando la salida de uC es BAJA, la salida Q del flip flop es BAJA. La salida de la compuerta AND es también mantenida BAJA por el pin de salida de la uC (BAJA). Esto significa que no pueden pasar pulsos a través de la puerta AND.
Cuando el pin de salida de uC pasa a ALTO, la salida Q del flip flop tiene que esperar hasta el siguiente flanco ascendente del reloj de 3.5MHz antes de subir. Solo cuando las tres entradas a la compuerta AND sean ALTAS, el pulso se verá en la salida de la compuerta. Debido a que estas señales están sincronizadas con el flanco ascendente del pulso de 3.5Mhz, la salida será un pulso de longitud completa.
La salida de la puerta AND se retroalimenta a la unidad de control que necesita detectar DOS PULSOS. En el borde descendente del segundo pulso, luego restablece el pin SALIDA a BAJO, lo que evita que entren más pulsos a través de la puerta AND.
Con la adición de un poco más de electrónica, todo se podría hacer totalmente en hardware.
Metacode
Inicialice el temporizador de interrupción para 125uS
establece el pin de salida HIGH
compruebe si el primer pulso va alto - > bajo
compruebe si el segundo pulso va alto - > bajo
Establezca el pin de salida LOW