не совсем так, данные идут непостоянно, прерывания приходят с частотой около 1 кгц. Там всего 14 байт, это 22,5*14=315мкс, т.е. 1/3 от периода. Остаётся 600мкс, в них нужно и поместиться.
Не совсем так:
Вы не посчитали 5 байтов заголовка перед данными (и где-то 5мкс на два старта);
пока один байт обрабатывается по i2c идёт следующий, если обработка менее 22мкс, то тормозов не будет и фактически обработка времени занимать не будет (кроме последних двух байтов);
за 1мс можно переслать по i2c 44 байта, а используется лишь 19, менее 40%;
в оставшееся время (1000-19*22.5=570мкс) надо успеть их обработать, или в данном случае отослать по uart, на скорости 115200 и 8N1 это 87мкс на байт, 570мкс хватает всего на 6 байтов, а у вас 8 байтов шлётся, по идее буквально на грани работает (первый и два следующих байта улетают в буфер uart без ожидания).
Поставьте в прерывании установку на входе и сброс на выходе любого свободного выходного пина и посмотрите осциллографом и частоту прерываний и сколько времени оно занимает. Я всегда так делаю если есть подозрения или интерес.
А вот если отсылку по uart вынести из прерывания, то будет время 1000/87=11.5 байтов отослать. А тем более это можно делать в 512 раз реже, т.е. раз в полсекунды, вообще море времени. Но код сложнее, да.