Я бы даже сказал, что сброс DMA после передачи каждого пакета вредит. Если убрать сброс, то при первом включении посылки идут нормально. Потом, если мастер отрубается, все включается вновь, но криво. Чтобы побороться с кривизной поставил сторожевой таймер, с частотой чуть меньшей, чем частота посылок. В прерывании по приему посылки от DMA таймер сбрасывается, если приема нет, срабатывает прерывание от таймра, в котором сбрасывается DMA. Результат достаточно скромный в 7 из 10 случаев отрубания мастера и срабатывания таймера имеется сдвиг на байт.
|