Witam,
od kilku dni próbuję wygrać nierówną walkę z programowym pwm i usartem na atmedze8. Wysyłam z nadajnika dane za pomocą USART (sprawdzane wielokrotnie na bank są dobre) do płytki z atmegą i serwomechanizmem. Jeżeli serwo jest sterowane bez ingerencji danych z USART to wszystko działa jak trzeba, w momencie gdy chcę wysłać gotowe dane do płytki serwomechanizm zaczyna wariować (drży jakby coś blokowało jego ruch). Myślę, że nie ma potrzeby załączania schematu ponieważ linia sterująca serwem to po prostu PIND3.
Jako podstawę czasu przyjąłem 80kHz a częstotliwość pwm dla serwa to ok 50Hz. Dane z USART atmega otrzymuje z częstotliwością 60Hz-2kHz (dla tego przedziału zachowanie jest dokładnie takie samo). Prosiłbym o zajrzenie do kodu, mam nadzieję, że coś mi umknęło w samym kodzie a samemu już ciężko wyciągnąć mi coś konstruktywnego z gapienia się nań.
Na końcu każdego przesłanego pakietu obecny jest znacznik CR. Dane odbierane należą do przedziału {0, ... 80}. Każdorazowo po nawiązaniu połączenia efektem jest widoczne drżenie serwa jak już wcześniej wspomniałem.
od kilku dni próbuję wygrać nierówną walkę z programowym pwm i usartem na atmedze8. Wysyłam z nadajnika dane za pomocą USART (sprawdzane wielokrotnie na bank są dobre) do płytki z atmegą i serwomechanizmem. Jeżeli serwo jest sterowane bez ingerencji danych z USART to wszystko działa jak trzeba, w momencie gdy chcę wysłać gotowe dane do płytki serwomechanizm zaczyna wariować (drży jakby coś blokowało jego ruch). Myślę, że nie ma potrzeby załączania schematu ponieważ linia sterująca serwem to po prostu PIND3.
Jako podstawę czasu przyjąłem 80kHz a częstotliwość pwm dla serwa to ok 50Hz. Dane z USART atmega otrzymuje z częstotliwością 60Hz-2kHz (dla tego przedziału zachowanie jest dokładnie takie samo). Prosiłbym o zajrzenie do kodu, mam nadzieję, że coś mi umknęło w samym kodzie a samemu już ciężko wyciągnąć mi coś konstruktywnego z gapienia się nań.
Kod: C / C++
Na końcu każdego przesłanego pakietu obecny jest znacznik CR. Dane odbierane należą do przedziału {0, ... 80}. Każdorazowo po nawiązaniu połączenia efektem jest widoczne drżenie serwa jak już wcześniej wspomniałem.