智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 24846|回复: 14
打印 上一主题 下一主题

K60 编码器测速程序不对啊,大师进···

[复制链接]

20

主题

72

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4139
威望
2153
贡献
820
兑换币
436
注册时间
2012-10-24
在线时间
583 小时
跳转到指定楼层
1#
发表于 2012-12-26 15:38:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

打算使用FTM的counter完成对编码器输出脉冲的计数,现在使用FTM的正交解码模式中的count and direction encoding mode(只进行测速,不用辨别电机转向),比如说使用FTM1模块的通道0接编码器的脉冲输出,通道1接高电平,这样FTM1的counter就会随编码器的脉冲加法计数,下面是我写的程序(有问题),不知道出在什么地方,调试时,编码器脉冲输出正常,FTM各寄存器初始化亦正常,但给FTM1通道0大约400HZ的脉冲时,FTM1中的CNT寄存器并不进行计数·······
求助各位大大,

void pulse_counter_init(void)         //编码器计数器初始化
{
        SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
        PORTA_PCR12 = PORT_PCR_MUX(3);     //
        PORTA_PCR13 = PORT_PCR_MUX(3);          //
        PORTB_PCR18 = PORT_PCR_MUX(3);
        PORTB_PCR19 = PORT_PCR_MUX(3);
       
        SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;   //选通FTM1时钟
        SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK;   //选通FTM2时钟
       
        FTM1_CNTIN = 0x0000u;
        FTM1_CNT =0x1234;  
        FTM1_MOD = 0xffff; // FTM counter is free running counter
        FTM2_CNTIN = 0x0000u;
        FTM2_CNT =0x1234;  
        FTM2_MOD = 0xffff; // FTM counter is free running counter
       
        FTM1_MODE |= FTM_MODE_FTMEN_MASK;
        FTM2_MODE |= FTM_MODE_FTMEN_MASK;       
       
        FTM1_C0SC |= FTM_CnSC_ELSA_MASK;     //捕捉输入上升沿
        FTM1_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK  //Count and direction encoding mode
                                                          | FTM_QDCTRL_QUADEN_MASK; //  使能正交解码模式
       
        FTM2_C0SC |= FTM_CnSC_ELSA_MASK;     //捕捉输入上升沿
        FTM2_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK  //Count and direction encoding mode
                                                          | FTM_QDCTRL_QUADEN_MASK; //  使能正交解码模式               
       
        FTM1_CONF |= FTM_CONF_BDMMODE(3); //bdm调试时,计数器冻结
        FTM2_CONF |= FTM_CONF_BDMMODE(3); //bdm调试时,计数器冻结
       
        FTM1_SC |= FTM_SC_PS(0) | FTM_SC_CLKS(1);
        FTM2_SC |= FTM_SC_PS(0) | FTM_SC_CLKS(1);  
}



补充内容 (2012-12-26 19:36):
原来是那个信号复选有问题哈,现在有数字了,但是测得不准,定时5ms,测760us的脉冲才能测4个坑啊

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
698
威望
337
贡献
195
兑换币
196
注册时间
2012-11-1
在线时间
83 小时
推荐
发表于 2013-7-7 19:24:04 | 只看该作者
automate 发表于 2013-7-7 19:12
软件,确保你的程序配置正确,正确的计数模式,设置成增计数模式

硬件,每个FTM正交解码模块都要有两 ...

