Цитата(garbuz @ Oct 15 2008, 10:13)

Скорей всего тут ситуация как с регистром данных UART - их РЕАЛЬНО два !
Цитата(Stanislav_S @ Oct 15 2008, 10:19)

Регистр действительно один, но данные заходят с другой стороны, посему следует их забирать после окончания передачи кроме того для чтения присутствует буфер.
В документации об этом написано смутно... Предполагаю, что в действительности в SPI два регистра с одним и тем же адресом: по записи в него - данные попадают в сдвиговый регистр и передаются, принятые данные из сдвигового регистра попадают в буферный регистр, откуда читаются командой чтения регистра SPDR. Однако, это - следует проверить в эксперименте...
По поводу Ваших вопросов:
1. Приемник и передатчик работают строго одновременно, поэтому окончание приема = окончанию передачи.
2. Если верно моё предположение, изложенное выше, при чтении регистра данных при незавершенном приёме - прочитаете предыдущий байт.
3. Что будет, если в момент обмена записать байт - в документации не оговорено. Следует проверить экспериментально.
4. Мастер закончит приём от Slave, когда закончит свою передачу (см. 1). Если Slave - не положил ничего в регистр для передачи - попавший в регистр сдвига байт от мастера при предыдущем приёме - уйдёт от Slave мастеру.
5. Что-то, хотя бы элементарное, но придумывать прийтется...
6. Этот интерфейс - для устройств, расположенных на одной плате, или на соседних.