1.PWM模式的周期
PWM模式的周期由PR2寄存器决定。当主频确定后,PWM模式波形的周期计算公式为:
PWM模式周期=(PR2+1)×4×TOSC×TMR2预分频值
其中,TOSC为时钟周期(4个时钟周期为一个指令周期)。一般情况下都是想得到特定周期的方波,所以需要反过来求PR2的设定值。
PR2设定值=(PWM模式周期/(4×TOSC×TMR2预分频值))-1
【例12-3】用PIC16F877的CCP1模块在PWM模式下产生50kHz的方波。主频为4MHz。求其PR2设定值。
题意分析
●50kHz的方波其周期为50kHz的倒数,即20µs,所以PWM模式周期为20µs。
●当主频是4MHz时,一个时钟周期为0.25µs。
●为了提高分辨率,这里设TMR2的预分频为1:1。
解答过程
PR2设定值=(PWM模式周期/(4×TOSC×TMR2预分频值))-1=(20µs/(4×0.25µs×1))-1=19
当TMR2计数值等于PR2寄存器设定值后,下一个计数脉冲的到来将发生如下3件事情。
●TMR2被清零。(www.daowen.com)
●CCP1模块引脚被置为高电平(当高电平宽度为0时,CCP1模块引脚保持为低电平)。
●新的高电平宽度值从CCPR1L被复制到CCPR1H(共10位)。
注意:在PIC16F877中,当两个CCP模块被同时配置成PWM工作模式时,由于内部只有一个TMR2定时器和PR2寄存器,故所有PWM模式输出都将是相同的频率。
2.PWM模式的高电平宽度和占空比
PWM模式每个周期的高电平宽度通过对寄存器CCPR1L和CCP1CON的CCP1X位和CCP1Y位来设定,共10位,将其统称为DCR(10位的高电平宽度寄存器)。其中,CCP1L为高8位(DCR<9:2>),CCP1X、CCP1Y为低两位(DCR<1:0>)。在精度要求不苛刻的情况下,如果只需8位分辨率的占空比调制,则只需简单地设定CCPR1L寄存器,CCP1X和CCP1Y两位固定为00即可。
PIC单片机的CCP模块及其应用如果以10位分辨率计算,PWM模式高电平宽度为:
PWM模式高电平宽度=DCR×TOSC×TMR2预分频值
程序在运行过程中的任何时候都可以修改DCR,但修改后的值并不立即起作用,必须等到当前PWM模式周期结束,即TMR2等于PR2时,才会将10位的DCR装入CCPR1H寄存器和内部的额外两位,然后开始一个新的PWM模式周期。这就表明PIC单片机对占空比的调整是带缓冲功能的,可以保证得到输出的PWM模式波形无毛刺。在PWM模式下,CCPR1H为只读,软件修改无效。
根据占空比定义,当PWM模式周期大于PWM模式高电平宽度时,能得到CCP1的PWM模式占空比为
PWM模式占空比=PWM模式高电平宽度/PWM模式周期
若PWM模式周期不大于PWM模式高电平宽度,PWM模式将输出100%占空比的波形,即CCP1模块引脚将维持高电平不变。
当多个PWM模式同时工作时,虽然周期一定是相同的,但CCPRXL(X可以是1或2)寄存器是独立的,故不同的PWM模式输出时各自的占空比独立可调。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。