Проблема есть.
Включаем прерывание на получение символа и ошибку CRC.
Читаем регистр н3 с информацией о приеме символа. Если в этом регистре установлены соответствующие битики, читаем что пришло и снова включаем прием.
Все почти работает -- иногда он "забывает" выставить прерывание. Такое ощущение, что где-то в другом месте читается этот регистр и сбрасывает битики.
Конечно, как только теряется одно прерывание то микросхему я не перевожу в прием. Дальше связи разумеется нет, прерывание не выставляется так как прием выключен.
Я пробовал включить прием всегда, но тогда этот принятый символ не вычитывается из буффера и по новому принятому вычитывается старый байт.
Я пробовал читать из буфера до тех пор, пока буфер не пуст, но тут еще страннее, микросхема иногда "забывает" что я прочитал фифо, считает что он не пуст, и получается бесконечный цикл по прочитыванию последнего байта из фифо.
Вобщем я не понимаю как правильно сделать ей цикл приема.