Musisz konkretniej napisać co robisz, jaką konfigurację PWMa używasz, po w ogóle co liczysz wypełnienie w ms (np w moim zastosowaniu sterowania silnikiem nie musiałem o tym myśleć, tylko o % wypełnienia).
Przy niektórych konfiguracjach to jest zwykła bezpośrednia matma, na przykład przy konfiguracji:
>Fast PWM mode, 8-bit
>Clear OC1A/OC1B on Compare Match, set OC1A/OC1B at BOTTOM, (non-inverting mode) (...) If TCNT equals OCR1x the comparator signals a match. A match will set the Output Compare Flag (OCF1x) at the next timer clock cycle.
>Timer clock: clk(I/O)/64 (From prescaler)
>F_CPU=1MHz
To licznik inkrementuje się o 1 co 64 mikrosekund. Więc ustawiając OCR1A na wartość X między 0 a 255 dostaję jednorazowe wypełnienie (X+1)*64 mikrosekund, a pełny cykl trwa 256*64==16.384 milisekundy. (ze sczególnym przypadkiem dla X==0: "the output will be a narrow spike for each TOP+1 timer clock cycle")
...przynajmniej tak na szybko mi wyszło z datasheeta i pamięci :) Nie jestem pewny tego (X+1) czy po prostu X.