PAGE1
PAGE1
PIC18F系列的PWM模块
1.PWM模块概述
脉宽调制(PulseWidthModulation,PWM)是一种通过调整脉冲的宽度来控制输出信号的技术。在PIC18F系列单片机中,PWM模块通常用于生成精确的脉冲信号,这些信号可以用于控制电机速度、LED亮度、伺服电机位置等。PIC18F系列的PWM模块基于定时器(通常是定时器2或定时器3)和CCP(Capture/Compare/PWM)模块,通过配置这些模块可以实现多种PWM功能。
2.PWM模块的硬件结构
2.1定时器模块
PWM模块的核心是定时器,定时器用于生成PWM信号的周期。在PIC18F系列中,定时器2和定时器3是最常用于PWM的定时器。定时器2是一个16位定时器,而定时器3是一个16位定时器,两者都可以通过预分频器来调整时钟频率。
2.2CCP模块
CCP模块(Capture/Compare/PWM)是一个多功能模块,可以用于捕获输入信号、比较定时器值和生成PWM信号。在PWM模式下,CCP模块通过比较定时器的当前值和预设的比较值来生成PWM脉冲。
3.配置PWM模块
3.1配置定时器
3.1.1定时器2配置
定时器2的配置主要通过以下寄存器:
PR2:周期寄存器,设置定时器2的周期。
T2CON:定时器2控制寄存器,设置定时器2的工作模式和预分频器。
TMR2:定时器2寄存器,存储定时器2的当前值。
//配置定时器2
voidconfigTimer2(){
//设置定时器2的周期
PR2=255;//255个计数值
//配置定时器2控制寄存器
T2CONbits.T2CKPS=0b11;//1:16预分频
T2CONbits.T2OUTPS=0b0000;//1:1输出分频
T2CONbits.TMR2ON=1;//打开定时器2
}
3.1.2定时器3配置
定时器3的配置主要通过以下寄存器:
PR3:周期寄存器,设置定时器3的周期。
T3CON:定时器3控制寄存器,设置定时器3的工作模式和预分频器。
TMR3:定时器3寄存器,存储定时器3的当前值。
//配置定时器3
voidconfigTimer3(){
//设置定时器3的周期
PR3=65535;//65535个计数值
//配置定时器3控制寄存器
T3CONbits.T3CKPS=0b11;//1:8预分频
T3CONbits.TMR3ON=1;//打开定时器3
}
3.2配置CCP模块
3.2.1CCP1配置
CCP1模块的配置主要通过以下寄存器:
CCP1CON:CCP1控制寄存器,设置CCP1的工作模式。
CCP1RS:CCP1重载寄存器,设置PWM脉冲的高电平持续时间。
CCP1AS:CCP1辅助寄存器,设置PWM脉冲的低电平持续时间。
//配置CCP1模块
voidconfigCCP1(){
//设置CCP1为PWM模式
CCP1CONbits.CCP1M=0b1100;//PWM模式
//设置PWM脉冲的高电平持续时间
CCP1RS=128;//128个计数值
//设置PWM脉冲的低电平持续时间
CCP1AS=128;//128个计数值
//使能PWM输出
TRISCbits.RC1=0;//设置RC1为输出
}
3.2.2CCP2配置
CCP2模块的配置主要通过以下寄存器:
CCP2CON:CCP2控制寄存器,设置CCP2的工作模式。
CCP2RS:CCP2重载寄存器,设置PWM脉冲的高电平持续时间。
CCP2AS:CCP2辅助寄存器,设置PWM脉冲的低电平持续时间。
//配置CCP2模块
voidconfigCCP2(){
//设置CCP2为PWM模式
CCP2CONbits.CCP2M=0b1100;//PWM模式
//设置PWM脉冲的高电平持续时间
CCP2RS=128;//128个计数值
//设置PWM脉冲的低电平持续时间
CCP2AS=128;//128个计数值
//使能PWM输出
TRISCbits.RC2=0;//设置RC2为输出
}
4.PWM信号的生成
4.1单通道PWM信号生成
单通道PWM信号生成是指通过一个CC