下面的代码能开启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功能要开中断?
此帖出自
小平头技术问答
改成这样就好了(其实已经启动只是高电平时间为“0”,所以一直输出低)
void initPWM()
{
INTCON = 0x00; //关闭总中断和外部中断
TRISA=0xFF; //ADD BY CHEN
PR2 = 0; //写入PR2寄存器设置PWM周期,PWM周期=[(PR2)+1]*4*TOSC*(TMR2预分频比)
CCP3CON = 0x2C;//CCP1CON = 0x3C; //设置PWM占空比低2位为11,设置为PWM模式
CCPR3L = 0x00;//CCPR1L = 0xAA; //设置PWM占空比高8位
// TRISC = 0xfb; //设置CCP1口为输出
// T2CON = 0x02; //设置TMR2预分频为16;
T4CON=0x04;
T6CON=0x04;
T2CON = 0x04; //ADD BY CHEN 设置TMR2预分频为16并且打开TIMER2;
TRISA=0; //ADD BY CHEN
}
可是问题又来了我本来是使用32MHz的内部高频RC,是最高输出的PWM频率是2M?
感觉有点纳闷!按计算应该是8M才对!
主时钟是4分频来启动PWM,
PWM周期=[(PRX)+1]x4xTOSCx(TMRX预分频值)]
我当前已经让PR2=0 / TMRX预分频值=1了,可是好象是16分频了
可是我的好象有两次4分频?没找到原因?
一周热门 更多>