智能车制作

标题: 【求助!快崩溃了】求大神指点下K60的两路正交解码 [打印本页]

作者: 忆枫    时间: 2014-5-28 01:45
标题: 【求助!快崩溃了】求大神指点下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可以知道转向。

我很纠结是不是编码器连错了,我两根信号线没做任何处理直接连的FTM1模块的两个引脚,是不是应该加个上拉电阻.......还是不能这么连?
还是我编码器有问题,我用的型号是OME-100-1N?
跪求大神指点一二,没多少时间了:'(:'(

作者: allenanswerzq    时间: 2014-5-28 01:57
可以用示波器看看两根信号线是不是相差90度。
作者: 忆枫    时间: 2014-5-28 02:01
allenanswerzq 发表于 2014-5-28 01:57
可以用示波器看看两根信号线是不是相差90度。

如果相位相差90度,两个信号直接连到FTM两个引脚上就行了吗?

作者: allenanswerzq    时间: 2014-5-28 02:41
忆枫 发表于 2014-5-28 02:01
如果相位相差90度,两个信号直接连到FTM两个引脚上就行了吗?

有些引脚是不能正交解码的。。比如A11和A10。

作者: 忆枫    时间: 2014-5-28 11:41
allenanswerzq 发表于 2014-5-28 02:41
有些引脚是不能正交解码的。。比如A11和A10。

10和11不是FTM2模块么,应该可以的啊。不是只有FTM0不能正交解码的么?

作者: Traveling_light    时间: 2014-5-28 13:05
我用的是B0,B1和B18,B19。   FTM1_CNT、FTM2_CNT除了大小是还有正负的,即方向,所以只要这两个量就行了。主函数里初始化一下这个函数就能用这两个量了
作者: 忆枫    时间: 2014-5-28 13:53
Traveling_light 发表于 2014-5-28 13:05
我用的是B0,B1和B18,B19。   FTM1_CNT、FTM2_CNT除了大小是还有正负的,即方向,所以只要这两个量就行了。 ...

能不能加个QQ交流一下?

作者: Traveling_light    时间: 2014-5-28 23:14
忆枫 发表于 2014-5-28 13:53
能不能加个QQ交流一下?

1390424927   我不是大神哦,不过小问题应该还是能解决的

作者: zkm123    时间: 2014-6-23 10:20
lz解决了么 我们遇到同样的问题啦  而且代码和你复制的是一个 。。。
作者: 忆枫    时间: 2014-6-28 18:10
zkm123 发表于 2014-6-23 10:20
lz解决了么 我们遇到同样的问题啦  而且代码和你复制的是一个 。。。

解决了,直接用的野火的库了。

作者: 翼目    时间: 2014-6-30 09:15
忆枫 发表于 2014-6-28 18:10
解决了,直接用的野火的库了。

野火库怎么用正交解码,求楼主指教

作者: 夏辰羲    时间: 2016-1-31 10:11
这个编码器好像好少人用,  才100P/R    不知道够用没
作者: 夏辰羲    时间: 2016-1-31 10:11
本帖最后由 夏辰羲 于 2016-1-31 10:12 编辑

这个编码器好像好少人用,  才100P/R    不知道够用没  ,我做的是直立E车,想换来用用
作者: Mr.Iron    时间: 2016-3-7 21:35
忆枫 发表于 2014-6-28 18:10
解决了,直接用的野火的库了。

楼主,我是FTM1正交解码没有读数,直接用的野火函数,FTM2正常的,并且用的是测试正常的编码器,板子也正常。后来直接上拉电阻直接K60还是没读数,楼主觉得是什么问题?






欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2