一个定时器能实现两个不同频率吗?

[复制链接]
 楼主| spming 发表于 2007-2-27 13:47 | 显示全部楼层 |阅读模式
那位知者能不能告诉我:我想用一个定时器的两个通道的比较输出功能不能实现两个不同频率的输出?
张明峰 发表于 2007-2-27 15:58 | 显示全部楼层

可以

用TIM模块的output-compare功能,每次任一通道compare-match后响应中断为下一次compare设定输出电平和时间点。<br />频率不要太高且50%占空比的方波应该容易实现。
 楼主| spming 发表于 2007-2-27 16:54 | 显示全部楼层

不会吧好像不行的

张工你能肯定吗?我要的一个定时器&nbsp;&nbsp;同时&nbsp;输出两个&nbsp;不同&nbsp;的频率信号。
senny 发表于 2007-2-27 17:27 | 显示全部楼层

输出比较功能,应该不难实现的

  
谈的元 发表于 2007-2-27 19:59 | 显示全部楼层

十路都可以,看频率高低了

  
 楼主| spming 发表于 2007-2-27 20:07 | 显示全部楼层

我觉得不行你觉得行说明理由呀

我的频率是1HZ-1500HZ精度是1ZH,用一个定时器能同时输出两路不同的频率信号码?我感觉不行的,如果谁觉得行的话你能说出行的理由吗?
张明峰 发表于 2007-2-28 11:42 | 显示全部楼层

一个定时器一定可以实现

关键是要吃透TIM模块的工作原理,这一任务要利用TIM的比较输出功能,但难点在输出低频段信号,必须考虑16位定时器计数溢出的问题,要配合采用一些软件技巧。
 楼主| spming 发表于 2007-2-28 12:52 | 显示全部楼层

张工:

好的下面我们来具体的分析一下:<br />我们分两种方法来考虑:<br />1.利用输出比较模块功能实现两路的不同频率的实现,定时器的溢出时间决定了两路(不管是PWM模式还是比较输出模式)的频率。所以这样的话这种方法是肯定不行的。<br />2.利用定时器溢出中断在中断里置位相应的位,但是我的频率信号在1-1500HZ,以1HZ的方式循进,这样做的话即使浪费很多的资源去做(假如我现在想从1499HZ变到1500HZ你怎么做?你能保证精度吗?),也不大可能,能的话你就具体说。<br /><br /><br />我们首先要明确什么来决定频率然后再说精度现在我感觉你老是说用模块的比较输出功能。我感觉你还没有真正的理解一个定时器的两个通道的真正含义,你要明白的是只有一个定时器。我们只是讨论如有不当的地方请多包含,呵呵!。<br />
张明峰 发表于 2007-2-28 13:27 | 显示全部楼层

采取这种方法

<font color=#FF0000>定时器为0x0000-0xffff自由计数,不要管满量程溢出</font>。设定通道在某一时刻(例如0x5000)比较输出高电平1,在响应这一比较中断后将此通道设定在另一时刻(例如0xA000)输出低电平0,这样反复输出1和0交替,就得到了你要的特定频率信号。<br />0x5000&nbsp;-&nbsp;1<br />0xa000&nbsp;-&nbsp;0<br />0xf000&nbsp;-&nbsp;1<br />0x4000&nbsp;-&nbsp;0<br />0x9000&nbsp;-&nbsp;1<br />0xe000&nbsp;-&nbsp;0<br />...<br />
 楼主| spming 发表于 2007-2-28 14:27 | 显示全部楼层

好主意但是在溢出的时候要注意了

很好的方法,我知道了谢谢!我试试看效果怎么样.会不会在定时器溢出的时候出现什么不好的现象。
ayb_ice 发表于 2007-3-12 14:09 | 显示全部楼层

随便说说

&nbsp;&nbsp;频率不高的话,可以用软件实现很多路频率输出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

36

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

18

主题

36

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部