Дык дело ж не в этом, я просто несколько удивлен, как можно на с написать код с джиттером меньше двух тактов.
Ну это другое дело, я думал вы сами писали, а использовать библиотеку- это совсем не то же самое, что написать код на С. Или вы честно писали сами код ? Функция библиотеки скорее всего была написана на асме, с запретом прерываний и все как положено. UART на 2,5 М не бывает поскольку модуль Uart тактуется сигналом от кварца с минимальным делителем 16. Кто это выяснил? Через spi криво получается, тайминги на лимите, чуть что или побольше бинов - и ёк.