微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC16F877的Timer2与CCP模块的PWM

PIC16F877的Timer2与CCP模块的PWM

时间:11-24 来源:互联网 点击:
Timer2是一个8位定时器,带有一个预分频器、一个后分频器和一个周期寄存器。当将预分频器和后分频器设置为最大值时,其溢出时间与 16位定时器的相同。在PWM模式下使用 CCP模块时, Timer2 为PWM时基。

下图显示了Timer2的结构框图。后分频器对TMR2寄存器和PR2寄存器的匹配次数进行计数。这样有助于减少中断服务程序的调用频率,优化CPU性能。

与Timer2有关的寄存器

PWM模式
在脉冲宽度调制(PWM) 模式下,CCPx引脚可输出分辨率高达10位的 PWM 输出。因为CCPx引脚与端口数据锁存器是复用的,所以相应的TRIS位必须清零以使CCPx引脚为输出状态,下图为PWM结构简图。

一个PWM输出包含一个时基(周期)和一段输出高电平的时间(占空比)。PWM的频率是周期的倒数(1/周期)。

PWM周期可通过写入PR2 寄存器来规定,可用以下公式计算:
PWM 周期 = [(PR2) + 1] • 4 • TOSC • (TMR2 预分频比),用时间单位表示
PWM 频率 (FPWM)定义为1/[PWM周期]。
当TMR2 等于PR2 时,在下一递增计数周期中将产生下面三个事件:
• TMR2 被清零
• CCPx 引脚被置1( 例外情况:如果PWM占空比 =0%, CCPx 不被置1)
• PWM 占空比从CCPRxL 被锁定为 CCPRxH

PWM占空比可通过写入CCPRxL寄存器和DCxB1:DCxB0(CCPxCON<5:4>)位来规定。最高分辨率可达10位:由CCPRxL 中的高8位和CCPxCON<5:4>中的低2位组成。这一10位值由DCxB9:DCxB0来表征。计算 PWM 占空比的公式如下:
PWM 占空比 = (DCxB9:DCxB0 ) • Tosc • (TMR2 预分频比),用时间单位表示
DCxB9:DCxB0的值可以在任何时候写入,但直到PR2与TMR2中的值相符(当前周期结束)时,占空比的值才被锁存到CCPRxH。在PWM模式下,CCPRxH是只读寄存器。CCPRxH 寄存器和一个2位的内部锁存器用于为PWM占空比提供双重缓冲。双重缓冲对PWM的无毛刺操作是极其重要的。当CCPRxH和2位锁存器的值与TMR2和内部2位Q时钟(或TMR2分频器的2位)串接值相符时,CCPx引脚被清零。此时占空比结束。对于给定的PWM频率,其最大分辨率(位)为:

计算举例:

通过以下步骤将CCP模块配置为PWM模式:
1. 写入PR2寄存器以设定PWM周期。
2. 写入DCxB9:DCxB0位以设置PWM占空比。
3. 将相应的TRIS位清零以将CCPx引脚设为输出。
4. 写入T2CON以设置TMR2预分频比并使能 Timer2。
5. 将CCP模块配置为PWM模式。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top