注册 登录
查看: 1030|回复: 6

[K60] K60 正交解码不准

[复制链接]
发表于 2013-9-8 23:54:14 | 显示全部楼层 |阅读模式
K60正交解码 使用欧姆龙500线编码器(红树伟业) AB相接10K上拉 加100PF电容滤波到地
转一圈一般有5-8个的脉冲的误差 正反转误差更加严重 求解惑
代码如下
  /*开启端口时钟*/
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
/*选择管脚复用功能*/
PORTA_PCR12 = PORT_PCR_MUX(7);  //FTM1A相
PORTA_PCR13 = PORT_PCR_MUX(7);  //FTM1B相
PORTA_PCR10 = PORT_PCR_MUX(6);  //FTM2A相
PORTA_PCR11 = PORT_PCR_MUX(6);  //FTM2B相

/*使能FTM1、FTM2时钟*/
SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;
SIM_SCGC3|=SIM_SCGC3_FTM2_MASK;
FTM1_MOD = 65535; //可根据需要设置
FTM2_MOD = 65535;
FTM1_CNTIN = 0;
FTM2_CNTIN = 0;
FTM2_QDCTRL|=FTM_QDCTRL_PHBFLTREN_MASK; //打开B的滤波器
FTM2_QDCTRL|=FTM_QDCTRL_PHAFLTREN_MASK; //打开A的滤波器
FTM1_QDCTRL|=FTM_QDCTRL_PHBFLTREN_MASK; //打开B的滤波器
FTM1_QDCTRL|=FTM_QDCTRL_PHAFLTREN_MASK; //打开A的滤波器

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; //模式1启用
FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; //使能正交解码模式
FTM2_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK; //模式1启用
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);

回复

使用道具 举报

发表于 2013-9-8 23:59:00 | 显示全部楼层
500线,太高,老是容易出问题的,你换成200线或者以下,应该没问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-9 00:05:58 | 显示全部楼层
微粒子 发表于 2013-9-8 23:59
500线,太高,老是容易出问题的,你换成200线或者以下,应该没问题

我用来作角度传感器 精度要求高一点 200线手上没有。。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 00:29:34 | 显示全部楼层
c6661176 发表于 2013-9-9 00:05
我用来作角度传感器 精度要求高一点 200线手上没有。。

你试试 lptmr ,我之前用500 线的 也不行,后面换了 200线的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-9 10:51:05 | 显示全部楼层
恐发之际 发表于 2013-9-9 00:29
你试试 lptmr ,我之前用500 线的 也不行,后面换了 200线的

K60只有一个LPTMR不够用 而且可以有方向计数么 我看手册好像是只能累积脉冲值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-10 00:06:57 | 显示全部楼层
发现问题原来是读了FTM1_CNT之后忘记清零了。。 继续读就会不准

一开始我还以为是编码器的回旋误差 详见帖子
http://www.amobbs.com/forum.php? ... 6%E7%A0%81%E5%99%A8

此帖终结
回复 支持 反对

使用道具 举报

发表于 2013-9-10 09:18:51 | 显示全部楼层
c6661176 发表于 2013-9-10 00:06
发现问题原来是读了FTM1_CNT之后忘记清零了。。 继续读就会不准

一开始我还以为是编码器的回旋误差 详见 ...

原来如此~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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