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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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