PWM na STM32F103 Temat rozwiązany

Język C dla mikrokontrolerów ARM
ODPOWIEDZ
jarecki
Użytkownik
Posty: 17
Rejestracja: 25 paź 2017, 11:20

PWM na STM32F103

Post autor: jarecki » 22 paź 2019, 8:34

Cześć,
mam taką zagwozdkę, otóż odpaliłem sobie PWM-a sprzętowego na STM32F103 i chcę w locie zmieniać jego częstotliwość, zachowując stałe wypełnienie.
Sprawa wydaje się banalna, podmieniam wartość w rejestrze ARR, rejestry są buforowane więc jak timer się "przekręci" to wartość jest aktualizowana i częstotliwość się zmienia.
Problem się pojawia, bo oprócz rejestru ARR chcę przestawić w locie również rejestr CRR aby zachować stałe wypełnienie 50%.
I teraz pytanie czy jest jakiś sposób na zablokowanie pracy licznika (żeby sobie generował PWM w tle) na czas podmieniania wartości rejestrów ARR i CCR?
Funkcja ustawiająca częstotliwość wygląda tak:
  1. void timerSetFrequency(uint32_t frequ)
  2. {
  3.     TIM2->ARR = TIMER_CLOCK / frequ;   
  4.     TIM2->CCR4 =  TIM2->ARR / 2;
  5. }

jarecki
Użytkownik
Posty: 17
Rejestracja: 25 paź 2017, 11:20

Re: PWM na STM32F103

Post autor: jarecki » 23 paź 2019, 7:22

Witam,
problem rozwiązany. Jak już pisałem
jarecki pisze:
22 paź 2019, 8:34
rejestry są buforowane
ale trzeba to buforowanie włączyć :lol:
Więc pomogło włączenie buforowania i ustawianie bitu UDIS w rejestrze TIM_CR2 na czas uaktualniania wartości w rejestrach ARR i CCR.

Pozdrawiam,
Jarecki

ODPOWIEDZ