怎么PIC16F1827打开PWM功能在RA3上输出

2019-03-25 18:55发布

下面的代码能开启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功能要开中断?

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
dingzy_2002
2019-03-26 07:59
请按数据手册要求进行程序设置:
以下文字摘录处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 引脚输
出驱动器。

一周热门 更多>