|
两路测速,一路用的pt7,一路用的cd4520,两者的数据差别很大大,是什么原因?求解啊!!貌似自带的计数有问题(计数很大,这个数字明显不可能这么大啊)下面是我的计数程序,,请各位看看啥原因!!谢谢了!
/***************** 脉冲累加器初始化*********************/
void PACN_Init(void) //脉冲累加器初始化
{
PACTL_PAEN =0; //16位脉冲累加器A控制寄存器,16位脉冲累加器A(PACA)无效
PACTL_PAMOD=0; //16位脉冲累加器A控制寄存器,事件计数模式
PACTL_PEDGE=1; //16位脉冲累加器A控制寄存器,上升沿
PACTL_PAOVI=0; //16位脉冲累加器A控制寄存器,禁止溢出中断
PACTL_PAI = 0; //16位脉冲累加器A控制寄存器,禁止输入中断
PACNT=0; //计数初值
// PAFLG_PAOVF=1;//脉冲累加器A标志寄存器,对PAOVF位的人工置位,可以清除这个标志
//PAFLG_PAIF =1;//脉冲累加器A标志寄存器,脉冲累加器输入边沿标志
PACTL_PAEN =1;//16位脉冲累加器A控制寄存器,使能脉冲累加器A
}
void GetMotorPulse(void)
{ //采集电机脉冲
int LeftPulse, RightPulse;
LeftPulse=PORTB; //从PORTB口读入计数器值
PTT_PTT1=1; //外部计数器清零
RightPulse=PACNT; //右电机采用内部计数器计数
PACNT=0; //内部计数清零
PTT_PTT1=0; //外部计数器开始计数
if( PWMDTY67==0)
LeftPulse=-LeftPulse; //如果左轮PWM正向控制值为零,则为反转,脉冲值为负
if( PWMDTY23==0)
RightPulse=- RightPulse; //如果右轮PWM正向控制值为零,则为反转,脉冲值为负 */
g_nLeftMotorPulse+= LeftPulse; // 左脉冲累加
g_nRightMotorPulse+=RightPulse; // 右脉冲累加
PRI_COMP( 0,LeftPulse,g_fCarSpeed,RightPulse) ;
}
|
|