智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 10993|回复: 34
打印 上一主题 下一主题

再论ECT,详细讨论累加器,个人心得

  [复制链接]

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
跳转到指定楼层
#
发表于 2008-7-2 20:44:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
<><BR><FONT size=3>前几天对ECT比较概括地讨论了一下其功能作用,虽然给出了PACB16位测速的原代码,论坛和博客上有不</FONT></P><P><FONT size=3>少朋友对累加器有不少疑问,还有朋友发邮件给我。现在将问题一一说明。</FONT></P><P><FONT size=3>1、脉冲累加器有哪些?是用来干什么的?<BR>&nbsp;&nbsp; 在HCS12DGXXX里,ECT有两个16位脉冲累加器,有4个8位脉冲累加器。这里的多少位,是说明结果寄</FONT></P><P><FONT size=3>存器是多少位的。16位的脉冲累加的结果可以达到65535,8位的可以达到255<BR>&nbsp;&nbsp; 一般是用来测外部脉冲信号个数和频率的。比如测速,速度传感器把速度转化为脉冲,测得脉冲就可</FONT></P><P><FONT size=3>以知道速度了。还有一些传感器,比如测功率的芯片,输出也是脉冲,通过单位时间里测脉冲的个数,便</FONT></P><P><FONT size=3>知道负载的功率了。</FONT></P><P><FONT size=3>2、累加器,输入捕捉,IO口跳变引发的中断三个都可以记脉冲,如何利用?<BR>&nbsp;&nbsp; 首先要明确,中断是除CPU之外的资源,当中断申请了并允许中断之后CPU便放下手上的活先完成中断</FONT></P><P><FONT size=3>里的事情,所以:中断不能太多,PC跳来跳去没有好处;其次,中断在精简,这里有几个原因:大家想一</FONT></P><P><FONT size=3>下,假如,优先级一样的两个中断,间隔很短的时间触发,但前一个中断太长了,迟迟没有RTI跳出来,</FONT></P><P><FONT size=3>那么后一个中断就牺牲了。中断有它的实时性.再就是降低主函数的效率。<BR>&nbsp;&nbsp; 而累加器就是解决了这个问题。它是单独的一个模块,无需进中断(溢出中断稍后再谈),在定时范</FONT></P><P><FONT size=3>围内直接取累加结果,有效地提高了程序的效率。但是累加器有它自身的缺陷,精度不高。一是因为它</FONT></P><P><FONT size=3>自身可能做过些数据的处理,二是16位累加器先取高位和先取低位的结果在高频脉冲情况下可能不是一</FONT></P><P><FONT size=3>样的。<BR>&nbsp;&nbsp; 输入捕捉也可以记脉冲,IC功能比较地强大。通过分频的设置就可设置自由计数器的参考时间,自由</FONT></P><P><FONT size=3>计数器提供时间参考。比如前一个脉冲的下降沿进了中断,此时TCNT为data1,后一个肪冲的下降沿也进</FONT></P><P><FONT size=3>了中断,此时TCNT为data2,那么data2-data1就是二者的间隔时间。但是会有个问题,如果data2比</FONT></P><P><FONT size=3>data1小,即TCNT溢出了一次,怎么办?这个不用但心,无符号数的情况下,14-15=254.对于16位的数</FONT></P><P><FONT size=3>运算一样的道理。呵呵,TCNT溢出一次好解决,多次呢?对了,TOF溢出中断,记录TCNT溢出的次数,再</FONT></P><P><FONT size=3>做运算就行了。但是似乎没有那个必要了,TCNT本来就是16位的,这样一来,data2-data1就不知道是多</FONT></P><P><FONT size=3>少位了。<BR>&nbsp;&nbsp; 至于PortH,PORTJ,这几个I/O端口的中断相当于FS8位MCU里的键盘中断,做脉冲记数理论上也可以,</FONT></P><P><FONT size=3>但是必需要提供参考时间。但是仔细一想,何必呢?用它做其它的事,资源利用分配合理才行。有现成</FONT></P><P><FONT size=3>的脉冲累加器不用,用它干嘛。用PORTH PORTJ口做外部硬件触发中断最好,比如摄像头的行中断,场中</FONT></P><P><FONT size=3>断;检查键盘是否按下等等。</FONT></P><P><FONT size=3>3、脉冲累加器,用8位还是16位?<BR>&nbsp;&nbsp; 这个要看怎么分配单片机的资源了。首先,8位的有4个累加器,16位的只有两个。如何选用PT0-7口</FONT></P><P><FONT size=3>的通道要具体情况具体分析。但有个原则:高频脉冲用16位的,低频的用8位的。8位的比16位的精度要</FONT></P><P><FONT size=3>高,据我个人测试,16位的在1S时间内有2%-3%的误差,8位的比它少。但是16位有它的优势,几乎不用</FONT></P><P><FONT size=3>考虑累加器溢出的情况。</FONT></P><P><FONT size=3>4、如何初始化累加器?<BR>&nbsp;&nbsp; 有以下几点需要配置:1、使能;2、设置上升沿下降沿触发计数;3是否级联;4结果寄存器清0<BR>至于ICSYS里的PACMX位看情况了。 </FONT></P><P><FONT size=3>5、8位累加器溢出的问题。<BR>&nbsp;&nbsp; 8位累加器是有溢出中断的,但只有PAC1和PAC3才有。具体的使用方法是:PACMX 为1,PAOVF为PAC3的</FONT></P><P><FONT size=3>溢出标志位,中断地址是$FFDC, $FFDD,PACTL (PAOVI)必须使能;PACMX = 1, PBOVF为PAC1的溢出标志</FONT></P><P><FONT size=3>位,中断地址是$FFC8, $FFC9,PBCTL (PBOVI)必须使能.<BR>&nbsp;&nbsp; PACMX=0时,默认情况下,上面的溢出中断指的是16位累加器的溢出中断。</FONT></P>

