Нужно принимать периодически некоторые сообщения по UART на MSP430F5418. Раньше использовал для этого дела работу по прерываниям (в то время как передачу (основной поток) делал через ДМА). Теперь по определенным причинам (уменьшить частоту включения обработчиков прерываний) решил и входной поток через ДМА пустить. Все получилось просто замечательно (как минимум 25кБит/с принимал и одновременно ~40 кБит/с отдавал), но уже все сделав и выпив за это

Код
UCCTL1 |= UCBRKIE;
И в обработчике прерываний ловил флаг
Код
if (UCSTAT & UCBRK)
При работе с ДМА проблема в том, что этот флаг UCBRK обнуляется при чтении регистра RXBUF!!! Ну почему, блин, именно RXBUFF а не UCSTAT хотя бы!!! Соответственно при приеме данных через ДМА пачками, скажем по 20 байт, обнаружить Break не представляется возможным, флаг сбрасывается тут же, так как ДМА читает RXBUF.
Собственно я уже на 99% процентов уверен, что затратив два дня на реализацию и отладку приема по ДМА, мне придется отказаться от этой идеи, так как я не могу избежать требования по приему Break. Но может быть кто-нибудь перевернет мое сознание и скажет, что не все еще потеряно и проблему можно как-то решить?
Спасибо.