Да, тяжко роботу даются аппаратнозависимые вещи. Я по пятому разу и
гроку и дипсику даю задачу, но косячат и всё! ... А код уже разросся, тяжело его анализировать... как там было у классика "работы делают роботов, и мы уже нихера этот процесс не понимаем".
Наконец сам нашёл где косяк. Работ видит в коде факт отправки и умывает руки ("я всё отправил, насяльника, переходим к следующим данным").
По факту же по УАРТу оно еще не успело уйти, надо ожидать окончания, и лишь тогда команду из очереди выкидывать, и переходить к следующей.
Хотя код отправки у него и был, и то что данные асинхронно через прерывания уходят - он озвучивал.. но вот не смог в кучку мысли собрать.