@2garri, Вы бы шли по шагам, а не сваливали всё в кучу! В обработчике прерывания Вы используете вычисления float, причём аж три штуки! Это ОЧЕНЬ затратная операция для микропроцессора, в зависимости от обстановки - в 200-600 раз медленнее обычного сложения. А Вы её вызываете до 4000 раз в секунду (максимально) - зачем????, а потом ещё вычисления в map зачем-то в float проводите... Немудрено, что у Вас микропроцессор не успевает добраться до вывода в ленту, а когда доберётся - постоянно прерывается на несколько миллисекунд прерываниями.