打印

用定时器或者PWM产生波形,如何可以准确的控制波形的次数呢

[复制链接]
1981|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
喵喵小星人|  楼主 | 2015-12-20 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xiaolong12| | 2015-12-20 15:20 | 只看该作者
可以把产生的波形再进定时器或者PWM进行捕获,在捕获中断中计数,到达数量停止输出

使用特权

评论回复
板凳
gaoxiansheng| | 2015-12-20 22:56 | 只看该作者
PWM或者定时器都有溢出中断的,溢出一次,计数一次即可

使用特权

评论回复
地板
叶覃| | 2015-12-21 19:11 | 只看该作者
gaoxiansheng 发表于 2015-12-20 22:56
PWM或者定时器都有溢出中断的,溢出一次,计数一次即可

以前就用的这个方法。有效果,不过好像不太准。

使用特权

评论回复
5
chrise23| | 2015-12-23 08:48 | 只看该作者
gaoxiansheng 发表于 2015-12-20 22:56
PWM或者定时器都有溢出中断的,溢出一次,计数一次即可

万一输出脉冲的世界大于溢出一次的时间,需要溢出计次才能到达时间怎么办?

使用特权

评论回复
6
gaoxiansheng| | 2015-12-23 08:57 | 只看该作者
叶覃 发表于 2015-12-21 19:11
以前就用的这个方法。有效果,不过好像不太准。

应该中断是很准确的呀,为什么会不准呢?

使用特权

评论回复
7
gaoxiansheng| | 2015-12-23 08:59 | 只看该作者
chrise23 发表于 2015-12-23 08:48
万一输出脉冲的世界大于溢出一次的时间,需要溢出计次才能到达时间怎么办? ...

那就需要在中断中记录溢出次数了。溢出次数*中断溢出时间

使用特权

评论回复
8
yysforever| | 2015-12-23 22:50 | 只看该作者
使用两个timer1,2,设为互为主从,形成了环形的闭环互控形式。Tim1产生PWM输出,同时tim1溢出作为Tim2的预分频输入。tim2设为单脉冲模式,当计数达到ARP的值就产生一次溢出并停止自身的计数。而tim2的自动停止反过来控制tim1的enable,这样就会连同tim1也关停了。

使用特权

评论回复
9
叶覃| | 2015-12-24 09:08 | 只看该作者
gaoxiansheng 发表于 2015-12-23 08:57
应该中断是很准确的呀,为什么会不准呢?

中断也有时间的,而且中断还可以被别的中断所打断。

使用特权

评论回复
10
huafei123| | 2015-12-24 09:11 | 只看该作者
一个用来输出,一个用来计数,确实是个好办法,用两个定时器就解决了,不错。

使用特权

评论回复
11
MTCN2013| | 2015-12-24 19:00 | 只看该作者
可以接上一个外部中断口,在中断中计数。

使用特权

评论回复
12
chrise23| | 2015-12-24 19:07 | 只看该作者
gaoxiansheng 发表于 2015-12-23 08:59
那就需要在中断中记录溢出次数了。溢出次数*中断溢出时间

我这么试了试,确实还是有效果的,不过还是需要完善。

使用特权

评论回复
13
Creas_Tall| | 2015-12-25 08:03 | 只看该作者
对PWM脉冲计数可能困难一些。因为计数器对脉冲宽度有一定要求,而PWM的脉冲占空比一般在0-100%之间可调,在占空比很低或者很高的时候计数都不准确。如果能够在PWM的脉宽中断服务程序里加上计数程序就准确了。

使用特权

评论回复
14
gaoxiansheng| | 2015-12-26 08:50 | 只看该作者
叶覃 发表于 2015-12-24 09:08
中断也有时间的,而且中断还可以被别的中断所打断。

请注意,这个被打断是不可避免的,但是不影响他的时效性,你可以把他设置为高优先级别

使用特权

评论回复
15
gaoxiansheng| | 2015-12-26 08:51 | 只看该作者
chrise23 发表于 2015-12-24 19:07
我这么试了试,确实还是有效果的,不过还是需要完善。

这个需要各方面都配合好,我以前就是这么干的。

使用特权

评论回复
16
单片机菜菜| | 2015-12-26 09:02 | 只看该作者
我觉得如果用编码器实现的话,计数是很准确的。编码器的脉冲是把一个圆周分成若干等分,一般是几百到几十万。每转过一个角度,就输出一个脉冲。把编码器输出接到计数器上,这样可以达到精准控制的结果。

使用特权

评论回复
17
dongbaohui| | 2015-12-26 17:35 | 只看该作者
同楼上所说的,外部加个计数器就好了。

使用特权

评论回复
18
叶覃| | 2016-1-18 22:55 | 只看该作者
gaoxiansheng 发表于 2015-12-26 08:50
请注意,这个被打断是不可避免的,但是不影响他的时效性,你可以把他设置为高优先级别 ...

不管如何,时间长了,肯定就不准了。

使用特权

评论回复
19
喵喵小星人|  楼主 | 2017-4-25 09:14 | 只看该作者
gaoxiansheng 发表于 2015-12-20 22:56
PWM或者定时器都有溢出中断的,溢出一次,计数一次即可

这个办法不错,不过得用到全局变量了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

175

帖子

0

粉丝