Hallo,
ich habe mal wieder angefangen mich mit uC Programmierung zu beschäftigen. Am Ende will ich über mehrere 74HC595 über UDN2981 Ein LED bild ansteuern.

Leider hackt es mal wieder bei der Programmierung. Versuche nun schon seit Tagen das SPI im Atmega 8 zum laufen zu bekommen, leider ohne erfolg.
Im Netz stoße ich bei meiner Suche immer nur auf Bascom oder ASM.

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
//*  UDN2981 VSS 12V
//*                  
//**************************************************************************
 
#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>

uint16_t i; 

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

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(0xFF);
        PORTB |=(1<<PB2);
        my_delay(10);
        PORTB &= ~(1<<PB2);
        my_delay(2000);
        SPI_MasterTransmit(0xAA);
        PORTB |=(1<<PB2);
        my_delay(10);
        PORTB &= ~(1<<PB2);        
        my_delay(2000);
        SPI_MasterTransmit(0x55);
        PORTB |=(1<<PB2);
        my_delay(10);
        PORTB &= ~(1<<PB2);
        my_delay(2000);
    }             

 
    return 0;
}
Wenn ich diesen Code in der Simulation des AVR Studio 5 laufen lasse, wird kein Wert in SPDR übernommen????
Flashe ich den Code auf meinen Mega8 und lasse ihn in meiner Testschaltung auf den Breadboard laufen lasse tut sich auch NICHTS.
Ich habe zur Kontolle des RCK an PB2 eine LED angeschlossen. Diese Leuchtet dauerhaft schwach.
Wenn ich mich nicht irre sollte diese nach der übertragung für die jeweilige Anzeigedauer des Musters aus sein???

Ich weis nicht mehr weiter ich bin für jede Hilfe dankbar.

MfG G3tzR@zor