Skocz do zawartości

[C] STM32F4 Discovery HAL - 3 serwa wykonujące ruch jednocześnie.


Atom

Pomocna odpowiedź

Cześć!

Zacząłem się bawić płytką z kursu STM32 na bibliotekach HAL.

Moim zamysłem jest wysterowanie 3 serw TowerPro995 by wykonywały dokładnie taki sam ruch w jednym czasie. Wielowątkowość odpada jak w większości mikrokontrolerów.

Serwo zostało wysterowane w taki sposób, po wcześniejszych przeskalowaniach timerów:

HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1);
         TIM4->CCR1=800;
  HAL_Delay(1000);
  TIM4->CCR1=1900;
  HAL_Delay(1000);

Nie są to jakieś dokładne wyliczenia, tylko na razie tak poglądowo chciałem to zrobić.

Macie jakieś pomysły?

Pozdrawiam Was 🙂

Link do komentarza
Share on other sites

Co to znaczy " płytka STM32F407G nie obsługuje tego"? Płytka ma (całkiem fajny) procesor, który co prawda nie ma sprzętowej wielowątkowości, ale wykonuje taki program jaki napiszesz. Jeśli weźmiesz gotowy lub samodzielnie wysilisz się na system wielowątkowy - to tak będzie. Jak nie, to nie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

W sumie stwierdzenie, że "wielowątkowość odpada" ma sens - po prostu nie jest potrzebna.

Inna sprawa, że wielowątkowość w przypadku mikrokontrolerów działa całkiem dobrze. Nawet na Arduino można uruchomić FreeRTOS i cieszyć się wielowątkowością.

Atom, nie wiem gdzie wyczytałeś cytowane stwierdzenie, ale powinieneś bardziej uważać na dobór źródeł informacji.

Link do komentarza
Share on other sites

Zakładając, że te serwa działają tak samo, to możesz po prostu podpiąć je wszystkie do jednego pinu. Jeśli wygodniej jednak będzie podłączyć do 3 osobnych pinów, to po prostu wpisz sobie taką samą wartość do każdego z kanałów:

TIM4->CCR1=800;
TIM4->CCR2=800;
TIM4->CCR3=800;
Link do komentarza
Share on other sites

Powoduje. Różnica jest niedostrzegalna gołym okiem -- wszystkie praktycznie w tym samym momencie rozpoczną ruch do zadanego położenia. Oczywiście jeśli są różne, różnie zasilane, etc. to ten ruch nie będzie identyczny i zapewne nie osiągną tego położenia jednocześnie, ale wielowątkowość nic ci tu nie pomoże.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.