智能车制作
标题:
FTM正交解码模块测速!!大家看看怎么回事
[打印本页]
作者:
真实的谎言
时间:
2013-4-2 16:50
标题:
FTM正交解码模块测速!!大家看看怎么回事
我用FTM 的正交解码模块测速,因为学校买的是单相的编码器,我用QUADMODE=1;时即B相用于方向,我给拉高了,即一直为加计数,用A相接编码器输出;
可问题是 我用FTM输出PWM时和示波器左下角的那个1000Hz输出时测得和理论值几乎一样的数据,可一接上编码器,稍微一动就会有较大的数,上千啊,而且会保留,再动时又会成为0等,变化是乱的啊
代码如下
PORT_PCR_REG(PORTA_BASE_PTR, 8) = PORT_PCR_MUX(6); // 选择PTA8的正交解码功能
PORT_PCR_REG(PORTA_BASE_PTR, 9) = PORT_PCR_MUX(6);
PORT_PCR_REG(PORTA_BASE_PTR, 8) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
PORT_PCR_REG(PORTA_BASE_PTR, 9) |= PORT_PCR_PE_MASK | PORT_PCR_PS_MASK ; //开弱上拉
SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK; //使能FTM1时钟
FTM1_MODE |= FTM_MODE_WPDIS_MASK; // 写保护禁止
FTM1_QDCTRL |= FTM_QDCTRL_QUADMODE_MASK; // B向确定方向A向计数
//FTM1_QDCTRL &= FTM_QDCTRL_PHAPOL_MASK; //PHAPOL=0:普通极性
//FTM1_QDCTRL |= FTM_QDCTRL_PHBPOL_MASK; //PHBPOL=1:反向极性
FTM1_QDCTRL |= FTM_QDCTRL_PHAFLTREN_MASK; //PHAFLTREN=1:A相输入滤波使能。
FTM1_QDCTRL |= FTM_QDCTRL_PHBFLTREN_MASK; //PHAFLTREN=1:B相输入滤波使能。
FTM1_FILTER |= FTM_FILTER_CH0FVAL(5);
FTM1_FILTER |= FTM_FILTER_CH1FVAL(5);
FTM1_CNTIN = 0; // FTM1计数器初始值为0
FTM1_MOD = 65535; // 结束值
FTM1_QDCTRL |= FTM_QDCTRL_QUADEN_MASK; // 启用FTM1正交解码模式
FTM1_MODE |= FTM_MODE_FTMEN_MASK; // FTM1EN=1
FTM1_CNT = 0;
作者:
真实的谎言
时间:
2013-4-2 16:52
我用QUADMODE=1;时即B相用于方向,我给拉高了,即一直为加计数,这样不知道可不可以啊??
作者:
☆_。寒泉..+
时间:
2013-4-2 17:20
我直接用short int 保存 FTM_CNT,如果一段时间内正转脉冲数大于反转,则CNT为正值脉冲数,反之为反
作者:
强者
时间:
2013-4-2 19:28
在学习中。。。。。。
作者:
qinlu123
时间:
2013-4-2 19:50
为什么不用脉冲累加呢?
作者:
真实的谎言
时间:
2013-4-3 13:28
脉冲累加只有一路计数器啊?(低功耗定时器模块)
作者:
tong__yi
时间:
2013-4-6 15:15
有程序原地址吗,给个呗
作者:
Moved_to_move
时间:
2013-4-25 21:19
请问怎么接引脚啊,我只测一路
作者:
小海海
时间:
2014-5-9 18:16
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2