EvaRegs.T1CON.bit.TMODE=2; // 设定模式为连续增模式产生不对称的PWM波形
EvaRegs.T1CON.bit.TPS=0; //T1时钟输入预订标位 TCLK=HIPCLK=75Mhz
EvaRegs.T1CON.bit.TENABLE=0; //暂时禁止定时器的操作,等到全部设定完毕再启动定时器
EvaRegs.T1CON.bit.TCLKS10=0; // 定时器1使用内部时钟
EvaRegs.T1CON.bit.TCLD10=0; //当计数器值为0时重载
EvaRegs.T1CON.bit.TECMPR=1; //使能定时器的比较操作.
EvaRegs.T1CON.bit.FREE=1;
EvaRegs.T1CON.bit.SOFT=1;
EvaRegs.GPTCONA.bit.T1PIN=2; //定时器1比较输出极性高电平有效
EvaRegs.GPTCONA.bit.T1CMPOE=1; //
EvaRegs.T1CNT=0x0000;
EvaRegs.T1PR=11718;
EvaRegs.T1CMPR=3000; //
EvaRegs.T1CON.bit.TENABLE=1; //使能定时器操作开始产生PWM波形
知道的朋友给指点一下, 如此设置为什么T1PWM引脚没有波形输出啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void InitEv(void)
{
EvaRegs.DBTCONA.all = 0x0530; //使能死区定时器,分频40/16=2.5M,死区时间5*0.4us=2us
EvaRegs.T1CNT = 0; //定时器1初值设为0
EvaRegs.T1PR = 4652; //1K(4650)
EvaRegs.ACTR.all = 0x0066; //PWM2低有效,PWM1高有效,改变设置可使电机反转
EvaRegs.CMPR1=0;
EvaRegs.CMPR2=0;
EvaRegs.COMCONA.all = 0xA600; //比较器控制A
// EvaRegs.T1CMPR = 2400; //定时器1比较值
// EvaRegs.T1CON.all = 0x144E; //连续增模式,TPS系数40M/16=2.5M,T1使能
EvaRegs.T1CON.all = 0x1442; //定时器输入预定标时钟HSPCLK/16
/*配置通用定时器2用于正交编码QEP模块和捕获单元模块CAP */
EvaRegs.T2CON.all=0x1830; //仿真停挂起,双向递增/减计数,禁止定时器操作,定时器时钟来源QEP
//定时器重载条件保留,禁止定时器比较操作
EvaRegs.T2PR = 0xFFFF; //定时周期0xFFFF
EvaRegs.T2CNT = 0x7FFF; //设置定时初值为0x7FFF
/*配置通用定时器3用于精确时间测量,服务于M/T测速 */
EvbRegs.T3CNT = 0; //定时器3初始值,用于测量高频脉冲个数,M/T测速
EvbRegs.T3PR = 0xFFFF;
EvbRegs.T3CON.all = 0x1000; //连续增模式,输入时钟预定标为0(HSPCLK=75M,周期为13.33ns)
EvaRegs.CAPCONA.all=0; //复位捕获单元寄存器,QEP电路清0
EvaRegs.CAPCONA.bit.CAP1EDGE=1;//捕获单元检测上升沿
EvaRegs.CAPCONA.bit.CAP12TSEL=0;//捕获单元选择定时器为定时器2
EvaRegs.CAPFIFO.bit.CAP1FIFO=0; //清空CAP1FIFO
// EvaRegs.CAPCONA.bit.CAPRES = 0; //清除所有捕获单元寄存器,QEP电路清0
EvaRegs.EVAIFRC.bit.CAP1INT=1; //清中断标志位
EvaRegs.EVAIMRC.bit.CAP1INT=1; //CAP1中断使能
EvaRegs.CAPCONA.bit.CAPQEPN = 0; //禁止捕获单元1和2
// EvaRegs.T2CON.bit.TENABLE = 1; //使能定时器2
EvaRegs.T2CON.bit.TCLKS10 = 3; //启动T2计数QEP
}
此句调节占空比
EvaRegs.CMPR1 = EvaRegs.T1PR*speed1;
谢谢分享
一周热门 更多>