智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 24841|回复: 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个坑啊

20

主题

72

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4139
威望
2153
贡献
820
兑换币
436
注册时间
2012-10-24
在线时间
583 小时
2#
 楼主| 发表于 2013-7-6 21:45:20 | 显示全部楼层
cyp 发表于 2013-7-5 16:58
请问FTM1 和FTM2都要分别给脉冲吗?

看你用几个通道了,两个编码器,就两个都要给了
回复 支持 反对

使用道具 举报

20

主题

72

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4139
威望
2153
贡献
820
兑换币
436
注册时间
2012-10-24
在线时间
583 小时
3#
 楼主| 发表于 2013-7-7 19:12:02 | 显示全部楼层
cyp 发表于 2013-7-7 18:47
可是我用FTM0两个通道分别和正交解码的两个端口用线接起来,串口发送还是没有读到计数值,求指导~


软件,确保你的程序配置正确,正确的计数模式,设置成增计数模式

硬件,每个FTM正交解码模块都要有两个输入,其中一个输入为固定的高电平,另一个接编码器输出

回复 支持 反对

使用道具 举报

20

主题

72

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4139
威望
2153
贡献
820
兑换币
436
注册时间
2012-10-24
在线时间
583 小时
4#
 楼主| 发表于 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-5 05:41 , Processed in 0.064735 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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