Отпишусь тут. Сегодня помучал SPI. Узнал много нового

Не ждать готовности SPI можно.
Код
void SpiMasterTx(uint8_t data)
{
do
{
SPDR = data;
}
while(SPSR & (1<<WCOL));
}
Такая конструкция оказалась вполне работоспособной. То что писал Maik-vs в 4 сообщении этой темы не подтвердилось - данные в SPDR не портятся. Симулятор студии и реальный осциллограф также это подтверждают.
Ждать приходится только при чтении:
Код
uint8_t SpiMasterTxRx(uint8_t data)
{
do
{
SPDR = data;
}
while(SPSR & (1<<WCOL));
while(!(SPSR & (1<<SPIF)));
return SPDR;
}
Оказывается WCOL очень полезный флаг....