智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 41810|回复: 60
打印 上一主题 下一主题

[软件类] K60的正交解码

  [复制链接]

4

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1908
威望
1080
贡献
490
兑换币
439
注册时间
2010-9-9
在线时间
169 小时
跳转到指定楼层
1#
发表于 2012-2-27 09:38:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨晚弄了一个晚上调出了K60的正交脉冲计数,和大家分享一下,不知车已经立起来的高手有没有也用K60,还用什么方法的呢?/*==============================================================================
功能:FTM1、FTM2模块双路正交脉冲计数;
引脚:PTA12、PTA13、PTA10、PTA11
内容:初始化FTM1、FTM2的正交解码功能;
参数:无
==============================================================================*/
void FTM_QUAD_init()
{
    /*开启端口时钟*/
    SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;

    /*选择管脚复用功能*/
    PORTA_PCR12 = PORT_PCR_MUX(7);
    PORTA_PCR13 = PORT_PCR_MUX(7);
    PORTA_PCR10 = PORT_PCR_MUX(6);
    PORTA_PCR11 = PORT_PCR_MUX(6);

    /*使能FTM1、FTM2时钟*/
    SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;
    SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;

    FTM1_MOD = 14000; //可根据需要设置
    FTM2_MOD = 14000;

    FTM1_CNTIN = 0;
    FTM2_CNTIN = 0;

    FTM1_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
    FTM2_MODE |= FTM_MODE_WPDIS_MASK; //禁止写保护
    FTM1_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能
    FTM2_MODE |= FTM_MODE_FTMEN_MASK; //FTMEN=1,关闭TPM兼容模式,开启FTM所有功能

    FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
    FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
    FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
    FTM2_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式

    FTM1_SC |= FTM_SC_CLKS(3);  //选择外部时钟
//   FTM1_CONF |=FTM_CONF_BDMMODE(3); //可根据需要选择
    FTM2_SC |= FTM_SC_CLKS(3);
//   FTM2_CONF |=FTM_CONF_BDMMODE(3);

}


查看FTM1_CNT、FTM2_CNT就可知道当前计数值,查看TOFDIR、QUADIR可以知道转向。

17

主题

202

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1235
威望
626
贡献
417
兑换币
385
注册时间
2012-11-9
在线时间
96 小时
推荐
发表于 2013-3-31 17:02:51 | 只看该作者
文圣利 发表于 2013-2-21 11:58
正交解码计数,好像会丢,计的数比脉冲累加器得到数要小

你讲的丢是什么意思
回复 支持 0 反对 1

使用道具 举报

1

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
威望
191
贡献
80
兑换币
20
注册时间
2012-1-20
在线时间
13 小时
2#
发表于 2012-3-15 19:12:22 | 只看该作者
楼主 这个脉冲计算对吗 怎么接IO口啊  还有是什么沿 记数啊 谢谢啦
回复 支持 反对

使用道具 举报

4

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1908
威望
1080
贡献
490
兑换币
439
注册时间
2010-9-9
在线时间
169 小时
3#
 楼主| 发表于 2012-3-15 21:16:29 | 只看该作者
它是两路脉冲的所有边沿都检测的,所以所得计数器的值要除以4才能得到实际脉冲数
回复 支持 反对

使用道具 举报

2

主题

181

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1872
威望
1048
贡献
360
兑换币
250
注册时间
2011-11-11
在线时间
232 小时
4#
发表于 2012-3-16 20:09:23 | 只看该作者
好东西 辛苦楼主勒
回复 支持 反对

使用道具 举报

0

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
833
威望
514
贡献
147
兑换币
6
注册时间
2012-2-21
在线时间
86 小时
毕业学校
昆明理工大学
5#
发表于 2012-3-28 20:10:23 | 只看该作者
lmptr可以计数
回复 支持 反对

使用道具 举报

4

主题

69

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1908
威望
1080
贡献
490
兑换币
439
注册时间
2010-9-9
在线时间
169 小时
6#
 楼主| 发表于 2012-4-2 13:51:24 | 只看该作者
我这里的情况指电磁组的双路脉冲检测方案
回复 支持 反对

使用道具 举报

15

主题

277

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6479

论坛元老奖章活跃会员奖章

QQ
威望
1282
贡献
4791
兑换币
495
注册时间
2011-10-10
在线时间
203 小时
7#
发表于 2012-4-4 18:26:57 | 只看该作者
陈胜利 发表于 2012-3-28 20:10
lmptr可以计数

最近在调脉冲计数,,,,有点问题求指教啊大虾~
回复 支持 反对

使用道具 举报

0

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
833
威望
514
贡献
147
兑换币
6
注册时间
2012-2-21
在线时间
86 小时
毕业学校
昆明理工大学
8#
发表于 2012-4-5 23:29:35 | 只看该作者
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1515
威望
778
贡献
323
兑换币
18
注册时间
2011-9-9
在线时间
207 小时
9#
发表于 2012-4-5 23:56:57 | 只看该作者
请问这是实现了加减计数器的功能吗?
回复 支持 反对

使用道具 举报

5

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1214
威望
591
贡献
485
兑换币
19
注册时间
2011-11-22
在线时间
69 小时
10#
发表于 2012-5-4 14:48:58 | 只看该作者
大侠,查看FTM1_CNT、FTM2_CNT当前计数值,查看TOFDIR、QUADIR可以知道转向
TOFDIR、QUADIR是哪两个啊?新手求指导~ 谢谢
我将CNT读取在INT型中 但没有符号 一直是正值~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 01:42 , Processed in 0.056054 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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