Witam.
Tworzę sobie programik do sterowania 16 serwami. wykorzystuję 2 timery
timer2 generuje przez przerwanie odstępy 2.2ms. każdy impuls to obsługa 2 serwów, więc aby odsłużyć wszystkie mamy 8 impulsów(18.4ms) więc impulsy na serwo powtarzają się częściej niż te 20ms. więc tu jest dobrze.
Timer 2 steruje timerem1, blok A obsługuje pierwszą 8 serw, a blok B drugą 8 serw.
Mam taki kod i on dział dobrze.
o co chodzi? a no o ten kawałek
on zabiera cały czas procesora, było by ok gdyby było tylko generowanie przebiegów dla serw, ale ten procek jeszcze coś innego musi robić
więc wymyśliłem taki kod
i co jest, niby generuje przebiegi ale ma o innym wypełnieniu do tego niektóre się zmieniają jak inna ilość serw ma generowany sygnał.
Wie ktoś jak rozwiązać ten problem, bo mnie zaczyna przerastać.
Chcę po prostu pozbyć się tej pętli i robić to w przerwaniu.
Wtedy zostaje w głównej pętli więcej czasu aby coś tam zrobić zależności czasowe dla 1 kodu
zależności czasowe dla 2 kodu żółty jakoś 200us

Tworzę sobie programik do sterowania 16 serwami. wykorzystuję 2 timery
timer2 generuje przez przerwanie odstępy 2.2ms. każdy impuls to obsługa 2 serwów, więc aby odsłużyć wszystkie mamy 8 impulsów(18.4ms) więc impulsy na serwo powtarzają się częściej niż te 20ms. więc tu jest dobrze.
Timer 2 steruje timerem1, blok A obsługuje pierwszą 8 serw, a blok B drugą 8 serw.
Mam taki kod i on dział dobrze.
Kod: C / C++
o co chodzi? a no o ten kawałek
while(bit_is_clear(TIFR,OCF1A))
{//i tu jest pies pogrzebany
}
on zabiera cały czas procesora, było by ok gdyby było tylko generowanie przebiegów dla serw, ale ten procek jeszcze coś innego musi robić
więc wymyśliłem taki kod
Kod: C / C++
i co jest, niby generuje przebiegi ale ma o innym wypełnieniu do tego niektóre się zmieniają jak inna ilość serw ma generowany sygnał.
Wie ktoś jak rozwiązać ten problem, bo mnie zaczyna przerastać.
Chcę po prostu pozbyć się tej pętli i robić to w przerwaniu.
Wtedy zostaje w głównej pętli więcej czasu aby coś tam zrobić zależności czasowe dla 1 kodu
zależności czasowe dla 2 kodu żółty jakoś 200us

