¿Cómo sería el firmware para controlar el sistema Shift1 (para la operación de registro de desplazamiento de 1 pin)?

2

Esta es una pregunta de seguimiento de esta respuesta de Spehro Pefhany , en la que nos explica cómo use los registros de desplazamiento en serie 74HC595 con un solo pin de salida digital. Abajo está la foto que publicó.

Por curiosidad, y también para evaluar si yo mismo podría controlar un registro de turnos, mis preguntas son:

1. ¿Qué tan complicado es controlar los registros de desplazamiento de esta manera con una MCU, en C, por ejemplo?

2. ¿Cómo sería el firmware que controla este registro de desplazamiento?

3. ¿Existen bibliotecas de Arduino para ayudarnos a manejar eso (o también para otras plataformas)?

No tengo idea de cómo empezar.

    
pregunta Ricardo

1 respuesta

1

Esta es solo una respuesta aproximada porque hay áreas de las que no estoy seguro, así que agradecería que alguien señalara errores. Supongo que uno de sus problemas es que la función delay solo permite una resolución de milisegundos y la función delayMicroseconds solo tiene un tiempo de retardo mínimo de 2μs. Sin embargo, el ATmega32U4 en el Arduino Micro (y otros también) tiene una velocidad de reloj de 16MHz, por lo tanto podemos calcular el tiempo entre ciclos:

$$ \ Delta t = \ frac {1} {16 \ text {MHz}} = 0.0625 \: \ mu \ text {s} $$

Por lo tanto, podemos calcular cuántos ciclos de reloj deben transcurrir antes de cambiar la salida de HIGH a LOW y viceversa. Queremos un retraso de 1μs y por lo tanto calculamos:

$$ n = \ frac {1} {0.0625} = 16 $$

Donde n es el número de ciclos de reloj. Por lo tanto, queremos que la CPU espere 16 ciclos, podemos lograr esto con algunos ensamblajes en línea:

__asm__("nop\n\t"/*14 more of these*/"nop\n\t");

Sin embargo, no he tenido en cuenta el número de ciclos de reloj que requiere digitalWrite antes de cambiar el voltaje del pin de salida, por lo que también debería tener en cuenta eso.

Como dije, esta es solo una respuesta de boceto, así que apreciaría las comprobaciones de validez y las sugerencias / críticas; ¡Soy bastante nuevo en esto!

    
respondido por el Thomas Russell

Lea otras preguntas en las etiquetas