智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1166|回复: 3
打印 上一主题 下一主题

[采集类] 两个编码器采集的数据不同

[复制链接]

1

主题

3

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1349
威望
668
贡献
421
兑换币
435
注册时间
2015-9-18
在线时间
130 小时
毕业学校
合肥学院
跳转到指定楼层
1#
发表于 2016-3-13 19:45:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的编码器采集会是这样的。我使用的是用D触发器来判断A相B相,一个编码器用外部计数器cd4520来计数,另一个用s128PT7口来计数。红色、黄色为PT7口,蓝色粉色为外部计数器。程序如下://脉冲累加器初始化函数

void PAC_Init(void){
    DDRT=0x00;

    PERT=0xC0;//编码器脉冲累加器口为输入,上拉有效。其他口没作用。//接7口
          PACTL = (1<<6);//脉冲累加器启动,外部发生一次下降沿就计数一次。外部编码器连接到IOC7,IOC6.
          //在中断里读取PACNT的值就是脉冲个数。读取后清零PACNT?
    DDRB_DDRB2=1;
    PORTB_PB2=0;
    nops();
    PORTB_PB2=0;
    DDRA=0;   
}



//编码器采集输出函数

void GetMotorPulse(void)
{  unsigned char  pulse_speedR,pulse_speedL;
   pulse_speedR=PACNT;           //读取脉冲值  右轮内部
         PACNT=0;       
         //if(!(g_fRightMotorOut>0))                pulse_speedR= -pulse_speedR;
         if(!(PORTB_PB4)==1)
         g_nRightPulseSigma += pulse_speedR;
         
         else
         g_nRightPulseSigma -= pulse_speedR;
         

   pulse_speedL=PORTA; //左外部
   //pulse_speedL=pulse_speedL+8;
   //if(!(g_fLeftMotorOut>0))                  pulse_speedL= -pulse_speedL;
   if(!(PORTB_PB3)==0)

         g_nLeftPulseSigma += pulse_speedL;
         else
   g_nLeftPulseSigma -= pulse_speedL;         





                 
            PORTB_PB2=1;
            nops();
            PORTB_PB2=0;
           OutData[0] = pulse_speedR;
     OutData[1] = g_nRightPulseSigma;
     OutData[2] = pulse_speedL;
     OutData[3] = g_nLeftPulseSigma;
     OutPut_Data();          
      g_nLeftPulseSigma=0;                             
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

1

主题

92

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3597
威望
1704
贡献
1041
兑换币
1052
注册时间
2013-12-24
在线时间
426 小时
2#
发表于 2016-3-14 16:59:17 | 只看该作者
用外部中断不就好了,外部计数器可能有问题
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1349
威望
668
贡献
421
兑换币
435
注册时间
2015-9-18
在线时间
130 小时
毕业学校
合肥学院
3#
 楼主| 发表于 2016-3-14 19:13:53 | 只看该作者
big_big_head.. 发表于 2016-3-14 16:59
用外部中断不就好了,外部计数器可能有问题

外部计数器应该没问题,我换了一片计数器还是和原来一样。你说的外部中断是和中断复用一个意思吗?那个如果速度快的话不是会有误差吗?不懂,求大神赐教!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1349
威望
668
贡献
421
兑换币
435
注册时间
2015-9-18
在线时间
130 小时
毕业学校
合肥学院
4#
 楼主| 发表于 2016-3-14 20:59:08 | 只看该作者
big_big_head.. 发表于 2016-3-14 16:59
用外部中断不就好了,外部计数器可能有问题

谢谢,问题我已经找到了,是程序有点小问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-12 20:08 , Processed in 0.072230 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表