[C] [STM32] [CoIDE] Generowanie sygnału kwadraturowego

0

Witam piszę tu post grzecznościowy z prośbą o pomoc teoretyczną (nie chce gotowego rozwiązania). Czy jakiś pasjonat programowania niskopoziomowego mógłby mi powiedzieć czego mogę użyć, aby generować sygnał kwadraturowy(sygnał prowadzony na dwóch kanałach przesunięty w fazie o 90 stopni) . Muszę go przyspieszać i hamować za pomocą USARTA z użyciem bufora kołowego i parsowaniem komend w terminalu (USARTA już mam, ale nie wiem za bardzo jakich komend mógłbym używać) . Czy ja mam to za pomocą PWM'a robić czy może innego trybu timera do generacji sygnału użyć i czy jakbym chciał zmienić kanał sygnału wyprzedzający w fazie drugi to jakbym mógł to zrobić ? Z góry dziękuję za teoretyczne wyjaśnienie.
title

0

Sprawdź manual swojego mikrokontrolera i zobacz czy jest możliwość wystawienia PWM bezpośrednio na któryś pin. Wtedy programowo ustawiasz tylko odpowiednie rejestry: tryb licznika, prescaler i okres. Da się przyspieszać/spowalniać poprzez regulację tych parametrów. Jest to o tyle dobre, że wszystko realizuje hardware, a Ty w programie możesz robić w tym czasie coś innego.

Tutaj jest jakiś tutorial o tym jak skonfigurować PWM na dwóch kanałach i uzyskać odpowiedni alignment:
http://www.rtos.be/2013/11/stm32f100-configuring-two-pwm-channels-polarity-and-alignment/

0

J/w. Piszę z komórki, wiec ref. manuala teraz nie sprawdzę, ale z tego co pamiętam sporo STMów powinno być w stanie zrobić to sprzętowo. Masz narzucony konkretny model uC?

0

Nie mam narzuconego, posiadam nucleo f 103rb i umiem czytac manuala. Oczywiscie pwm w moim mikro ma wiecej wyprowadzen niż tylko 2. A jeżeli bym chciał zmienić kierunek obrotu jak to przedstawia druga połowa obrazka to jak bym mógł to zrobić ?

0

Ty jakiś enkoder próbujesz obsłużyc ?? Tutoriali jak skonigurowac stm32 jest mnóstwo. Jak problemem jest język to jestem pewny, że gdzieś widziałem jakiś polski tutorial. Z drugiej strony STM poszedł do przodu i zamiast bawić się typowo niskopoziomowo udostepnia on do wszystkich swoich mikrokotrnolerów biblioteki HAL (hardware abstract layer), które to ułatwiają konfugurację peryferiów. Dodatkowo, stworzył on darmowe narzędzie STM32CubeMx. Jest to graficzny generator podstawowych ustawień mikrokontrolerów stm, w którym to możesz sobie "wyklikać" wszystkie ustawienia jakie chcesz a następnie wygenerować projekt już z przeprowadzoną inicjalizacją sprzętową. Szczerze polecam mu się przyjrzeć.

W tym narzędziu możesz sobie poustawiać właściwości sygnału pwm (port, częstotliwość, wypełnienie itd.) a następnie wygenerować kond inicjalizacji sprzętowej (właśnie z wykorzystaniem bibliotek HAL)

0

Po wgłębieniu się w temat też tak myślalem, bo mój temat projektu rzeczywiście brzmi jakbym miał obsługiwać jakiś silnik krokowy, ale jak dalem specyfikacje mojego projektu prowadzącemu to powiedział "a po co Ci to?" generalnie pełnym założeniem mojego projektu jest generowanie sygnału kwadraturowego o zadanych parametrach, mam rozpędzać ten sygnał i hamować za pomocą usarta z parsowaniem komend. A z tego generowanego sygnału mam zliczać impulsy i wypluwać ma największą prędkość jaką osiągnął sygnał i ile czasu mu to zajęło, oraz czas hamowania. Generalnie prowadzący też nie był wylewny gdy prosiłem o więcej wskazówek to nie chętnie chciał mówić, a że nie znalazłem podobnych poradnilów do mojego problemu to zapytałem tutaj..

0

Rozumiem, to musisz jeszcze dodać jakiś zewnętrzny moduł pomiaru prędkości (np. fotodioda i fotorezystor). Znalazłem te kursy po polsku, może Ci się przydadzą. Tu masz dla płytki nucleo https://forbot.pl/blog/stm32-praktyce-1-platforma-srodowisko-id2733 a tu z wykorzystaniem HAL i CubeMX (co prawda dla F4 ale na F1 postępujesz prawie identycznie więc dasz rade) https://forbot.pl/blog/kurs-stm32-f4-1-czas-poznac-hal-spis-tresci-kursu-id14114

0

Który dokładnie poradnik jeśli mogę wiedzieć?

0
VernonRoche napisał(a):

Który dokładnie poradnik jeśli mogę wiedzieć?

Przekierowało mnie do strony startowej kursu...

0

Bo miało Cie tam przekierować..... Wybierz sobie co potrzebujesz ale z tego co pisałeś na początku to chodzi Ci o PWM: https://forbot.pl/blog/kurs-stm32-f4-8-zaawansowane-funkcje-licznikow-id13473

1 użytkowników online, w tym zalogowanych: 0, gości: 1