He conectado un codificador incremental de 600 p / r a un Arduino Uno.
Mi pregunta es esta:
Dado que el Arduino tiene una velocidad de reloj de 16Mhz y realmente no quiero perder un solo pulso, estoy creando una copia impresa de la lógica en CMOS. Tengo:
Codificador Inc - > disparador de borde de disparo (por retraso de propagación) a través de xor y nxor cmos (que actúan como reloj) - > Contador binario arriba / abajo de 16 bits - > d flop register
El codificador inc también tiene un bloque lógico que denota en qué dirección está girando (establece el pin arriba / abajo del contador binario.
Mi problema es este: ¿cómo lidiaría con que Arduino lea el conteo actual? No me gusta leer directamente el contador, ya que puede cambiar durante la lectura, es decir, si es 9, el arduino lee LSB y durante el tiempo que se tarda en leer el siguiente incremento de contador a 10, podría terminar con una lectura de 19. Pensé en un búfer, pero si uso la lógica de activación de borde, parece que para cuando el contador haya terminado su lógica, el registro de flip flop habrá leído el valor actual.
Estoy viendo un Preset asíncrono con retención de datos, pero este tipo de d-flop / otro flip-flop son raros (ish)
¿Algún otro esquema en el que deba pensar?