Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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 🙂

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.

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.

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;

Wolałbym na 3 piny. Podanie takich samych wartości nie powoduje niestety tego ze wykonują się w jednym czasie

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.

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...