stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek

Başlatan cekooo2012@hotmail.com, 01 Mayıs 2017, 13:36:35

cekooo2012@hotmail.com

Herkese kolaylıklar;  tek kanaldan aldığım PWM sinyalinin frekans değerini  programın çalışması sırasında değiştirmek istiyorum. Yaptığım birkaç denemede olumsuz oldu. Programın koşarken, PWM sinyalini resetlemeden frekans değerini değiştirmek mümkün olabilir mi?

apsis

Duty değeri  TIMx->CCRx ile ayarlanır. Bunun içerisindeki değeri değiştirerek dutydeki değişimi gözlemleyebilirsin
"Makineye Beyin" MEKATRONİK

cekooo2012@hotmail.com

Frekans değerini nasıl değişitirebilirim. TIM_TimeBaseStructure.TIM_Prescaler = Prescaler  ile kurulum sırasında prescaler değerini set ediyoruz. Bu değeri program koşarken nasıl değişitirebiliriz. Aynı komutu program koşarken uyguladığımda değişiklik olmuyor.

hwdesigner

Timer rutinin de prescaler değerini  bir değişkene işaret et. Sonra o değildi sonsuz doğu de yeni bir değere set et. Sonra rutin i çağır. Bu şekilde yapabilirsin

erkinkent

uint16_t StepPeriod[]={5,10,15,.......}

frekans değerine göre yukarıdaki tarzda bir dizi oluşturabilirsin.

TIM4->ARR = StepPeriod[sayac];
TIM4->CCMR1 =StepPulse[sayac];
sayac++;

bu şekilde oluşturursan frekans değerin değişir. yada dışarıdan değer girebilirsin.

hwdesigner








Bu resimlerden yararlanarak yapabilirsin. Duty ve frekans ayarlarının tamamını yapman mümkün

cekooo2012@hotmail.com

#6
Tum arkadaslara tesekkurler. Çok faydalı oldu.

Arkadasların verdiği ilhamla ve saygıyla andığım bunalmıs (z) hocamızın tavsiyeleri üzerine REHBER'de (RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced AdRM®-based 32-bit MCUs) yaptıgım incelemede su ifadeyi gördüm:
17.4.11 TIM1&TIM8 prescaler (TIMx_PSC)
Bits 15:0 PSC[15:0]: Prescaler value
The counter clock frequency (CK_CNT) is equal to fCK_PSC / (PSC[15:0] + 1).
PSC contains the value to be loaded in the active prescaler register at each update event
(including when the counter is cleared through UG bit of TIMx_EGR register or through
trigger controller when configured in "reset mode").