小弟采用F2812的EVA和EVB驱动同时驱动两个步进电机1和2。步进电机1的PWM信号由定时器T1产生,步进电机2的PWM信号由定时器T3产生。两个定时的程序初始化如下。用示波器检测TI和T3引脚时,T1出现正常波形,但T3一直是3.3V高电平。求高手指点,感激不尽!!!
void InitT1PWM(void)
{
EvaRegs.T1CON.bit.TMODE=1; //连续增/减模式
EvaRegs.T1CON.bit.TPS=1; //T1CLK=HSPCLK/2=15M
EvaRegs.T1CON.bit.TENABLE=0; //暂时禁止T1计数
EvaRegs.T1CON.bit.TCLKS10=0; //使用内部时钟,T1CLK
EvaRegs.T1CON.bit.TECMPR=1; //使能定时器比较操作
EvaRegs.GPTCONA.bit.T1PIN=2; //高电平有效
EvaRegs.GPTCONA.bit.TCOMPOE=1; //通过比较逻辑驱动t1pwm
EvaRegs.T1PR=0x1D4C; //1KHz的PWM,周期为1ms r 7500=1D4C
EvaRegs.T1CMPR=0x0EA6; //占空比为50%,高电平有效 3750
EvaRegs.T1CNT=0; // (7500-3500)/7500=0.5
EvaRegs.T1CON.bit.TCLD10=0; // 当计数器T1CNT为0时,定时器1比较寄存器T1CMPR重载
}
void InitT3PWM(void)
{
EvbRegs.T3CON.bit.TMODE=1; //连续增/减模式
EvbRegs.T3CON.bit.TPS=1; //T3CLK=HSPCLK/2=15M
EvbRegs.T3CON.bit.TENABLE=0; //暂时禁止3计数
EvbRegs.T3CON.bit.TCLKS10=0; //使用内部时钟,T3CLK
EvbRegs.T3CON.bit.TECMPR=1; //使能定时器比较操作
EvbRegs.GPTCONB.bit.T3PIN=2;
EvbRegs.GPTCONB.bit.TCOMPOE=1;
EvbRegs.T3PR=0x1D4C;
EvbRegs.T3CMPR=0x0EA6;
EvbRegs.T3CNT=0;
EvbRegs.T3CON.bit.TCLD10=0;
} |