Всем большое спасибо!!!
Похоже была ошибка в инициализации
Вот функции, которые точно работают (ATMEGA8):
Код
void InitSPI(void)
{
DDRB = (1<<PB3)|(1<<PB5) | (1<<PB2); // Set MOSI , SCK , and SS output
SPCR = ( (1<<SPE)|(1<<MSTR) | (1<<SPR1) |(1<<SPR0)); // Enable SPI, Master, set clock rate fck/128
}
void WriteByteSPI(unsigned char byte)
{
SPDR = byte; //Load byte to Data register
while(!(SPSR & (1<<SPIF))); // Wait for transmission complete
}
Причина редактирования: Оформление цитаты исходника.