智能车制作
标题:
编码器,正交解码
[打印本页]
作者:
DHTCL
时间:
2014-5-17 13:02
标题:
编码器,正交解码
我用的是正交解码,现在遇到了一个问题, FTM1_CNT, FTM2_CNT这两个值是左右电机的脉冲采集的数值,但是这两个值不能够从0变为负值,请问怎么解决?还有TOFDIR、QUADIR这两个量怎么查询,这两个量是电机的转向
代码如下
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= 0;
FTM2_CNT= 0;
}
作者:
allenanswerzq
时间:
2014-5-17 16:41
变量设为有符号的即可。。。
作者:
yayang2008
时间:
2014-5-17 20:01
很简单,设置个变量,当正向电压时,把脉冲数直接赋给变量,当施加到电机上的电压是负的时候,把采集脉冲数的负值负给变量,对变量进行积分,这样就可以有正有负了,得到的结果参与运算,
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2