Sprawa faktycznie nie jest prosta, a temu zagadnieniu poświęcony jest podrozdział "Opóźnienia i XMEGA" książki Tomasza Francuz "AVR. Układy peryferyjne". Przytoczę teraz fragment kodu, który pośrednio rozwiązuje problem, jednak autor go nie zaleca.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oba opóźnienia wyniosą 100ms, jednak nie wpływa to na pozostałe pliki projektu, a więc wartość stałej F_CPU dla tych plików będzie w dalszym ciągu równa 2000000 (wartość z Makefile).
Podsumowując zalecane jest używanie jedynie definicji F_PCU w pliku Makefile (właściwości projektu) i odpowiednie przeliczanie wartości przy zmianie taktowania. Po tej modyfikacji można ustawić odpowiednią wartość zmiennej globalnej (dla PHP powiedziałbym nawet superglobalnej

, dla C trzeba będzie stosować "extern") i później na podstawie tej wartości pozostałe funkcje będą wiedziały jak przeliczać swoje parametry/ustawienia.
Zaznaczam iż jest to sposób dość kulawy...