I set up my ports like so
DDRD &= ~0x80;// in
DDRD &= ~0x40;// in
DDRD |= 0x20;// out
PORTD |= 0x40;//latch
PORTD |= 0x80;//clock
PORTD |= 0x20;//data
I can & PIND with 0x40 just fine but 0x80 thinks its always low. I can clearly see on the analyzer that it goes high when expected and hits 5 volts. but the code has another option. I thought maybe the pins had two states but from the data sheet it clearly is a i/o pin and with the same capabilities as pd6. Happy to provide more relevant code here but am I missing something.
Should probably add I'm using this but I did check the pin on the chip to breakout point and its good.
Also I do not have an external pull up but looks to be ok without, maybe I'm wrong. I attached what I see on the wire.
Top line is PD7 second is PD6, blue is debug. When the debug goes high, it is put in to a WHILE_CLOCK_IS_LO loop. You can see the line is high and even goes lo but debug runs its loop anyways.