I don't know 0~5KHz Freq for PWM function.

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

I don't know 0~5KHz Freq for PWM function.

跳至解决方案
1,755 次查看
Kr_Blue
Contributor I

.hi. Everyone.

 

I want know 0,1,2,3,4, ~  4998,4999,5000 Hz Freq for PWM function.

 

PWM Setting -> Channel clock period = 10KHz

                             input data = 0~1023

                             16bit PWM

 

ex)  if i want 1hz, 10KHz / 1Hz = 10K = PWMPER01 

                               10KHz / 2Hz = 5K = PWMPER01

                                                .

                                                .

                                                .

                                 10KHz / 700Hz = 3 = PWMPER01 

                                 10KHz / 701Hz = 3 = PWMPER01 

                                 10KHz / 702Hz = 3 = PWMPER01 

                                 10KHz / 703Hz = 3 = PWMPER01 

 

and I want 700,701,702,703Hz etc..... but  only PWMPER01 = 3 !!!!

so Output PWM is only 700Hz.

 

I want solution. 

input data is 1,2,3,4,5,6,7,8,etc.....

Output Hz is 1,2,3,4,5,6,7,8 etc Hz

标签 (1)
0 项奖励
回复
1 解答
1,252 次查看
kef
Specialist I

You need at least 25MHz PWM clock to be able to tune PWM frequency up to 5kHz with 1Hz resolution. 10kHz is certainly not enough.

Minimum PWM frequency in 16bits mode at 25MHz clock is 382Hz, so you you need to prescale 25MHz /2 for frequencies 191-381Hz, -"- 25MHz /4 for 95-190Hz, etc.

在原帖中查看解决方案

0 项奖励
回复
2 回复数
1,253 次查看
kef
Specialist I

You need at least 25MHz PWM clock to be able to tune PWM frequency up to 5kHz with 1Hz resolution. 10kHz is certainly not enough.

Minimum PWM frequency in 16bits mode at 25MHz clock is 382Hz, so you you need to prescale 25MHz /2 for frequencies 191-381Hz, -"- 25MHz /4 for 95-190Hz, etc.

0 项奖励
回复
1,252 次查看
Kr_Blue
Contributor I

Thank you for you'r answer.

 

Your answer was the setting.

 

PWMPRCLK = 0x22; // BUS Clk / 4 = 3000000

                                      // BUS Clk = 12MHz

PWMSCLA=0x01;       // PWMPRCLK / (2*PWMSCLA) = 3000000 / (2 *1) = 1500000

PWMSCLB=0x01;

 

And good operation.

 

0 项奖励
回复