初始化EV:
void InitEv(void)
{
EALLOW;
//初始化定时器1和pwm1~6的输出
EvaRegs.T1PR = timer1_freq; // 设定PWM载波频率20K
EvaRegs.T1CNT = 0x0000; // 定时器1计数器
EvaRegs.T1CON.all = 0x0b40;//8 分频,使能定时器操作,连续增减模式
// EvaRegs.T1CON.all = 0x0c40;//16分频,使能定时器操作,连续增减模式,内部时钟
//EvaRegs.DBTCONA.all = 0x03f8;//32分频,死区时间2.5us左右
EvaRegs.DBTCONA.all =0;
//EvaRegs.GPTCONA.bit.T1TOADC =2;//定时器1周期中断启动ADC
EvaRegs.GPTCONA.bit.T1TOADC = 0; //不启动ADC中断
EvaRegs.EVAIMRA.bit.T1PINT=1;//定时器1周期中断允许
EvaRegs.EVAIFRA.bit.T1PINT=1;//清除标志
// 使能 PWM1-PWM6
EvaRegs.CMPR1 = timer1_freq;
EvaRegs.CMPR2 = timer1_freq;
EvaRegs.CMPR3 = timer1_freq;
EvaRegs.COMCONA.all = 0x8200;//使能比较操作?pwm1~6由相应的比较逻辑驱动
/************************************************************
// 初始化定时器2
EvaRegs.T2PR =t2prd;; // 定时器2的周期为20k
EvaRegs.T2CNT =0x0000; // Timer2 counter
EvaRegs.T2CON.all =0x1440;//16分频,使能定时器操作,连续增模式
EvaRegs.EVAIMRB.bit.T2PINT = 1;//定时器2周期中断允许
EvaRegs.EVAIFRB.bit.T2PINT = 1;//清除标志
************************************************************/
//电机错误中断处理程序
//EvaRegs.EVAIFRA.bit.PDPINTA=1;//清除PDPINTA中断标志
//EvaRegs.EVAIMRA.bit.PDPINTA=1;//PDPINTA中断允许
PieCtrl.PIEIER2.bit.INTx4=1;//T1pint中断
EDIS;
}
阅读(3857) | 评论(0) | 转发(0) |