Po pierwsze to nie zrozumiałeś może do końca - a przecież przytoczyłeś prawidłowy cytat z książki, przeanalizuj sobie jak to jest z tym 8-bitowym PWM'em bo popełniasz duży błąd w rozważaniach i w ogóle niepotrzebnie sięgasz po ten timer 16-bitowy.
pomyśl sobie co ci da to że przy F_CPU = 20MHz użyjesz timera1 i po przepełnieniu będziesz miał 305Hz ???
z tą częstotliwością 305Hz to ty dopiero będziesz miał przerwanie w którym masz zamiar inkrementować liczniki programowych PWM'ów .... to jak sobie to wyobrażasz - przecież nawet jak byś chciał zrobić 8-bitowy to:
305/8 = 38 !!!! i to jest dopiero odświeżanie !!!
a ty przecież chcesz zrobić 16-bitowy więc:
305/65536 = 0.0046Hz
co to jest ? coś tam będzie sobie pomigiwać
zacznij może od tyłu to będzie ci łatwiej - np ustalasz sobie że odświeżanie chcesz mieć powiedzmy 100Hz
więc 100 * 65536 = 6553600Hz (6,5MHz !!!!!!) taka musi być częstotliwość timera !!! ale i przerwania - a to już tak mało czasu na wykonanie przerwania będzie, że samo przerwanie będzie absolutnie spowalniać ci działanie nie tylko programu głównego ale będziesz wręcz gubił przerwania jeśli w tej procedurze będziesz nawet proste i niewiele operacji wykonywał. Efektem tego będzie jedno wielkie nieporozumienie niestety
zrób sobie 9- albo nawet 10-bitowy PWM programowy to ci jeszcze się uda żeby procek wydolił
dla 9-bitowego:
100 * 512 = 51200Hz (to i tak już bardzo krótki czas na przerwnia - policz sobie przerwanie musi się wykonać co ok 19us !!! no ale jeśli założyć że weźmiesz taktowanie 20MHz to jeden cykl/rozkaz wykona się w czasie 50ns - teraz zależy ile tych rozkazów będzie w przerwaniu - jeśli podzielisz:
19us / 50ns - to wyjdzie ci że masz 380 cykli pomiędzy przerwaniami. Jeśli zużyjesz kodu na połowę tego to jeszcze będzie jakoś całość działać
przy 10-bitowym będzie jeszcze gorzej
100 * 1024 = 102400Hz ....
czyli przerwanie co ok 9,7us !!!!!!!!!!!!!!
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]