Цитата(_Артём_ @ May 9 2012, 01:23)

Почему не использовать, если скорость позволяет (F_CPU/4 - максимум)?
Нужно задействовать прерывания от SPI:
первое прерывание по переходу SS в 0, затем по окончании передачи байта.
Чему тут тормозить:
Код
#pragma vector=SPI_STC_vect
__interrupt void SpiComplete()
{
SPDR=*TxData++;
*RxData++=SPDR;
}
?
Тормозить будет если поступают прерывания также и из других источников. Если прерывание от SPI придёт во время того как обрабатывается другое прерывание, то выполнить SPDR=*TxData++; вовремя она может и не успеть.
Цитата(_Артём_ @ May 9 2012, 01:23)

Там кроме даташита есть ещё и апнота с примерами кода в master и slave-режиме (AVR1309: Using the XMEGA SPI).
Спасибо, посмотрел, в xmega это устроено так же как и в простой mega - двойного буфера нет. Может быть только можно с DMA сделать.
Цитата(zombi @ May 9 2012, 12:01)

Чтоб без пауз, думаю, нужна xmega, USART в режиме мастер SPI и DMA.
Речь идёт про slave. USART в режиме slave SPI не умеет работать.
Так что во избежание, видимо лучше сразу иметь в виду какой-нибудь ARM для такого применения.