Timer programowy
Timer wyprowadzany przez jądro RTOS z taktu systemowego, a nie z osobnego rejestru sprzętowego, więc można ich mieć tyle, na ile starczy pamięci.
Mikrokontroler ma może cztery lub osiem timerów sprzętowych, a większość z nich jest już zajęta przez PWM, próbkowanie ADC i samo przerwanie taktu. Timery programowe omijają ten niedobór: trzymają posortowaną listę czasów wygaśnięcia i porównują ją z licznikiem taktów. Gdy któryś wygasa, uruchamiany jest callback – jednorazowo (one-shot) lub cyklicznie (auto-reload).
W FreeRTOS każdy callback działa w jednym dedykowanym zadaniu, zadaniu usługi timerów, zasilanym przez kolejkę poleceń. Dzięki temu timery można bezpiecznie startować z przerwań, ale jest haczyk: jeden blokujący callback zatrzymuje wszystkie pozostałe timery w systemie. Rozdzielczość nigdy nie jest też lepsza niż jeden takt, więc wszystko, co wymaga mikrosekund, wraca do sprzętu.