智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4942|回复: 8
打印 上一主题 下一主题

[光电] FTM正交解码模块测速!!大家看看怎么回事

[复制链接]

4

主题

57

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4053
威望
1471
贡献
866
兑换币
824
注册时间
2012-8-18
在线时间
858 小时
毕业学校
湘潭大学
跳转到指定楼层
1#
发表于 2013-4-2 16:50:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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;  

4

主题

57

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4053
威望
1471
贡献
866
兑换币
824
注册时间
2012-8-18
在线时间
858 小时
毕业学校
湘潭大学
2#
 楼主| 发表于 2013-4-2 16:52:00 | 只看该作者
我用QUADMODE=1;时即B相用于方向,我给拉高了,即一直为加计数,这样不知道可不可以啊??
回复 支持 反对

使用道具 举报

68

主题

718

帖子

0

精华

跨届大侠

火云邪神

Rank: 10Rank: 10Rank: 10

积分
6644

论坛元老奖章

QQ
威望
3359
贡献
2001
兑换币
765
注册时间
2011-8-24
在线时间
642 小时
3#
发表于 2013-4-2 17:20:26 | 只看该作者

回帖奖励 +3

我直接用short int 保存 FTM_CNT,如果一段时间内正转脉冲数大于反转,则CNT为正值脉冲数,反之为反
回复 支持 反对

使用道具 举报

4

主题

179

帖子

0

精华

高级会员

Rank: 4

积分
878
威望
486
贡献
268
兑换币
205
注册时间
2012-5-24
在线时间
62 小时
毕业学校
大学
4#
发表于 2013-4-2 19:28:25 | 只看该作者

回帖奖励 +3

在学习中。。。。。。
回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
5#
发表于 2013-4-2 19:50:40 | 只看该作者

回帖奖励 +3

为什么不用脉冲累加呢?
回复 支持 反对

使用道具 举报

4

主题

57

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4053
威望
1471
贡献
866
兑换币
824
注册时间
2012-8-18
在线时间
858 小时
毕业学校
湘潭大学
6#
 楼主| 发表于 2013-4-3 13:28:51 | 只看该作者
脉冲累加只有一路计数器啊?(低功耗定时器模块)
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
威望
108
贡献
66
兑换币
70
注册时间
2012-12-26
在线时间
15 小时
毕业学校
常州大学
7#
发表于 2013-4-6 15:15:07 | 只看该作者
有程序原地址吗,给个呗
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1096
QQ
威望
559
贡献
363
兑换币
361
注册时间
2012-12-2
在线时间
87 小时
8#
发表于 2013-4-25 21:19:11 | 只看该作者
请问怎么接引脚啊,我只测一路
回复 支持 反对

使用道具 举报

1

主题

222

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1050
威望
520
贡献
332
兑换币
347
注册时间
2013-11-15
在线时间
99 小时
9#
发表于 2014-5-9 18:16:01 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 01:47 , Processed in 0.217908 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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