shiftOut() is too fast for application

shiftOut() is a handy function when the timing works out, but what if it shifts out too fast or too slow? Is there a way to change the default shift speed. My 'scope says each generated clock pulse is about 10uS long and I think the device I am interfacing to would be a lot happier if it was 5x slower. Am I missing something? Is there already a parameter someplace I can change short of writing a new function?

You can always slow down how often data is sent to the shift register.

I guess I did not explain it well enough. It is not a matter of delay between words but between bits. shiftOut() shifts out an entire byte each time it is called, at a rate that is too fast for my app. The bits need to be shifted out the hardware port more slowly. I am thinking there might be a parameter to correct for the rate at which the ATMEGA is being clocked, but it is not mentioned anyplace I can find.

Before the shiftOut function was a part of the Arduino "standard functions" there was a shiftot example in the playground, i think that if you can find that, you can change the delay between individual bits.

Is there already a parameter someplace I can change short of writing a new function?

There is no “bit-gap” delay parameter so you will need a new function.

The source of all core and library functions are installed on your PC with the Arduino environment. A good start will be to include a renamed copy of the standard function in your sketch and modify it to suit your needs.

The source for shiftOut reads as follows:

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)
{
      int i;

      for (i = 0; i < 8; i++)  {
            if (bitOrder == LSBFIRST)
                  digitalWrite(dataPin, !!(val & (1 << i)));
            else      
                  digitalWrite(dataPin, !!(val & (1 << (7 - i))));
                  
            digitalWrite(clockPin, HIGH);
            digitalWrite(clockPin, LOW);            
      }
}

Thank you all, adding a delayMicroseconds(45) after each DigitalWrite took care of my problem and the LCD I was bit banging to works fine now.