Цитата(Metallist64 @ Oct 15 2008, 13:21)

НО как определить слейву когда можно выставлять свой байт, ведь во время выставления может начаться передача и тогда со slave придет мусор. Или мастер все-таки подождет пока slave выставит свой байт? Помогите, никак не могу понять данный вопрос.
Когда я говорил выше: нужно придумать протокол обмена - имелось в виду, что Вы и определитесь: как Ваши устройства будут обмениваться информацией... Когда слейву выставлять и какие данные для передачи и должно быть определено в протоколе. Послольку, всем рулит мастер - инициатива обмена байтами по SPI будет исходить только от него. Может быть, Вам посмотреть для примера на что-нибудь из памяти с интерфейсом SPI? Скорость "работы" с SPI должна быть выше у слейва по сравнению с мастером (возможно, на мастере нужно предусмотреть задержки, для того, чтобы слейв успел положить нужный байт в регистр данных). Если слейв - не успел положить данные до обмена байтов с мастером - мастер может это узнать по принятому байту (он тот же, что и был передан мастером при предыдущем обмене байтами), слейв узнает это (что не успел положить) по биту WCOL... В протоколе д.б. предусмотрено: как этого по-возможности избежать и что делать, если это все-таки случилось.
P.S. Кстати, программирование по SPI AVR, которое описано в DS - можно взять как пример, и, переработав под свои нужды, придумать свой протокол...