智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2890|回复: 8
打印 上一主题 下一主题

关于正交解码的 代码的一些问题!!

[复制链接]

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

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

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
跳转到指定楼层
1#
发表于 2014-3-5 11:32:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*==============================================================================
功能: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可以知道转向。

那个TOFDIR  和QUADIR  是什么东西   (用的野火的老库)   也找不到啊   不知道怎么判断、
回复

使用道具 举报

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

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

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
2#
 楼主| 发表于 2014-3-5 11:32:31 | 只看该作者
查看FTM1_CNT、FTM2_CNT就可知道当前计数值,查看TOFDIR、QUADIR可以知道转向。

那个TOFDIR  和QUADIR  是什么东西   (用的野火的老库)   也找不到啊   不知道怎么判断
回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30686

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

威望
19819
贡献
7211
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
3#
发表于 2014-3-5 12:16:48 | 只看该作者
本帖最后由 huang91 于 2014-3-5 12:40 编辑

不顾原理只管程序必然会受人摆布。
blog.csdn.net/hcx25909/article/details/7339242
回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30686

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

威望
19819
贡献
7211
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
4#
发表于 2014-3-5 12:35:05 | 只看该作者
本帖最后由 huang91 于 2014-3-5 12:37 编辑

  1. void FTM2_QUAD_Iint(void)  
  2. {  
  3.          PORTA_PCR10= PORT_PCR_MUX(6); // 设置引脚A10引脚为FTM2_PHA功能  
  4.          PORTA_PCR11= PORT_PCR_MUX(6); // 设置引脚A11引脚为FTM2_PHB功能  
  5.          SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;//使能FTM2时钟  
  6.          FTM2_MODE |= FTM_MODE_WPDIS_MASK;//写保护禁止  
  7.          FTM2_QDCTRL|=FTM_QDCTRL_QUADMODE_MASK;//AB相同时确定方向和计数值  
  8.          FTM2_CNTIN=0;//FTM0计数器初始值为0  
  9.          FTM2_MOD=65535;//结束值  
  10.          FTM2_QDCTRL|=FTM_QDCTRL_QUADEN_MASK;//启用FTM2正交解码模式  
  11.          FTM2_MODE |= FTM_MODE_FTMEN_MASK;//FTM2EN=1   
  12.          FTM2_CNT=0;  
  13. }
复制代码

在周期性定时中断服务程序中,读取FTM2_CNT的值并清0计数值即可得到当前的转速,使用int变量保存,如为正数则为正转,负数则为反转。



回复 支持 反对

使用道具 举报

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

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

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
5#
 楼主| 发表于 2014-3-5 13:32:20 | 只看该作者
huang91 发表于 2014-3-5 12:35
在周期性定时中断服务程序中,读取FTM2_CNT的值并清0计数值即可得到当前的转速,使用int变量保存,如为正 ...

能吗????
回复 支持 反对

使用道具 举报

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

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

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
6#
 楼主| 发表于 2014-3-5 19:23:53 | 只看该作者
huang91 发表于 2014-3-5 12:35
在周期性定时中断服务程序中,读取FTM2_CNT的值并清0计数值即可得到当前的转速,使用int变量保存,如为正 ...

你的代码  好像不对啊。
回复 支持 反对

使用道具 举报

47

主题

1053

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
30686

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

威望
19819
贡献
7211
兑换币
2325
注册时间
2012-2-1
在线时间
1828 小时
7#
发表于 2014-3-5 20:18:08 | 只看该作者
头上两只角 发表于 2014-3-5 19:23
你的代码  好像不对啊。

这不是我的代码,地址看3L。我看了程序,漏了句选择外部时钟。
回复 支持 反对

使用道具 举报

93

主题

1166

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7879

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

QQ
威望
4108
贡献
2161
兑换币
2705
注册时间
2013-8-14
在线时间
805 小时
8#
 楼主| 发表于 2014-3-6 08:33:26 | 只看该作者
huang91 发表于 2014-3-5 20:18
这不是我的代码,地址看3L。我看了程序,漏了句选择外部时钟。

怎么添加。。。。
回复 支持 反对

使用道具 举报

20

主题

153

帖子

0

精华

高级会员

Rank: 4

积分
857
威望
447
贡献
234
兑换币
274
注册时间
2014-4-3
在线时间
88 小时
毕业学校
河南理工
9#
发表于 2014-5-20 22:17:25 | 只看该作者
huang91 发表于 2014-3-5 12:35
在周期性定时中断服务程序中,读取FTM2_CNT的值并清0计数值即可得到当前的转速,使用int变量保存,如为正 ...

小哥能不能给个完整的程序啊,感谢啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 11:04 , Processed in 0.053732 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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