Nie wiem kto programował, te funkcje dla Arduino, ale miał fantazję jak dla mnie. Skoro używamy 16-bitowy licznik i mamy zegar 16MHz, to dzielimy sobie to przez 64000, pomijam już preskaler, bo nie pamiętam jakie on tam miał ustawienia, i otrzymujemy bardzo wygodne 250 przerwań/ sek. Dla czego wygodne? Bo to wygodna wartość do odświeżania wyświetlaczy LED, aby nie migotały. Dla 8MHz dostaniemy 125Hz. Obie te wartości, są bardzo wygodne w tworzeniu różnych systemów, nie mówiąc że to wręcz "Historyczny standard", jeszcze z 8051,a pamiętajmy że pierwsze AVRy powstały właśnie aby zastąpić 51 pin to pin, i zaoferować większa wydajność.
Kolejny plus takiego podejścia, to fakt że niedokładność pomiaru, wynika tylko z niedokładności oscylatora taktującego MPU.
Powyższe wyjaśnienia kolegi, to dla mnie tylko dowód jak standardowe funkcje zaimplementowane w Arduino, niszczą wydajność i jakość tej platformy, w sumie nie wiadomo po co?
Reasumując. Jeżeli chcemy pisać dobre systemy wielozadaniowe, nie unikniemy implementacji własnych, zoptymalizowanych funkcji, wykorzystujące optymalnie zasoby sprzętowe i programowe. Nawet na upartego precyzyjne odmierzenie jest do zrealizowania na 8-bitowym liczniku 0, bo damy preskaler 64 i liczymy do 100 i uzyskujemy 64000 impulsy zegara, do przepełnienia. Jak widać można to optymalizować, praktycznie na dowolnym liczniku.