Цитата(rezident @ Jan 24 2009, 22:19)

CS дергается программно и я заранее не знаю, может он только что предыдущую запись окончил. А если вдруг тактирование SPI от часового кварца?

Конечно же тогда буфер будет не готов. В общем проверка вовсе не лишняя.
Недопонял. Если буфер не готов - идет передача. А мы в это время дергаем CS. Ведомый начнет принимать мусор. Почему просто не ждать готовности
до дерганья CS?
Цитата(rezident @ Jan 24 2009, 22:19)

Отнюдь! Это может случиться лишь в том случае, если частота тактирования модуля USART по крайней мере в 8 раз выше MCLK. Очистка флага занимает 5 тактов MCLK, а передача байта не менее 16 тактов,
Между отгрузкой байта в буфер и очисткой флага может быть вызван обработчик прерывания, который может длиться гораздо дольше передачи байта. Выходит, чистить флаг надо перед каждой передачей, и ждать его после каждой передачи. Да, прелести двойного буферирования не используются, но альтернатива - только запрещать прерывания.
Цитата(rezident @ Jan 24 2009, 22:19)

Если же будет соотношение частот другое, то мы можем нарваться на тот факт, что мы очистим флаг готовности приемика, но он будет установлен после приема первого байта. А нас-то интересует флаг готовности именно после приема второго байта!
О!
Цитата(rezident @ Jan 24 2009, 22:19)

Кстати, ты не забыл что в MSP430 SPI 8-ми битный, а не произвольной разрядности как в LPC2000?

Нет, не забыл. А вот с LPC - по принципу "пустил-забыл". Написал года два назад кусок, он работает и что там творится - уже не помню.
Цитата(rezident @ Jan 24 2009, 22:19)

В общем я бы наверное предпочел использовать прерывания. Там все более определенно. Возникло прерывание от приемника - значит очередная транзакция завершена.
Тот же фиг - анализируется каждое срабатывание.
Есть альтернатива - если скорость передачи достаточно высока по сравнению с ядром, то флаг можно вообще не анализировать, а просто вставить нужное количество nop-ов после записи. На высоких скоростях это будет даже эффективнее, учитывая накладные на вход в прерывание и выход из него. При максимальной скорости SPI и ядра, учитывая еще время на подготовку очередных данных к отправке, там может получиться всего два-три nop-а. Я так делал на меге, 4 nop-а были выгоднее и по скорости и по размеру кода.