Цитата(IgorKossak @ Sep 7 2005, 11:15)
SPI хорош для скоростной коммуникации МК с неМК, например с EEPROM, DataFlash, ADC, DAC, ets... т. к. мастер принудительно выгребает данные у слейва вне зависимости от их готовности. Приходится в этом случае изощряться с дополнительными сигналами для квитирования.
Для межпроцессорного взаимодействия в этом случае более подходят UART (USART), I2C, 1Wire.
Кстати, реализация MODBUS возможна на любом из этих интерфейсов.
В принципе не очень понятно, чем с точки зрения SPI, отличается микроконтроллер в режиме слэйв от например ADC. В любом случае - придется делать полинг готовности устройства: просто в первом случае будем принимать тот же байт, что и посылаем, а во втором ожидать в принятом байте условия конца преобразования.
Чтобы определить начало кадра от слэйва достаточно, например, чтобы символы синхронизации в режиме слэйв и в режиме мастер отличались.
Я конечно согласен, что в SPI AVR нет FIFO, но обмен между процессорами сделать можно (и делают.)
А вообще вопрос не правильно поставлен, хотябы потому что неизвестны ни характер данных, ни размер пакетов, ни требуемая пропускная способность интерфейса, уже не говоря о ресурсах используемых микроконтроллеров.
В т.ч. непонятно, достаточно ли будет полудуплексного протокола или нужен дуплекс (тогда например I2C и 1Wire не применимы в принципе).
Хотя бы для начала с этим бы определиться.