PIC单片机输出比较(PWM)模块介绍
2012-12-11 14:57
387 查看
在Android红外遥控器项目中使用了输出比较OC1(PWM)模块来产生38KHz PWM脉冲,脉冲占空比与红外信号发射距离以及产品功耗有关。其中占空比越大,发射距离越远,功耗越大。红外载波的占空比一般在1/3左右。 |
3 天前 上传
下载附件 (40.61
KB)
图1:输出比较框图
将输出比较模块配置为PWM 操作,需要以下步骤:
1. 将OCx输出配置为可用的外设引脚选择引脚之一。
2. 计算所需的占空比并将计算结果装入 OCxR 寄存器。
3. 计算所需的周期并将计算结果装入 OCxRS 寄存器。
4. 选择当前的 OCx 作为同步源,方法是把 0x1F写入SYNCSEL<4:0>(OCxCON2<4:0>),把 0 写入OCTRIG (OCxCON2<7>)。
5. 通过写 OCTSEL2<2:0> 位(OCxCON<12:10>)选择时钟源。
6. 如果需要的话,允许定时器和输出比较模块中断。 使用 PWM故障引脚时需要输出比较中断。
7. 通过 OCM<2:0> (OCxCON1<2:0>)位选择所需的PWM模式。
8. 如果定时器被选为时钟源,请设置 TMRy 预分频值,并通过将 TON(TxCON<15>)位置 1 来使能时基。
我们选择RB13/RP13/AN11作为OC1输出管脚,未分频时钟T2作为时钟源。将OC1RS寄存器写入421, OC1R寄存器写入140,以产生占空比为1/3 38KHz PWM脉冲。1/(421*62.5ns)=38KHz。
PWM1初始化函数
void mInitPWM1(void)
{
_RP13R = 18 ; //红外发送,OC1的功能号为18,将OC1重映射到RB13/RP13/AN11
OC1CON1 = 0x0006 ; //使用Timer2,边沿对齐PWM模式
OC1CON2 = 0x001F ; // 选择OC1为同步源
OC1RS = 421 ; //周期421*62.5ns 38K Hz
OC1R = 140 ; //占空比:100/421
}
定时器T2初始化
void T2_On(void)
{
T2CON = 0x0000 ;//未分频
T2CONbits.TON = 1 ;
}
定时器T2停止
void T2_Off(void)
{
T2CONbits.TON = 0 ;
}
原帖地址:http://www.nwtel.cn/thread-195-1-1.html
PIC单片机中文资料:带专用定时器的输出比较-DS39723A_CN
http://pan.baidu.com/share/link?shareid=148544&uk=3004090951
相关文章推荐
- 5. avr定时器/计数器1 --TC1 --快速PWM输出 (比较输出--快速PWM模式)
- python os.path模块比较实用的函数介绍
- 比较/ 捕捉/PWM (CCP)模块
- 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
- EFM32小记----定时器配置为捕获、比较以及PWM输出注意事项
- H.265/HEVC中比较耗时的模块介绍(与H.264/AVC对比)
- STM32——定时器TIME模块之PWM输出
- STM32TIM输出比较的三种模式及一个定时器如何输出频率不同的PWM波
- STC12C5A60S2的PCA模块输出PWM波
- STM32:TIMER输出比较模式-PWM
- 1. avr定时器/计数器0 --TC0 --CTC模式输出PWM (比较匹配发生时清除计数器模式(即CTC模式))
- 怎么用STM32配置产生PWM(一个定时器用输出比较方式产生不同频率的PWM)
- stm32定时器PWM模式和输出比较模式
- STM32定时器输出比较(PWM)
- 2. avr定时器/计数器0 --TC0 --快速PWM输出 (比较输出--快速PWM模式)
- 定时器的输出比较模式产生的PWM波的频率计算
- STM32输出比较模式和PWM模式
- 3. avr定时器/计数器0 --TC0 --相位修正PWM模式 (比较输出--相位修正PWM 模式)
- 输出比较模式时的TIM_OCMode_PWM1和TIM_OCMode_PWM2区别
- 4. avr 定时器/计数器1 --TC1 --CTC模式输出PWM (比较匹配发生时清除计数器模式(即CTC模式))