智能车制作

标题: K60正交解码脉冲不准 [打印本页]

作者: c6661176    时间: 2013-9-9 00:45
标题: K60正交解码脉冲不准
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-9 00:51
本帖最后由 ☆_。寒泉..+ 于 2013-9-9 00:53 编辑

呵呵,请查看寄存器设置,可以很准的
作者: new_life    时间: 2013-9-9 07:39
顶一下
作者: 热血男儿!    时间: 2013-9-9 08:31
编码器的精度不够,不一定就是500线。
作者: c6661176    时间: 2013-9-10 00:03
☆_。寒泉..+ 发表于 2013-9-9 00:51
呵呵,请查看寄存器设置,可以很准的

发现问题原来是读了FTM1_CNT之后忘记清零了。。 继续读就会不准

作者: c6661176    时间: 2013-9-10 00:04
热血男儿! 发表于 2013-9-9 08:31
编码器的精度不够,不一定就是500线。

发现问题原来是读了FTM1_CNT之后忘记清零了。。 继续读就会不准

一开始我还以为是编码器的回旋误差 详见帖子
http://www.amobbs.com/forum.php?mod=viewthread&tid=4749847&highlight=%E5%A2%9E%E9%87%8F%E5%BC%8F%E7%BC%96%E7%A0%81%E5%99%A8





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