Hallo,
danke für deinen Hinweis auf CPOL. Habe in irgend einem Forum gelesen, dass CPOL gesetzt sein muss und habs übernommen ohne ins Datenblatt des Mega 8 zu schauen.

Hab mir ein Testprogramm geschrieben in dem ich die Signale "Manuell" schalte und hatte dabei vorerst auch nicht den erwünschten Erfolg. Bis ich zufällig an den Leitungen auf dem Breadboard gewackelt habe. Also Leitungen nochmal neu gesteckt und siehe da es funktioniert. Auch mein SPI läuft nun mit diesem Prog.
Code:
//*****************************************************************************
//*  ATmega8 @ 8 MHz interner OC
//*  LED Ansteuerung für Skorpion LED Bild mit Sternen
//*     34 Reihen a 5 Low Current LEDs Grün   
//*  12 Reihen a 5 Ultrahelle LEDs 3mm(Rot Gelb) 5mm (Weiß Blau)
//*  Anteuerung der LEDs über 74HC595 und UDN2981A    
//**************************************************************************
  
#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>

void my_delay(uint16_t milliseconds) {
    for(; milliseconds>0; milliseconds--) 
    _delay_ms(1);
}
 
void SPI_MasterInit(void)
{
/* Set MOSI, SCK and SS output, all others input */
DDRB = (1<<DDB3)|(1<<DDB5)|(1<<DDB2);
DDRB &= ~(1<<DDB4);
/* Enable SPI, Master */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}

void SPI_MasterTransmit(uint8_t cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
return SPDR;
}

int main(void)
{
    SPI_MasterInit();
    
while(1) 
    {
        SPI_MasterTransmit(0b11111111);
        PORTB |=(1<<PB2);
        PORTB &= ~(1<<PB2);
        my_delay(2000);
        
        SPI_MasterTransmit(0b10101010);
        PORTB |=(1<<PB2);
        PORTB &= ~(1<<PB2);        
        my_delay(2000);
        
        SPI_MasterTransmit(0b01010101);
        PORTB |=(1<<PB2);
        PORTB &= ~(1<<PB2);
        my_delay(2000);
    }             

 
    return 0;
}
Ich habe versucht f/4 zu setzen, dann kommen aber nur wirre Daten am 74HC595 an. (Liegt wohl am Breadboard Versuchaufbau )