> ну плохо вы справились и не с той проблемой...
У меня LPC1788 мастер, читает 46 байт из LPC1768 слейв.
LPC1768 читает два ЦАПа, обрабатывает данные, как только собирается 10 результатов, выдаёт импульс в порт на линию связи. LPC1788 при появлении на этой линии заднего фронта читает 46 байт.
Проблема была в том, что после резета мастер мог прочитать не все данные из слейва и в результате при последующих чтениях порядок байт был смещённым. Прична - оставшиеся в фифо слейва несчитанные мастером байты.
Код, который я привёл, вызывается в LPC1768 перед тем как выдать импульс готовности данных для LPC1788. Этот код великолепно работает, делая именно то, что нужно. Простите, что неправильно Вас понял, я решил было, что у Вас такая же проблема.
>читая из регистра данных вы вычитываете входные данные а не выходные - это первая ошибка
- чушь!
>while(1) - это вторая ошибка
- не ошибка, а просто не очень красиво. Придирка!
>делать такое для SSP-slave - третья ошибка
- чушь!
>не утруждать себя попытками понимания задачи - четвертая ошибка
- Прежде, чем такое писать, иногда проще попробовать, это не займёт много времени.
Ну хорошо, красивей будет так:
void clear_buffer_ssp0 (void)
{
volatile uint8_t Dummy;
while (!(LPC_SSP0->SR & SSP_SR_TFE))
Dummy = LPC_SSP0->DR;
}
Оговорился, LPC1768 читает два АЦП.
Почему я не могу отредактировать свой пост?