//timer6 前一级预分频值
#defineTIMER6_1DIV1(0<<0)
#defineTIMER6_1DIV4(1<<0)
#defineTIMER6_1DIV16(2<<0)
#defineTIMER6_1DIV64(3<<0)
//----------------
#defineMOD_PWM0X0C//PWM模式
#defineMOD_CMP0X09//比较输出模式
#defineMOD_CMPI0X0A//比较中断模式
//---250-8K__125-16K------------
//#defineVT_8KPWM(uint8)250
#defineVT_16KPWM(uint8)125
#defineV_PWMFREVT_16KPWM //PWM的周期/频率
#ifdefined(VT_8KPWM) && defined(VT_16KPWM)
#error both define VT_8KPWM and VT_16KPWM!!!
#endif
#ifdefVT_8KPWM//8k pwm 调节占空比
#defineSetPwmCcpA(x)CCPR1L = x
#defineSetPwmCcpB(x)CCPR2L = x
#defineSetPwmCcpC(x)CCPR3L = x
//#defineSetPwmCcpC(x)CCPR4L = x
#else //def VT_16KPWM //16k pwm 调节占空比
#defineSetPwmCcpA(x)CCPR1L = (x>>1);
#defineSetPwmCcpB(x)CCPR2L = (x>>1);
#defineSetPwmCcpC(x)CCPR3L = (x>>1);
//#defineSetPwmCcpC(x)CCPR4L = (x>>1);
#endif
//------------------------------------------
#defineCCP4_IE_ENBCCP4IE = 1
#defineCCP4_IE_DISCCP4IE = 0
//*************************************
// 函数名称:Init_Eccp
// 函数功能:捕捉/比较功能设置
// 入口参数:PWM的时基TIMER6的分频参数 占空比初值 PWM周期值
// 出口参数:无
//
//***************************************
void Init_Eccp(uint8 Prsc,uint8 Tcon,uint8 Tcyc)
{
//CCPR1H = (uint8)(Tcon>>8) ;
CCPR1L = (uint8)(Tcon&0xff) ;//PWM 占空比
//CCPR2H = CCPR1H ;
CCPR2L = CCPR1L ;
//CCPR3H = CCPR1H ;
CCPR3L = CCPR1L ;
//CCPR4H = CCPR1H ;
CCPR4L = CCPR1L ;
CCP1CON = MOD_PWM ; //PWM模式 高电平有效 PXA被调制
CCP2CON = MOD_PWM ;
CCP3CON = MOD_PWM ;
CCP4CON = 0X00 ;//PWM模式关闭
CCPTMRS = 0XAA ;//CCP1-4 由TIMER6产生
TMR6ON = 1 ;//开启定时器6
T6CON |= Prsc ;//T6四分频 Fosc/4 /Prsc
PR6 = Tcyc ; //PWM周期
//自动关闭控制寄存器
CCP1AS = 0X00 ;//CCPX输出正常工作
CCP2AS = 0X00 ;
//增强型PWM控制寄存器
PWM1CON = 0X00 ;
PWM2CON = 0X00 ;
//转向控制寄存器
PSTR1CON = 0X01 ;
PSTR2CON = 0X01 ;
CCP1IF = 0 ;
CCP2IF = 0 ;
CCP3IF = 0 ;
CCP4IF = 0 ;
/*
CCP1IE = 1 ;
CCP2IE = 1 ;
CCP3IE = 1 ;
CCP4IE = 1 ;
*/
}
//--应用实例-----------
//PWM模块初始化 TIMER6频率为2M CCP1-CCP4产生16K的PWM
Init_Eccp(TIMER6_1DIV4,0x00,V_PWMFRE) ;//Fosc/4/x
//CCP1-CCP3的占空比调整
SetPwmCcpA(x) ;//设置CCP1的PWM占空比 X/V_PWMFRE (V_PWMFRE=250)
SetPwmCcpB(x) ;//设置CCP2的PWM占空比 X/V_PWMFRE (V_PWMFRE=250)
SetPwmCcpC(x) ;//设置CCP3的PWM占空比 X/V_PWMFRE (V_PWMFRE=250)