14
Shift register missing bits (discuss.tchncs.de)
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]

Hey friends,

I have a two daisy chained shift registers (74AHC595) which are controlled via an ESP32. I want to set one output to high at a time before switching to the next.

The code seems to work, but the outputs O_9 and O_10 are not staying high (zoom) after setting them, whereas all the other ones are working fine. This is the used code snipped:

pinMode(SHIFT_OUT_DATA, OUTPUT);
pinMode(SHIFT_OUT_CLK, OUTPUT);
pinMode(SHIFT_OUT_N_EN, OUTPUT);
pinMode(SHIFT_OUT_LATCH, OUTPUT);

digitalWrite(SHIFT_OUT_N_EN, LOW);

uint16_t input_bin = 0b1000000000000000;

for(int i=0; i<17; i++){

    byte upper_byte = input_bin >> 8;
    byte lower_byte = input_bin & 0x00FF;

    digitalWrite(SHIFT_OUT_LATCH, LOW);
    shiftDataOut(SHIFT_OUT_DATA, SHIFT_OUT_CLK, MSBFIRST, lower_byte);
    shiftDataOut(SHIFT_OUT_DATA, SHIFT_OUT_CLK, MSBFIRST, upper_byte);
    usleep(10);
    digitalWrite(SHIFT_OUT_LATCH, HIGH);

    delay(10)
    input_bin = input_bin>>1;
} 

Is there anything I'm doing wrong, or any idea on where the problem may lie? I've already tried looking for shorts and other error sources, but the design was manufactured on a PCB and no assembly issues are noticeable.

you are viewing a single comment's thread
view the rest of the comments
[-] [email protected] 1 points 2 years ago

Would it work if you made that delay 1000?

[-] [email protected] 1 points 2 years ago

Also try upping the usleep call?

[-] [email protected] 1 points 2 years ago* (last edited 2 years ago)

Hmmmm do you want to write to both shift register at the same time? I say this because you're looping 16 times, but seem to be sending the high and low bytes out 16 times over rather than one bit each time, although you are shifting the input.

[-] [email protected] 1 points 2 years ago

Maybe I'm getting ahead of myself, but maybe try using digitalWrite for a single bit instead of shiftDataOut?

[-] [email protected] 2 points 2 years ago

Good idea, I've tried usleep after all lines, but no change..

this post was submitted on 27 Sep 2023
14 points (100.0% liked)

Ask Electronics

3789 readers
81 users here now

For questions about component-level electronic circuits, tools and equipment.

Rules

1: Be nice.

2: Be on-topic (eg: Electronic, not electrical).

3: No commercial stuff, buying, selling or valuations.

4: Be safe.


founded 2 years ago
MODERATORS