智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5132|回复: 12
打印 上一主题 下一主题

【揭秘】Kinetis多路硬件 脉冲累加 的实现方法

  [复制链接]

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15175

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11098
贡献
1417
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
跳转到指定楼层
1#
发表于 2012-3-30 13:31:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Kinetis只有一路低功耗脉冲累加通道确实蛋疼,但是人类的智慧是无穷的,刚刚发现已经有牛人实现了多达10路的脉冲累加,确实佩服,可惜没有提供源码。

虽然这个方法有点大材小用,但是我也在这里说下我的思路吧:
要想不占用CPU、不进中断函数实现硬件计数功能,首先想到的是DMA功能。
首先开启一路用GPIO口触发的DMA通道,上升下降沿均可。
指定什么源地址和目的地址均可,设置最长的循环计数。
接下来只要开启PIT定时中断,在定时器中断函数里读取DMA循环计数值便可了。
不过DMA循环计数器最大计数为32767,要考虑溢出问题。

涉及到的DMA寄存器是:DMA_TCD_CITER_ELINKNO
开启DMA的GPIO触发后,便可定时读取该寄存器的低15位即可。
因此只要是能用DMA触发的GPIO口均可实现脉冲累加。
DMA的底层调用驱动可以见http://www.znczz.com/thread-97046-1-1.html

不知道野火兄是不是这个思路,欢迎各位指教。


补充内容 (2012-3-30 14:06):
源码见这里:
http://www.znczz.com/forum.php?m ... 9&fromuid=77863

6

主题

110

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1037
威望
387
贡献
590
兑换币
8
注册时间
2011-2-16
在线时间
30 小时
2#
发表于 2012-3-30 13:37:37 | 只看该作者
咔咔,顶楼主。等野火公布了就知道了
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15175

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11098
贡献
1417
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
3#
 楼主| 发表于 2012-3-30 13:46:01 | 只看该作者
blueskywalker 发表于 2012-3-30 13:37
咔咔,顶楼主。等野火公布了就知道了

同等。
回复 支持 反对

使用道具 举报

15

主题

432

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2256

推广达人奖章优秀会员奖章活跃会员奖章

威望
1243
贡献
529
兑换币
71
注册时间
2011-10-8
在线时间
242 小时
4#
发表于 2012-4-1 19:53:31 | 只看该作者
回复 支持 反对

使用道具 举报

4

主题

443

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1849
威望
1067
贡献
556
兑换币
57
注册时间
2011-8-31
在线时间
113 小时
5#
发表于 2012-4-1 21:04:44 | 只看该作者
回复 支持 反对

使用道具 举报

7

主题

39

帖子

0

精华

金牌会员

华硕三队

Rank: 6Rank: 6

积分
2550
威望
1322
贡献
674
兑换币
217
注册时间
2011-9-7
在线时间
277 小时
6#
发表于 2012-4-1 23:53:04 | 只看该作者
用ftm啊,一个用来生成pwm,另两个计数
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15175

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11098
贡献
1417
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
7#
 楼主| 发表于 2012-4-2 01:12:47 | 只看该作者
old00brish 发表于 2012-4-1 23:53
用ftm啊,一个用来生成pwm,另两个计数

我们说的是不经过CPU、不中断,朋友。只用硬件计数。
回复 支持 反对

使用道具 举报

7

主题

39

帖子

0

精华

金牌会员

华硕三队

Rank: 6Rank: 6

积分
2550
威望
1322
贡献
674
兑换币
217
注册时间
2011-9-7
在线时间
277 小时
8#
发表于 2012-4-2 13:56:52 | 只看该作者
头一次听说ftm是软件 要占用内核资源
回复 支持 反对

使用道具 举报

7

主题

39

帖子

0

精华

金牌会员

华硕三队

Rank: 6Rank: 6

积分
2550
威望
1322
贡献
674
兑换币
217
注册时间
2011-9-7
在线时间
277 小时
9#
发表于 2012-4-2 14:02:57 | 只看该作者
我想楼主的ftm耗内核的意思是用捕捉触发中断吧?
用捕捉作为ftm硬件计数器的时钟源,就能实现三路计数了啊,cpu根据需要读计数器值并清零就好了
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15175

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11098
贡献
1417
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
10#
 楼主| 发表于 2012-4-2 15:27:28 | 只看该作者
old00brish 发表于 2012-4-2 13:56
头一次听说ftm是软件 要占用内核资源

还有,我们讨论的是脉冲累加。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 16:27 , Processed in 0.059773 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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