搜索
bottom↓
回复: 10

马老师:一个16位定时器如何产生四路不同变化频率的方波?

[复制链接]

出0入0汤圆

发表于 2010-7-15 09:02:53 | 显示全部楼层 |阅读模式
马老师,我看到美国一个控制器采用MCS196NT,利用内部的一个16位定时器产生了四路不同变化频率的方波,这四个方波的频不同相,变化范围都是200-1000HZ,他是采用196单片机的EPA,其实就是比较模块来产生的.
这个问题,我想来想去,就是想不通,怎么能实现得了,即使实现了这个要求,也要占用很多CPU时间,但是美国原来的系统是个比较复杂的系统,196还要做其他很多的事情,所以显然他并没有浪费太多CPU时间,所以请教一下马老师,能否给个思路,我始终想不出名目,谢谢.

出0入0汤圆

发表于 2010-7-15 13:26:45 | 显示全部楼层
搭车同问

我也想问问马老师,

用M128来做6路模拟量采集,

同时对应输出6路200-1000Hz的频率信号,

不知道用M128的timer1,timer3的输出比较不清零的方式可否实现

出0入0汤圆

发表于 2010-7-17 14:32:35 | 显示全部楼层
首先说明我没有玩过MCS196NT,不了解它内部16位定时器具体的结构和扩展的功能,所以下面的方法只是用AVR的参考方案。

其次,需要正确了解和解释的2个概念是“不占用很多CPU时间”和“这四个方波的频不同相”。
分析说明如下:只产生一个方波的话,可以根本就不占用CPU的时间,但这不存在不同相的问题。利用一个定时器配合多个比较器产生多个方波,就要利用比较匹配中断了。只要匹配中断服务非常短,是否就是满足“不占用很多CPU时间”这个条件?这个需要具体的问题具体的分析,并且与CPU的时钟与产生的方波个数与频率相关的。利用这样的方法产生的多个方波,如果不考虑中断之间的相互影响的话,多个方波相互之间的相位为同相或差180度。“不同相”是什么概念或要求,从lz的帖子中我不能理解到底是指什么。

下面用M128作为例子:它的16位计数器T1匹配了3个16位比较寄存器,所以我只能给出同时产生3个200-1000HZ方波的一种方法。

基本思路:
T1使用普通定时器模式工作,禁止溢出中断,它只是不停的从0到65536重复。利用每个比较器产生一个方波:设置比较寄存器的值是产生方波半周期的值,设置比较匹配输出方式为Toggle方式(即取反模式),允许使用比较匹配中断,匹配中断服务中只需要做一次加法,比较寄存器的值加上产生方波半周期的值。3个比较器的工作方式都是一样的,只是半周期的值不同。

进一步考虑与计算。
使用中断是必须的了,那么为了提高CPU的工作效率,CPU采用最高16M的时钟(这个不是提高效率,只是做事情更快一点,或把分母加大)。

产生3个方波CPU的占用率估计:

最多的占用率是产生3个1000HZ的方波:在1000HZ(1ms时间内)需要6次中断。每次中断需要16个指令周期(响应和退出各7个,16位加法2个),6次中断为16*6 =96个指令周期。对于16M的AVR,一个指令周期为1/16M = 0.0625us,1ms时间总可以执行的指令数为1000/0.0625 = 16000个.此时的3个方波发生占用率为96/16000 = 0.6%

最少占用率是产生3个200HZ的方波:在200HZ(5ms时间内)需要6次中断。每次中断同样为16个指令周期(响应和退出各7个,16位加法2个),6次中断为16*6 =96个指令周期。对于16M的AVR,一个指令周期为1/16M = 0.0625us,而5ms时间总可以执行的指令数为5000/0.0625 = 80000个.此时的3个方波发生占用率为96/80000 = 0.12%

另外对于“不同相”的考虑。以2个方波200HZ和400HZ为例,如果要把400HZ的上升沿与200HZ的上升/下降沿错开一定的时间认为是“不同相”的话,只要设置这两个比较器第一次的值不同就可以了,比如,第一个初值为0,而第2个初值为25,以后中断服务中还是各自加各自的半周期就可以了。

实际上,利用溢出中断还可以产生第4路的方波的。如果有一路产生固定不变的,最低频率的方波,还是比较简单:参考上面的方法,适当计算一下,再利用溢出中断,占用率也不会增加多少。但4路都可调就比较麻烦。不建议没有真工夫者尝试。

出0入0汤圆

发表于 2010-7-20 09:55:22 | 显示全部楼层
感谢马老师的回复

马老师给出使用T1产生3个200-1000Hz的方波方法我明白了

