Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: cekooo2012@hotmail.com - 01 Mayıs 2017, 13:36:35

Başlık: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: cekooo2012@hotmail.com - 01 Mayıs 2017, 13:36:35
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?
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: apsis - 01 Mayıs 2017, 17:42:57
Duty değeri  TIMx->CCRx ile ayarlanır. Bunun içerisindeki değeri değiştirerek dutydeki değişimi gözlemleyebilirsin
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: cekooo2012@hotmail.com - 01 Mayıs 2017, 20:20:12
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.
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: hwdesigner - 01 Mayıs 2017, 22:01:39
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
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: erkinkent - 02 Mayıs 2017, 08:19:20
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.
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: hwdesigner - 02 Mayıs 2017, 21:42:46

(https://s16.postimg.cc/t97i6dbtt/image.png) (https://postimg.cc/image/t97i6dbtt/)

(https://s16.postimg.cc/k2p7j36ld/image.png) (https://postimg.cc/image/k2p7j36ld/)

(https://s16.postimg.cc/5xjeh9xk1/image.png) (https://postimg.cc/image/5xjeh9xk1/)

Bu resimlerden yararlanarak yapabilirsin. Duty ve frekans ayarlarının tamamını yapman mümkün
Başlık: Ynt: stm32f pwm frekans ve duty değerlerini set ettikten sonra değiştirmek
Gönderen: cekooo2012@hotmail.com - 02 Mayıs 2017, 22:50:00
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").