3

主题

489

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3662

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
1596
贡献
1138
兑换币
1050
注册时间
2013-1-30
在线时间
464 小时
34#
发表于 2013-10-6 10:20:40 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
227
威望
116
贡献
69
兑换币
77
注册时间
2013-7-22
在线时间
21 小时
毕业学校
湖北汽车工业学院
33#
发表于 2013-8-11 21:04:19 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
824
威望
404
贡献
250
兑换币
256
注册时间
2013-4-9
在线时间
85 小时
毕业学校
山东理工
32#
发表于 2013-8-5 10:59:51 | 只看该作者
请问怎么设置xs128捕捉特定端口的跳变沿的呢
回复 支持 反对

使用道具 举报

12

主题

211

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2971
威望
1636
贡献
787
兑换币
559
注册时间
2012-3-11
在线时间
274 小时
31#
发表于 2012-5-28 18:26:02 | 只看该作者
楼主的文章真难看啊
回复 支持 反对

使用道具 举报

10

主题

353

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
威望
1031
贡献
326
兑换币
60
注册时间
2012-2-23
在线时间
150 小时
30#
发表于 2012-5-1 23:56:49 | 只看该作者
顶!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

1

主题

95

帖子

0

精华

高级会员

Rank: 4

积分
932
QQ
威望
541
贡献
149
兑换币
12
注册时间
2011-1-23
在线时间
121 小时
29#
发表于 2012-2-9 20:28:30 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
227
威望
175
贡献
30
兑换币
0
注册时间
2010-11-5
在线时间
11 小时
28#
发表于 2011-2-6 23:38:46 | 只看该作者
好!
回复 支持 反对

使用道具 举报

6

主题

50

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
威望
338
贡献
746
兑换币
22
注册时间
2009-12-4
在线时间
26 小时
27#
发表于 2010-4-21 23:03:55 | 只看该作者
xs128也适用吗
回复 支持 反对

使用道具 举报

6

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
威望
344
贡献
34
兑换币
6
注册时间
2009-12-1
在线时间
17 小时
26#
发表于 2010-4-21 21:57:32 | 只看该作者
看了
回复 支持 反对

使用道具 举报

5

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
868
QQ
威望
326
贡献
506
兑换币
0
注册时间
2009-12-18
在线时间
18 小时
25#
发表于 2010-4-21 13:18:53 | 只看该作者
太感谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 08:25 , Processed in 0.385080 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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