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

Ситуация прояснилась. Во всем виновато низкое быстродействие AVR, который работает как слэйв.
Частота кварца 4 МГц, а частота сигнала SCK ~ 78 кГц, получается ~ 51 командный цикл. И за это время обработчик прерывания должен сформировать новый байт на передачу
Объяснение притянуто за уши, поскольку после завершения обмена возникает ОДНО прерывание, которое может обрабатываться хоть до морковкина заговенья, причём здесь 51 МЦ? А после того, как прерывание обработано и запущена новая передача должно пройти 51*8=408 МЦ до нового прерывания. Вагон времени даже на си.
Цитата(Андрей К. Ф. @ May 26 2008, 06:23)

Значит придется пожертвовать преимуществом SPI - а именно одновременной передачей в обоих направлениях
Чепуха это всё, 78 кГц это черепашья скорость для спи, ничем не надо жертвовать. Вот
здесь обсуждалась передача на скорости Fclk/2, для вашего случая будет 2 МГц (ну или 1 МГц, если ведомое устройство). Обратите внимание на посты #19 и #28. Даже можно написать на си, но лучше приём-передачу оформить подпрограммой на ассемблере.