void FTM1_QUAD_Iint(void)
{
    PORTA_PCR8= PORT_PCR_MUX(6); // 设置引脚A12引脚为FTM1_PHA功能  
    PORTA_PCR9= PORT_PCR_MUX(6); // 设置引脚A13引脚为FTM1_PHB功能

    SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;//使能FTM1时钟  
    FTM1_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
    FTM1_QDCTRL   |=  FTM_QDCTRL_QUADMODE_MASK;                                   // B向确定方向A向计数
            //FTM1_QDCTRL   &=  FTM_QDCTRL_PHAPOL_MASK;                                    //PHAPOL=0:普通极性
            //FTM1_QDCTRL   |=  FTM_QDCTRL_PHBPOL_MASK;                                    //PHBPOL=1:反向极性
            FTM1_QDCTRL   |=  FTM_QDCTRL_PHAFLTREN_MASK;                       //PHAFLTREN=1:A相输入滤波使能。
            FTM1_QDCTRL   |=  FTM_QDCTRL_PHBFLTREN_MASK;                      //PHAFLTREN=1:B相输入滤波使能。

    FTM1_CNTIN=0;//FTM0计数器初始值为0  
    FTM1_MOD=65535;//结束值  
    FTM1_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM1正交解码模式  
    FTM1_MODE |= FTM_MODE_FTMEN_MASK;//FTM1EN=1   
    FTM1_CNT=0;  
}
本来是用DMA,现在改方案,新板子还没回来,想试一下FTM正交解码,这个是在网上载的历程,我想可不可以用软件给B相高电平,这和硬件给高电平有什么区别吗?


回复 支持 1 反对 0

使用道具 举报

4

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
威望
227
贡献
126
兑换币
144
注册时间
2017-10-5
在线时间
51 小时
15#
发表于 2017-12-21 21:30:38 | 只看该作者
。南风 发表于 2017-9-16 10:52
买了欧姆龙的编码器,不知道怎么测速度,大佬告诉我一下

DMA就可以测速
回复 支持 反对

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
QQ
威望
130
贡献
67
兑换币
77
注册时间
2017-7-11
在线时间
20 小时
毕业学校
14#
发表于 2017-9-16 10:52:51 | 只看该作者
买了欧姆龙的编码器,不知道怎么测速度,大佬告诉我一下
回复 支持 反对

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
QQ
威望
130
贡献
67
兑换币
77
注册时间
2017-7-11
在线时间
20 小时
毕业学校
13#
发表于 2017-9-16 10:52:31 | 只看该作者
买了欧姆龙的编码器,不知道怎么测速度,大佬告诉我一下
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

注册会员

Rank: 2

积分
117
威望
62
贡献
33
兑换币
39
注册时间
2016-2-24
在线时间
11 小时
12#
发表于 2016-3-1 19:18:20 | 只看该作者
求指导,本人欧姆龙500的,不会用啊,用的历程,显示出来的是跳动的乱的数据
回复 支持 反对

使用道具 举报

7

主题

90

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2011
威望
1007
贡献
618
兑换币
656
注册时间
2013-9-24
在线时间
193 小时
11#
发表于 2013-12-2 20:29:22 | 只看该作者
cyp 发表于 2013-7-7 18:47
可是我用FTM0两个通道分别和正交解码的两个端口用线接起来,串口发送还是没有读到计数值,求指导~

FTM0没有正交解码的
回复 支持 反对

使用道具 举报

5

主题

28

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1283
威望
709
贡献
328
兑换币
273
注册时间
2012-3-27
在线时间
123 小时
毕业学校
广西大学
10#
发表于 2013-7-16 07:35:39 | 只看该作者
接上拉电阻了没 编码器输出端
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
698
威望
337
贡献
195
兑换币
196
注册时间
2012-11-1
在线时间
83 小时
9#
发表于 2013-7-9 16:56:44 | 只看该作者
automate 发表于 2013-7-7 23:49
软件给? 建议分清输入输出····

现在可以测速的了,但是一直会出现突变  FTM1_QDCTRL   |=  FTM_QDCTRL_PHAFLTREN_MASK;                        FTM1_QDCTRL   |=  FTM_QDCTRL_PHBFLTREN_MASK;   
这两句话不是滤波使能吗?可是突变的数值让车子一直在点头,写了滤波也没有用,
有没有啥好用的方法能改正一下~先谢谢拉~                  


回复 支持 反对

使用道具 举报

20

主题

72

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4139
威望
2153
贡献
820
兑换币
436
注册时间
2012-10-24
在线时间
583 小时
8#
 楼主| 发表于 2013-7-7 23:49:26 | 只看该作者
cyp 发表于 2013-7-7 19:24
void FTM1_QUAD_Iint(void)
{
    PORTA_PCR8= PORT_PCR_MUX(6); // 设置引脚A12引脚为FTM1_PHA功能  
...

软件给? 建议分清输入输出····

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 15:02 , Processed in 0.082034 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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