CCP模块包含了捕捉,比较,PWM三个功能
CCP1IF是捕捉与比较器功能中用到的中断,PWM模块是没有这个中断的
在捕捉模式下,可配置中断产生时机为:
每个下降沿
每个上升沿
每4个上升沿
每16个上升沿
在比较模式下, CCPR1的16位值不断与TMR1的值作对比,当两者匹配时,CCP1脚会被驱动,至于驱动成什么状态,取决于CCP1M的值,同时将CCP1IF中断标志位置位.
我现在要用PIC单片机生成SPWM做正弦波逆变器,要设置什么寄存器呢?const uchar table[128]
我通过查这个表,为什么占空比都没有变化,那个表是有128个正弦波数值的,太多我没写出来
你就是要做PWM信号发生器, 这个我常做的
首先用PR2设置频率,然后查表后就修改占空比寄存器,
我这里有个信号发生器的程序,是PIC16F886单片机,用C语言写的,你参考一下.
里面有修改占空比的程序:
CCPR1L = pwm_duty>>2;
CCP1CON &= 0b11001111;
temp = pwm_duty;
temp &= 0b00000011;
temp <<=4;
CCP1CON |= temp;
你用查表得到的值直接赋线pwm_duty就可以了
PWM的开启用这个:
CCP1CON = 0x0e; //单输出,P1A低电平有效
TRISC2 = 1;
PR2 = 119; //25KHZ
CCPR1L = 120; //初始化时占空比设为100%,输出一条直线
TMR2IF = 0;
T2CON &= 0b11111100; //T2预分频比设为1:1
TMR2ON = 1;
while(TMR2IF==0);
TRISC2 = 0; //开始输出PWM