вопрос в следующем. мне надо сделать максимально быструй обмен по SPI. при тактовой 8 МГц я его настраиваю на скорость 8/2=4МГц тактовая по SPI. Судя по доке я должен затратить при передаче 1 байта 1/(4*8)=2 мксек. Однако получается где-то 5 мксек. это видно и по осциллу - там видно, что байт передаётся за 2 мксек + промежуток между передачами байтов 3 мксек. и по AVRSTUDIO тоже это видно. там перед передачей следующего байта прога стоит ждёт установки бита SPIF в SPSR где-то эти же 3 мксек. не могу понять откуда эта задержка берётся и как от неё избавиться. вот по этим макросам передаётся каждый байт: #define SPI_WAIT() \ do { \ while (!(SPSR & (1 << SPIF))); \ } while (0)
#define SPI_TX(x) \ do { \ EM_WAIT(); \ SPDR = x; \ } while (0)