[uquote="dosikus",url="/forum/viewtopic.php?p=3416916#p3416916"]
V2oD2o , покажите полносттю обработчик прерывания таймера.
Особенно интересует сброс флага...[/uquote]
Там все в порядке, проект рабочий, после доработок, не сразу, но было замечено увеличение времени отсчета по таймеру примерно х1.8 - х2, т.е. событие по 10мс, выполнялось в 18.5064мс
Добавлено after 7 minutes 45 seconds:
[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3416741#p3416741"][uquote="V2oD2o",url="/forum/viewtopic.php?p=3416714#p3416714"]тип данных uint16_t или 32_t - ситуация одинаковая[/uquote]
В многострочном варианте промежуточный результат явно приводится к типу присваиваемых переменных, в однострочном - нет. Проверьте, интересу ради, вариант a = (uint_16t)(((uint_16t)(b * 10) + (uint_16t)(c / 60)) - 1) * 5; Кроме того, теоретически, операции "перемножение" и "домножение" имеют разное количество аргументов - и компилятор вполне может решить пользоваться разными инструкциями буде такие в его распоряжении на рассматриваемой платформе. А сгенерированный ASM код наверняка неидентичен - может туда глянуть?

[/uquote]
"Дело было не в бобине" - и действительно, приведение к типам дало прирост, очень ощутимый, было 18мс вместо 10мс, перевёл все расчеты на u32_t (в 16 не влезу) - стало 13.3мс, добавил -O3 - и увидел заветные 10мс, пробовал нагрузить еще всякими вычислениями, даже гораздо более сложными и считать их каждый тик, а не по событию - проблема решилась, каждый тик ровно 5.000 мкс, спасибо за наводку!
Что интересно -Ох без использования однотипных данных - почти ничего не давало