PIC单片机产生PWM

我想用PIC18F45K50 的CCP模块生成一个周期20ms的PWM信号,但是由于PR2的限制,只能把单片机时钟频率降到500kHz才能实现,但是这样单片机的运算速度会受到很大影响,怎么才能在不降单片机时钟频率的情况下输出符合要求的PWM信号

……你完全搞错了。PWM的周期的确是由PR2决定的,而PR2是Timer2模块的周期寄存器,Timer本身都是可以预分频的,不影响主频跑高速。
好好看看datasheet吧……我怀疑你根本就没看过。

追问

我现在需要20ms周期,8位PR2最大值255, 选TMR2预分频1:16,4MHz时钟下PWM周期最大256*4*(1/4M)*16 约为4ms,不降时钟频率怎么达到?

追答

细看了一下datasheet,的确,撑死只有1/16的预分频。

不过,像50Hz这么缓慢的PWM,我建议通过软件实现就行了,完全不会有任何压力,且分辨率高得无敌。

追问

你的意思是用定时器在IO口输出高低电平?

追答

是的。用TMR0的软定时调节占空比即可。
20ms太宽了,宽得用不上硬PWM……

温馨提示:答案为网友推荐,仅供参考
相似回答