下面的代码能开启PWM吗?我试了好像不行
void initPWM()
{
INTCON = 0x00; //关闭总中断和外部中断
TRISA=0xFF; //ADD BY CHEN
PR2 = 0xff; //写入PR2寄存器设置PWM周期,PWM周期=[(PR2)+1]*4*TOSC*(TMR2预分频比)
CCP1CON = 0x3C; //设置PWM占空比低2位为11,设置为PWM模式
CCPR1L = 0x00; //设置PWM占空比高8位
// TRISC = 0xfb; //设置CCP1口为输出
// T2CON = 0x02; //设置TMR2预分频为16;
T2CON = 0x06; //ADD BY CHEN 设置TMR2预分频为16并且打开TIMER2;
TRISA=0; //ADD BY CHEN
}
是否PWM功能要开中断?
此帖出自
小平头技术问答
以下文字摘录处1827的数据手册中PWM设置部分:
24.3.2 设置 PWM 工作模式
当配置CCP模块使之工作于标准PWM模式时应遵循以
下步骤:
1. 通过将相应的 TRIS 位置 1 禁止 CCPx 引脚输出
驱动器。
2. 将 PWM 周期值装入 PRx 寄存器。
3. 通过将合适的值装入 CCPxCON 寄存器来配置
CCP 模块使之工作于 PWM 模式。
4. 将 PWM 占空比值装入 CCPRxL 寄存器和
CCPxCON 寄存器的 DCxBx 位。
5. 配置并启动 Timer2/4/6:
• 通过设置 CCPTMRS 寄存器中的
CxTSEL<1:0> 位,选择用于生成 PWM 的
Timer2/4/6 资源。
• 清零 PIRx 寄存器的 TMRxIF 中断标志位。
请参见下面的 “注”。
• 使用定时器预分频值配置 TxCON 寄存器的
TxCKPS 位。
• 通过将 TxCON 寄存器的 TMRxON 位置 1
来使能定时器。
6. 使能 PWM 输出引脚:
• 等待定时器溢出并且 PIRx 寄存器的 TMRxIF
位置 1。请参见下面的 “注”。
• 通过将相应的 TRIS 位清零使能 CCPx 引脚输
出驱动器。
一周热门 更多>