I have an Arduino Duemilanove that I've got hooked up to a couple of shift registers (74HC959) for hooking up more outputs. Based on the assumption that all pins are low on startup, I connected the OE pin to an Arduino pin through an inverter/not gate with the hope that on power up, everything will be off until I set some pins high. The problem I have is that all or some of the pins flicker on power up. I can see the led on the board that's connected to pin 13 light up when first plugged in. Is this expected behavior, and if so, how can I modify my circuit to adjust for this initial flicker? I'm a bit of an electronics noob, so my only idea was to hook a capacitor up to the power for the shift registers and to ground to slowly bring the shift registers online but this doesn't seem to have done anything.
The Arduino bootloader specifically flashes the digital i/o 13 briefly, to let you see that the bootloader exists and is running normally. A power-on self-test, if you will. I don't think it's flashing any other output pin. All of the i/o pins are initialized as inputs (high impedance) during power-on, to avoid affecting circuits until you're ready.
If you really need all pins to stay low, including digital i/o 13, you may need to customize your bootloader. You can replace the Arduino bootloader, but not through the usual USB upload process. I think you'll need an FTDI or ICSP reprogramming cable and a parallel port, but there are several alternatives. Someone who has done this can speak more detail if that's the direction you need to go.
But I find having pin 13 flash is useful, especially now that the LED is built into the Duemilanove boards.
Well the output enabled pin on the shift registers is actually controlled by pin 8 and the leds hooked up to the outputs of the shift registers blink briefly on power up so I assumed all pins were going high on power up. Maybe static or my inverter is slow?
so I assumed all pins were going high on power up
Yes they are that's how it works. On power up all pins are set to be inputs, inputs tend to float high until you initialises them. If you want to stop this happening then you have to fit pull down resistors on the pins.
The pull down resistors were exactly what I needed. And I learned me something too. Thanks a bunch for your help!