Estoy haciendo un proyecto en el que los necesitaré y compré dos para aprender a usarlos y encadenarlos. Estoy usando el 74HC166, y estoy teniendo algunos problemas. Los estoy usando de acuerdo con la función de tabla de la hoja de datos, que adjunto:
Porlotanto,esunregistrodedesplazamientoPISOde8bits.Asíescomoestoyinterpretandolatabla.Nosécómoleerlo,asíquetuvequeadivinaryobviamentecometíerrores.
Siquierocargarlosestadosenelregistro,elPEyelCEdebenestarBAJOSantesdeactivarelCPdeBAJOaALTO.Despuésdeeso,puedocomenzaraleerlosvaloresdeQ7,yparacambiarelvalorqueleerédeQ7,tengoquevolveraactivarelCPconPEenALTOyCEenLOW.Nosécómousar,ocuándodeberíausarlafila"no hacer nada". y esto no funciona porque no estoy leyendo los estados correctos. En este momento acabo de conectar los pines Dn a ALTO o BAJO directamente para probarlo.
Este es el código que estoy usando:
/* Trigger a parallel Load to latch the state of the data lines,
*/
digitalWrite(clockEnablePin, LOW);
digitalWrite(ploadPin, LOW);
delayMicroseconds(PULSE_WIDTH_USEC);
digitalWrite(clockPin, HIGH);
delayMicroseconds(PULSE_WIDTH_USEC);
digitalWrite(ploadPin,HIGH);
/* Loop to read each bit value from the serial out line
* of the SN74HC166.
*/
bitVal = digitalRead(dataPin);
digitalWrite(clockPin,LOW);
bytesVal |= (bitVal << ((DATA_WIDTH-1) - 0));
delayMicroseconds(PULSE_WIDTH_USEC);
digitalWrite(clockPin,HIGH);
bitVal = digitalRead(dataPin);
digitalWrite(clockPin,LOW);
bytesVal |= (bitVal << ((DATA_WIDTH-1) - 1));
delayMicroseconds(PULSE_WIDTH_USEC);
digitalWrite(clockPin,HIGH);
Esto debería leer los dos primeros estados. y repasaría el párrafo de "lectura" para leerlos todos. PULSE_WIDTH_USEC es 5. (5 microsegundos).
Entonces, ¿cómo uso estos registros?
EDIT: Ok, acabo de reescribir el código desde cero y funcionó ... Probablemente fue algo tonto.