Trochę rozdmuchany ten Twój problem. Funkcje wywoływane co interwał czasu (oparte na timerach) w bibliotekach powinny być implementowane w oparciu o przerwania czasowe. Czyli nie powinno w ogóle tam być mechanizmu zliczającego czas dopiero w zależności od zakończenia wykonania Twoich instrukcji (natomiast jak jest w praktyce...? Jeśli Twoje biblioteki są open-source, możesz pokusić się o sprawdzenie; jeśli nie są otwartoźródłowe, poszukaj w dokumentacji lub zapytaj twórców).
Poprawnie zaimplementowany mechanizm timerów to taki który dokładnie co zadany interwał ma wywoływać Twoją funkcję. Takie rozwiązanie jest niezależne od czasu wykonania Twojego kodu, bo przerwania są zdarzeniami zewnętrznymi w stosunku do programu.
Przy programowaniu mikrokontrolerów bardzo złą praktyką jest umieszczanie dużego bloku kodu w funkcji obsługi przerwania. Dla przerwań czasowych zazwyczaj cała funkcja to tylko inkrementacja zmiennej (co zajmuje jeden cykl procesora), zaś rzeczywiste operacje związane z tym interwałem realizowane są w torze głównym programu, w oparciu właśnie o tę inkrementowaną zmienną.
A z drugiej strony - jeśli chcesz mieć tylko dokładny czas, to nie kombinuj ze zliczaniem "ticków". Po prostu pobierz czas systemowy. I tu znów zależy jakich używasz bibliotek, ale sporo z nich posiada zaimplementowane funkcje do obsługi zegara systemowego - z różną dokładnością. Standard C++ jest całkiem rozbudowany w tej kwestii. Dokładniej nie będzie. :)