Moim celem jest sterowanie serwomechanizmem.
Procek atmega328
taktowanie 18,432MHz
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Gdzieś popełniam błąd bo okres mojego sygnału różni się od zakładaych 50Hz.
Teraz pokażę jak wykonałem obliczenia:
1. załozyłem że chcę mieć w przedziale od 1ms do 2ms ( skrajne położenia serwa ) 255 przerwań, po to aby móc wykorzystać zmienną 8bitową w całości
2. daje to 255 przerwań na 1ms czyli częstotliwość bicia timera musi wynosić 255000Hz
3. dzielę f_taktowania/255000 i wychodzi 72,28 -> 72
4. na początku obsługi przerwania wpisuję w tcnt 183
5. teraz tylko policzyć ile takich przerwań przypada na 20ms i gotowe
6. na nowo liczę rzeczywistą częstotliwość timera czyli f_takt./72 = 256000Hz
7. 20ms/okres_timera=5120
8. sprawdzałem na analizatorze stanów logicznych i nie działa tak jak zakładałem - częstotliwośc różni się o kilkanaście...
9. gdzie robię błąd ?