А не сбрасывает ли кто SPE случайно? Может просто ноль в SPCR пишет?
Цитата(Alex Truhin @ Oct 7 2010, 14:33)

static uint8_t DF_SPI_RW( uint8_t tx )
{
uint8_t rx;
SPDR = tx;
while(!(SPSR & 0x80));
rx = SPDR;
return rx;
}
Немного позанудствую: а так не проще?
uint8_t DF_SPI_RW( uint8_t tx )
{
SPDR = tx;
while(!(SPSR & (1<<SPIE))) {}
return SPDR;
}