ddt4 = dt4 - dt3; - Тук се прави някакъв графичен опит за решавване, който не е коректен.
dt - време
ddt - скорост
dddt - ускорение
От тук горното твърдение, че скоростта е разлика на две времена издиша...
Затова не работи алгоритъма.
------------------------------------------------------
Относно таймеррите...
Предполагам си разгледал ПДФ-а който качих - там концепцията е двата таймера да се редуват на четен, нечетен оборот, а третия да мери оборотите.
При мен единия брои оборотите и времената, втория задава времето за зареждане, третия времето за "почивка" на бобината.
При Румен вероятно е различно, тъй като няма как с 3 таймера да управлява 4 канала.
По всяка вероятност с единия брои оборотите(при него е по точно защото това става на половин оборот при 2 канала) а с останалите два прави това което аз правя, но ги пуска по различен начин, така че да не се застъпват.
При теб как е?
Твоя процесор е бърз и прекъсванията сигурно не са му проблем, но винаги може да се оптимизира кода.