Registros de desplazamiento en cascada controlados por un microcontrolador de ciclo único

Estoy tratando de hacer una unidad en la que se puedan actualizar 4 dígitos en una pequeña cantidad de tiempo desde un microcontrolador de ciclo único (preferiblemente todos los dígitos actualizados dentro de 5uS)

Mi circuito está configurado de la siguiente manera (excluí pantallas de 7 segmentos y resistencias por simplicidad). Los registros de desplazamiento son 74HC595 y el multivibrador de la izquierda es el CD4538, pero creo que necesito actualizarlo a 74HC4538 (¿alguien lo confirma?)

Tengo un multivibrador porque los registros de desplazamiento necesitan que el reloj del registro cambie para mostrar los nuevos datos que se desplazan, así que al agregar uno, eliminé la necesidad de un tercer cable del micro que solo actualiza el valor.

La resistencia es de 10K y el capacitor es de 1nF.

Si uso un micro de menor velocidad como el AT89S52 que solo puede actualizar los pines GPIO a lo mejor de 1/2 microsegundo (con cristal de 22Mhz), entonces este circuito no tiene problema. Pero si empiezo a usar el microcontrolador de ciclo único de alta velocidad, entonces los pines GPIO podrían actualizarse tan rápido como 20 nS.

¿Qué puedo hacer para mejorar este circuito sin reorganizar partes? ¿Debo simplemente actualizar el valor del multivibrador y el condensador más bajo?

tiempo de registro de desplazamiento

¿No puede simplemente agregar algunos NOP entre escrituras en los pines de E/S?
¿Necesita actualizar las salidas cada 5 us, o simplemente actualizarlas todas dentro de 5 us para una frecuencia de actualización mucho más lenta?
No olvide los límites de 0.1uF en cada pin VCC del registro de desplazamiento a Gnd.
Conecté en cadena 45 registros de desplazamiento como ese y usé transferencias SPI desde un Atmel Atmega1284P sincronizado a 16 MHz. El reloj SPI se configuró en 8 MHz, pude actualizarlos cada 50uS (17 relojes cada uno, por lo que 1.06uS cada byte que se envió). AT89S52 también admite transferencias SPI. 4 habría tomado poco más de 4uS a 16 MHz. Con un reloj de 22 MHz y un SPI de 11 MHz, entonces 4 debería superar los 3 uS.

Respuestas (1)

Tenga en cuenta que el 595 utilizado de esta manera tiene un problema: la salida en cadena cambia en el mismo borde del reloj que la entrada de las siguientes muestras de chips. Un chip que está realmente diseñado para este tipo de uso (IIRC hay uno en la serie de CD) tiene una salida en cadena tipo margarita retrasada.

Puede mitigar este problema al:

  • retrasar un poquito los datos de salida en cadena (RC)
  • aplicando el reloj al revés: conéctelo primero al último chip de la cadena

No entiendo por qué está usando ese 4538. Si solo desea tener siempre los últimos datos (¡cambiantes!) En las salidas, puede conectar SCK y SLK juntos. Obtendrá algunas imágenes fantasma, dependiendo de su relación de actualización/inactividad.

Quería minimizar el parpadeo. Cada vez que se alterna RCK, la pantalla se actualiza. Si ato los relojes, la pantalla se actualizará por cada bit desplazado, lo que significa más parpadeo. Entonces, lo que hice fue crear un tiempo de espera para que cuando los datos dejen de cambiar, la pantalla se actualice una vez.
DE ACUERDO. parece razonable.