智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3487|回复: 12
打印 上一主题 下一主题

[咨询] 两路计数 求救

  [复制链接]

28

主题

265

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1710
威望
853
贡献
483
兑换币
527
注册时间
2012-12-18
在线时间
187 小时
跳转到指定楼层
1#
发表于 2013-4-26 13:50:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用9s128一路累计计数 另一路用的是HCF4520  
问题是用4520计数的 数值跳变 比另一路大两倍近  同样的PWM
即使我试用两路 同时对一个编码器计数  可还是4520计数大 而且还会跳变  
求大神指导   都弄快一个星期了    谢谢

4520用B口读  程序如下  原理图在附件  求指导啊



void Port_init (void)
{
    //DDRA = 0x00;    //A口高四位输入?低四位输入  
    DDRB = 0X00;  //B口输入   左边8位计数器
    DDRM=0XFF;
    PTM_PTM7 = 0;  //PM0输出为0 左边计数器清零端 高有效
}
/**************ECT测速 PT7作为输入引脚*************/
void ECT_init(void)
{
    TIOS|=0x02;
    TSCR1=0x90;//定时器使能,定时器标志快速清除,[PRNT]bit3:0,预分频使能[TSCR2],
    TSCR2|=0x07;//禁止定时器溢出中断,禁止复位, 预分频系数为128
    PACNT=0;
    PACTL_PAEN=1; //16 位的脉冲累加器A 使能
    PACTL_PAMOD=0;//0 事件计数模式,1 门控计时累加模式
    PACTL_PEDGE=1;//PAMOD=0 时,0 下降沿触发,1 上升沿触发
    PACTL_CLK1=0;//0;//0:0 定时器时钟使用预分频因子定义的时钟
    PACTL_CLK0=0;//0:1PACLK,1:0PACLK/256,1:1PACLK/65536
    PACTL_PAOVI=0;//0 脉冲累加器A 溢出中断禁止,1 如果PAOVF 被置位则产生中断
    PACTL_PAI=0;//0 禁止输入中断,1 如果PAIF 被置位则产生中断
}
void GetMotorPulse()
{
      right_counter = PACNT;     //存储脉冲次数
      PACNT = 0; //脉冲计数器清零
      if(right_counter < 255)
      {
          left_counter = PORTB;
      }
       else
      {   
          left_counter = PORTB + 255;
      }
      PTM_PTM7 = 1;   
      PORTB=0;
      PTM_PTM7 = 0;
  
}

本帖子中包含更多资源

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

x

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30674

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19809
贡献
7209
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
2#
发表于 2013-4-26 14:02:43 | 只看该作者
PORTB=0;
//后面加一句
while(PORTB);//等待PB口清“0" 完成

补充内容 (2013-4-28 13:01):
看错了,PB是读输入的。怎么可以设置为0呢?要用CLR使计数芯片复位。
回复 支持 反对

使用道具 举报

1

主题

2067

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5124

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
2752
贡献
898
兑换币
59
注册时间
2012-12-8
在线时间
737 小时
3#
发表于 2013-4-26 14:13:46 | 只看该作者
学习下
回复 支持 反对

使用道具 举报

28

主题

265

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1710
威望
853
贡献
483
兑换币
527
注册时间
2012-12-18
在线时间
187 小时
4#
 楼主| 发表于 2013-4-26 16:08:02 | 只看该作者
huang91 发表于 2013-4-26 14:02
PORTB=0;
//后面加一句
while(PORTB);//等待PB口清“0" 完成

真的是大神啊   跪谢了……
回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30674

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19809
贡献
7209
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
5#
发表于 2013-4-26 16:13:15 | 只看该作者
本帖最后由 huang91 于 2013-4-26 16:17 编辑
xin99 发表于 2013-4-26 16:08
真的是大神啊   跪谢了……

问题解决了?
回复 支持 反对

使用道具 举报

28

主题

265

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1710
威望
853
贡献
483
兑换币
527
注册时间
2012-12-18
在线时间
187 小时
6#
 楼主| 发表于 2013-4-26 16:18:00 | 只看该作者
huang91 发表于 2013-4-26 16:13
问题解决了?

恩恩    谢谢
回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30674

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章优秀版主奖章资源大师奖章

威望
19809
贡献
7209
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
7#
发表于 2013-4-26 16:22:30 | 只看该作者
xin99 发表于 2013-4-26 16:18
恩恩    谢谢

不谢,不谢。希望你的车能快快跑起来。
回复 支持 反对

使用道具 举报

28

主题

265

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1710
威望
853
贡献
483
兑换币
527
注册时间
2012-12-18
在线时间
187 小时
8#
 楼主| 发表于 2013-4-26 17:03:18 | 只看该作者
huang91 发表于 2013-4-26 16:22
不谢,不谢。希望你的车能快快跑起来。

恩恩 终于可以加速度控制了
回复 支持 反对

使用道具 举报

6

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
285
贡献
187
兑换币
188
注册时间
2013-3-23
在线时间
66 小时
9#
发表于 2013-4-29 21:47:16 | 只看该作者
xin99 发表于 2013-4-26 16:18
恩恩    谢谢

你们用了几个4520呢?读数与PT7大概一致吗
if(right_counter < 255)
{
left_counter = PORTB;
}
else
{
left_counter = PORTB + 255;
}
是啥意思啊

回复 支持 反对

使用道具 举报

27

主题

332

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1842
威望
967
贡献
517
兑换币
575
注册时间
2012-12-20
在线时间
179 小时
毕业学校
广工
10#
发表于 2014-3-25 16:52:17 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 06:09 , Processed in 0.053031 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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