Ситуация прояснилась. Во всем виновато низкое быстродействие AVR, который работает как слэйв.
Частота кварца 4 МГц, а частота сигнала SCK ~ 78 кГц, получается ~ 51 командный цикл. И за это время обработчик прерывания должен сформировать новый байт на передачу.
Вот такой обработчик исправно выдает 0х55 на выход:
Код
#pragma vector=SPI_STC_vect
__interrupt void SPI_STC_vect_handler()
{
char in_byte;
SPDR = 0x55;
in_byte = SPDR;
}
Значит придется пожертвовать преимуществом SPI - а именно одновременной передачей в обоих направлениях.