但是对于M128来说,T1和T3是完全相同的,都是一个16位计数器匹配了3个16位比较寄存器,能否T1和T3同时使用来产生6路200-1000Hz

的方波呢(无需考虑各路方波的相位问题)??

出0入0汤圆

发表于 2010-7-24 18:06:14 | 显示全部楼层
马老师不屑回复我的问题吗?

出0入0汤圆

发表于 2010-7-26 12:07:53 | 显示全部楼层
回复【4楼】19781011
马老师不屑回复我的问题吗?
-----------------------------------------------------------------------

实在不明白,你到底学过些什么,怎么学的。
这个应该是你自己考虑的。手上有学习板吗?先做个实验,用T1看能否产生3路,然后T1+T3,

出0入0汤圆

发表于 2010-7-26 21:58:22 | 显示全部楼层
实在不明白

回答个能与不能就这么难。能给出能的理由,不能给出不能的理由,具体由学生们来实验,您动动手敲几个字应该不难吧。这几个字不会比您5楼回复的字多吧。

我是学的不怎么样,学的好的话也可以向您一样打击那些学的不好的人了,而不会在此让您打击。

只是我对您这句“下面用M128作为例子:它的16位计数器T1匹配了3个16位比较寄存器,所以我只能给出同时产生3个200-1000HZ方波的一种方法”话感兴趣,既然您用M128为例子,从字面理解,您只能用M128产生3路方波,方法是用T1的三个比较寄存器;但是M128还有T3,和T1完全相同,用您的理论似乎可以实现6路方波,可为何您说只能实现3路呢???

是您的话让人产生歧义,一句话解释起来并不难,难的是高高在上的心,当然,您不说,也是您的权利。

出0入0汤圆

发表于 2010-7-26 22:59:11 | 显示全部楼层
回复【6楼】19781011
实在不明白
回答个能与不能就这么难。能给出能的理由,不能给出不能的理由,具体由学生们来实验,您动动手敲几个字应该不难吧。这几个字不会比您5楼回复的字多吧。
我是学的不怎么样,学的好的话也可以向您一样打击那些学的不好的人了,而不会在此让您打击。
只是我对您这句“下面用m128作为例子:它的16位计数器t1匹配了3个16位比较寄存器,所以我只能给出同时产生3个200-1000hz方波的一种方法”话感兴趣,既然您用m128为例子,从字面理解,您只能用m128产生3路方波,方法是用t1的三个比较寄存器;但是m128还有t3,和t1完全相同,用您的理论似乎可以实现6路方波,可为何您说只能实现3路呢???
是您的话让人产生歧义,一句话解释起来并不难,难的是高高在上的心,当然,您不说,也是您的权利。
-----------------------------------------------------------------------

哥们,你还是学生么?还是说踏入社会后没受过挫折?自尊心过于强了吧。

出0入0汤圆

发表于 2010-7-27 16:37:59 | 显示全部楼层
回复【6楼】19781011
实在不明白
回答个能与不能就这么难。能给出能的理由,不能给出不能的理由,具体由学生们来实验,您动动手敲几个字应该不难吧。这几个字不会比您5楼回复的字多吧。
我是学的不怎么样,学的好的话也可以向您一样打击那些学的不好的人了,而不会在此让您打击。
只是我对您这句“下面用m128作为例子:它的16位计数器t1匹配了3个16位比较寄存器,所以我只能给出同时产生3个200-1000hz方波的一种方法”话感兴趣,既然您用m128为例子,从字面理解,您只能用m128产生3路方波,方法是用t1的三个比较寄存器;但是m128还有t3,和t1完全相同,用您的理论似乎可以实现6路方波,可为何您说只能实现3路呢???
是您的话让人产生歧义,一句话解释起来并不难,难的是高高在上的心,当然,您不说,也是您的权利。
-----------------------------------------------------------------------

你这样会伤着马老师的,马老师的意思是让你自己动手做一下,光问别人是问不出结果的,关键还是得靠自己!!!

出0入0汤圆

发表于 2010-7-27 23:26:00 | 显示全部楼层
朋友,帮帮忙吧。这里都是技术帖子,请从头到尾仔细理解。

LZ位的问题是:“看到美国一个控制器采用MCS196NT,利用内部的一个16位定时器产生了四路不同变化频率的方波....”
所以我给出参考,用M128的“一个16位定时器”产生三路....
我并没有说用M128只能产生三路。
M128还有TO、T2呢,如果加上软件控制I/O,一片M128能产生N路......

出75入4汤圆

发表于 2010-7-28 15:33:57 | 显示全部楼层
让人无语,马老师给你解释的很详细了。不可能事事都要别人做好了,给你现成的。自己学着实际看看手册,实际动手做做。自己动动脑子
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 10:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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