Registro de desplazamiento desplazado

2

Tuve mi primer intento de obtener un registro de turnos para trabajar con mi Arduino ... fue casi perfecto, pero parece que me falta mi primer bit.

Seguí la guía aquí, pero utilizando solo un registro de desplazamiento: enlace

Me tomó un poco de tiempo descubrirlo, pero parece que el pin Q1 en mi registro de turnos se está iluminando cuando envío el número 2, Q2 es alto para 4, Q3 = 8, etc. cuando llamo shiftout ( ) con el número 1 no se encienden los LED.

Verifiqué mi cableado y parece que está bien ... luego revisé dos veces y definitivamente está bien.

Las únicas cosas que puedo pensar son: 1. Mi registro de desplazamiento es ligeramente diferente al que están usando ... es un 595N, no un 595. 2. He hecho algo mal en el código ...

En loop ():

  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 1);
  digitalWrite(latchPin, HIGH);

¿Alguien tiene alguna sugerencia para depurar este problema?

Saludos, John

    
pregunta John Hunt

2 respuestas

7

El registro de desplazamiento se está comportando exactamente como está diseñado.

El bit significativo de segundo a más bajo debe encenderse para un valor de 2. Eso es Q1.

Para verificar un valor de "1", debe estar buscando el bit de salida menos significativo, que es Q0.

Además, el 595 y el 595N no son funcionalmente diferentes.

    
respondido por el Anindo Ghosh
1

No soy bueno con el código, pero ¿tal vez está intentando bloquear los datos en la salida antes de que se marque correctamente en el registro de cambios interno? Esto podría dar como resultado que el bit de datos registrado previamente en el registro de desplazamiento aparezca en la salida. Esto podría darte lo que ves. Tal vez necesite un pequeño retraso después del comando shiftOut. O tal vez estoy siendo estúpido?

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas