Witam, stworzyłem program do obsługi serw, poprzez programowy PWM, jednak coś nie chcę działać tak jakbym tego oczekiwał. Serwo próbuje się obrócić jednak tylko drży i tyle.
Jeżeli mógłby ktoś zobaczyć gdzie popełniłem błąd byłbym wdzięczny.Wydaje mi się że dobrze policzyłem czas przerwania jednak wiadomo każdy może się pomylić

Używam attiny2313 taktowany zegarem 8MHz
Przesyłam kod:
plik serwo.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
plik serwo.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
plik main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście przesłany tu program to jedynie uproszczona część obsługująca serwo, poza tym wykorzystuje usart i wyświetlacz LCD. Jednak pozostałe rzeczy działają prawidłowo.
Obliczenia czasu:
F_CPU = 8000000, preskaler = 8, TCNTO = 256-156 = 100
8000000/8/100=10000MHz
1/10000 = 0,1ms co tyle zwiekszam licznik cnt, wiec w momencie gdy licznik wyniesie 10 minie czas 1ms
dla cnt = 200 minie czas 20ms i proces zaczyna sie na nowo
PROSZĘ POPRAWNIE WKLEJAĆ LISTINGI PROGRAMÓW -- >> topic7402.html
---> SunRiver