智能车制作
标题:
9s12xs128中的计数器
[打印本页]
作者:
wanglin0215
时间:
2010-3-27 22:37
标题:
9s12xs128中的计数器
哪位高手能传授一下如何使用9s12xs128中的计数器。感觉书上说得有些乱,我只想实现定时计数功能,如何使用ECT模块?
作者:
Kevin.Gjp
时间:
2010-3-27 23:09
同样疑惑!
作者:
i852774842
时间:
2010-4-9 21:33
datasheet
作者:
zhoulxm
时间:
2010-4-10 20:24
作者:
l7q3
时间:
2010-4-12 21:05
xs128没有ECT模块,而是分成了PIT和TIM两个模块。PIT的作用是产生周期中断,与51单片机的定时器功能一样,只是不需像51那样在中断中要重赋定时器初值。计数是在TIM中实现,xs128只有16位一个脉冲累加器PACA(与IOC7脚相连),而dg128还有PACB,比如你用光电编码器测速,编码器传回一系列脉冲,由PACA记录脉冲数,有一个脉冲就记一个数(这与你设定的触发沿有关)。另外,每个引脚都有一个对应的TCx寄存器,当相应引脚触发时,TIM模块中的自由计数器TCNT中的计数值就存到对应的TCx中(读回TCx),再触发一次TCNT再存入TCx(再读回),两次相减就为两次触发的间隔时间。
作者:
wanglin0215
时间:
2010-4-13 19:21
回复
5#
l7q3
那请问 有定时器模块吗?我想在一定时间内产生中断,在中断程序中读取基数器内的值,然后清中断。
作者:
l7q3
时间:
2010-4-16 17:15
你的想法可以,你所说的定时器模块就是PIT,比如要让单片机每50ms产生一次中断,按照Datasheet上的公式计算出你要写入PIT寄存器的值,也就是PITMTLD和PITLD这两个寄存器,对他们赋值后别忘了选通计时通道、开中断等等。发生中断后,在这个PIT中断函数中读PACNT就行,并清除PIT的中断标志。在xs128中,定时器用的是PIT模块,脉冲计数用的是TIM模块内的脉冲计数器PACNT;不像dg128,这两个功能都在同一个ECT模块中完成。在这一点上要跳出按dg128的思路去想xs128误区
作者:
wanglin0215
时间:
2010-4-17 00:04
回复
7#
l7q3
我还是有些疑虑,我看的手册上说只有TIM模块,用的是PT0~PT7口,你说的PIT模块是指什么?我觉得应该还是TIM模块吧,只是使用内部定时中断?
作者:
l7q3
时间:
2010-4-17 15:18
你到飞思卡尔官网下一个XS128手册,完整的大约9.2M,里面第347页就是:Chapter 12 Periodic Interrupt Timer (S12PIT24B4CV1),简称PIT。PIT模块没有外部引脚与之对应,它只起到单片机内部定时中断的功能。比如通过光电编码器(它传回的脉冲信号接在PT7,PACNT与PT7相连)测速时,定时计数初始化时既要配置PIT,又要配置TIM中的PACTL寄存器(此寄存器使能脉冲计数),PIT中断内读PACNT。
可能我对你在一楼提得问题有些误解,你要用定时计数做什么?是测速吗?是不是要在某段固定时间内读回计数值?这个计数值是不是与外部与元件(比如光电编码器)有关?
作者:
wanglin0215
时间:
2010-4-17 18:08
回复
9#
l7q3
谢谢大侠,我是想测速,在某段固定时间内读回计数值,这个计数值与光电编码器有关。
作者:
l7q3
时间:
2010-4-18 10:55
不客气
作者:
huachou
时间:
2010-4-19 15:15
楼上的大侠 让我受教了 谢谢
作者:
zhanggang269
时间:
2010-4-21 17:15
都来贴一帖!
作者:
sixi2010
时间:
2010-4-23 17:43
学习中
作者:
wangguoxiao
时间:
2010-4-24 00:34
解答很详细
作者:
aren3
时间:
2010-4-24 07:46
学习了!
明白多了,谢谢!
作者:
xianglong
时间:
2010-4-24 15:24
谢谢
作者:
rcsun
时间:
2010-4-30 07:50
xuexi
作者:
zhizhi
时间:
2010-5-6 22:30
正解
作者:
lshzhangkai
时间:
2010-5-7 11:51
路过,记下了...
作者:
lanshh
时间:
2010-5-9 11:22
xiexie
作者:
lanshh
时间:
2010-5-9 11:22
谢谢
作者:
lanshh
时间:
2010-5-9 22:23
没有ECT啊
作者:
Cedar
时间:
2010-5-10 16:11
谢谢楼主啊
作者:
安杰
时间:
2010-5-13 12:23
budong
作者:
ssdkzh
时间:
2010-5-21 00:22
茅塞顿开
作者:
zhizhi
时间:
2010-7-15 20:50
受教了。。。。。。。。。
作者:
xiaofei558008
时间:
2010-7-16 01:30
PT7计数!
//计数器初始化
void PAInit(void)
{
TSCR1_TFFCA=1; //快速清除flag:PAOVF PAIF
TIOS_IOS7=1; //单独使用16位脉冲累加器
OC7M_OC7M7=0;; //注意此时必须令IOS7=1,OC7M7=0,OM7=0,OL7=0
TCTL1_OM7=0;
TCTL1_OL7=0;
PACTL_PAMOD=0; //事件计数方式
PACTL_PEDGE=1; //PT7引脚上的出现上升沿时脉冲累加器计数器加1
//PACTL_PAOVI=1; //允许脉冲累加器产生溢出时引发中断
//PACTL_PAI=1; //允许PT7引脚上出现上升沿时引发中断
PACNT = 0x0000;
PACTL_PAEN=1; //启动脉冲累加器A
}
作者:
hcx8911
时间:
2010-7-16 20:15
这才是真正的帖子,谢谢!
作者:
清水鱼儿
时间:
2010-7-21 08:56
谢谢
作者:
xueyaping
时间:
2010-11-11 13:01
谢谢大侠
作者:
zhangjiarui
时间:
2010-11-28 20:09
好,谢谢
作者:
求学6
时间:
2011-2-18 12:04
谢谢,豁然开朗了
作者:
bhwxl
时间:
2011-2-26 13:57
回复
9#
l7q3
请问一下,当PIT模块关闭重启或某一通道关闭后重新使能,micro timer和对应通道的timer是不是重新开始计数?还有重新使能会不会占用很长时间?我用示波器测,发现计数结束关闭模块然后再使能,周期比预算的要大很多倍。这是怎么回事?谢谢大侠
作者:
夏欢
时间:
2011-2-26 14:01
学习了
作者:
sajoenklgfja
时间:
2011-3-14 19:04
l7q3 是高手啊,解释得很清楚明白,谢谢啦
作者:
雾里飘月
时间:
2011-3-16 10:01
回复
1#
wanglin0215
你多多的去看别人的程序,一般他们的程序都有注释的,看着程序去找寄存器,一般的使用方式都是固定的
作者:
范莹
时间:
2011-3-16 14:56
受教。。。。。。
作者:
xujiahua1231
时间:
2011-3-18 19:47
谢谢 收益很多 学习
作者:
qaabq
时间:
2011-7-11 13:42
谢谢
作者:
liuofsanzhong
时间:
2012-1-4 18:39
好帖得顶!!!
作者:
顺⑦.zì繎.
时间:
2013-8-8 21:36
l7q3 发表于 2010-4-12 21:05
xs128没有ECT模块,而是分成了PIT和TIM两个模块。PIT的作用是产生周期中断,与51单片机的定时器功能一样,只 ...
大侠,我想请问一下,如果要用计数器计一下输入的高电平的时间宽度,需要怎么样做呢?或者有没有更好的方法?
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2