По поводу DMX еще одно дополнение. Отчасти проблема с формированием RXBRK была рассмотрена здесь:
Странности Usart0 в at91rm9200.
Но ситуация еще интереснее. Читаем Errata:
When timeguard is 0, RXBRK is not set when the break character is located just after the Stop
bit. FRAME (Frame Error) is set instead.
Problem Fix/Workaround
Timeguard should be > 0.
Смею утверждать, что это относится к внешнему устройству, которое должно вставлять свой таймгард перед break. Явно в этом абзаце это не прописано. Надо было написать так:
Если внешнее устройство шлет break сразу после стоп-бита предыдущего слова, RXBRK не выставляется. Такая ситуация возникла, я об нее споткнулся, докопался до errata, включил timeguard. 1, 2, 3, 4... не помогает. Все равно детектирует FRAME. Думаю, ну каким боком модуль передатчика влияет на приемник? Снял DMX тестер, хороший тестер, Artistic Licence, но он шлет break сразу после завершения предыдущего кадра. Поставил свое устройство с небольшой задержкой перед посылкой break нового кадра и все стало нормально.
То есть, надо проверять, есть ли RXBRK или есть ли FRAME и при этом данные в регистре приемника равны нулю...