Цитата(Андрей К. Ф. @ May 23 2008, 12:48)

В итоге все ВХОДЯЩИЕ байты принимаются на ура. Но передает SPI (по линии MISO) не то, что я ему говорю, а то что в него пришло от мастера в прошлом цикле передачи (проверял осциллографом)
Данные на передачу вам надо записывать в регистр SPDR
ДО чтения пришедших данных (и в вашем случае, как можно быстрее, пока новая передача не началась, поскольку нет двойной буферизации, как на приём), т.е. примерно так
Код
__interrupt void SPI_STC_vect_handler()
{
char in_byte;
SPDR = param.bt[0];
...
in_byte = SPDR;
....
}
Цитата
When configured as a Slave, the SPI interface will remain sleeping with MISO tri-stated as long
as the SS pin is driven high. In this state, software may update the contents of the SPI Data
Register, SPDR,
but the data will not be shifted out by incoming clock pulses on the SCK pin
until the SS pin is driven low. As one byte has been completely shifted, the end of Transmission
Flag, SPIF is set. If the SPI Interrupt Enable bit, SPIE, in the SPCR Register is set, an interrupt
is requested. The Slave may continue to place new data to be sent into SPDR
before reading
the incoming data. The last incoming byte will be kept in the Buffer Register for later use.