智能车制作

标题: 谁来教教我用定时器... [打印本页]

作者: 尕玍紿    时间: 2014-3-14 11:19
标题: 谁来教教我用定时器...
K60的定时器really her mother's多!搞得我好乱..谁来帮我总结下?
麻烦 下载表格填写,再上传...造福后代吧!
[attach]56794[/attach]
我暂时就想知道这些...
麻烦知道多少 填写多少,一代代完善下去...当然有兴趣也能增加自己觉得重要的。

下面是我细看PIT模块的随笔,然后问点问题。

Period Interrupt Timer(PIT)周期中断定时器
寄存器名称命名规则:PIT_寄存器名字+定时器序号(若有),如:PIT_MCR  , PIT_TCTRL0

1.MCR:Module Control Register模块控制寄存器
0bit FRZ:调试时冻结时钟,‘0’不冻结‘1’冻结
1bit MDIS:禁止模块时钟。 ‘0’使能;‘1’禁止

2.LDVALn:Load Value number 加载计数值寄存器n
定时器计数值,决定中断溢出周期。写入新值不会立即重启计数,要等当前计数完毕。若要立即重
启,结合TCTRLn的 TEN 位。

3.CVALn:Current Value number 当前计数值寄存器n
实时计数值。定时器被禁止时,这个计数器的数据不可靠。

4.TCTRLn: Timer Control number 定时器控制寄存器n
0bit TEN 定时器使能。(注:禁止再打开会使定时器重新计数,而不是接着上次的继续计数。)
1bit TIE 定时器中断使能,开启中断会立即产生一个中断事件。

5.TFLGn:Timer Flag number 定时器标志位寄存器n
0bit TIF 定时器中断标志,计数溢出时硬件自动置位。写‘1’清除标志,写‘0’无效。
(注:一使能定时器中断‘TIE=1’,TIF立即被置位,即产生一个中断。故使能定时器中断后,应立即进行清除TIF位)
(注:每次响应中断后要手动清除该位,否则中断会被一直重复响应。)

我用这个PIT定时器来实现定时。
问题一:我想问如果我要暂停计时,是不是禁止模块时钟就行了(MCR寄存器的1bitMDIS位)?再次使能模块时钟能不能从上次暂停的状态继续计时下去??还是会重新加载计数值,重新计时/计数?还有其他办法吗?因为这种方法会影响到其它定时器的工作。

问题二:数据手册上的对于TIE位的描述不太理解,原话:
TIE:定时器中断使能位。在一个中断未决定时(TIF 已设置),开启中断将会立即产生一个中断事件。
为了避免这个发生,相关的 TIF 标志必须先清除。
0  来自定时器 n 的中断请求被禁止
1  不论 TIF 是否被设置,中断都会被请求
有两处不解的:
1.“在一个中断未决定时(TIF 已设置),开启中断将会立即产生一个中断事件。为了避免这个发生,相关的 TIF 标志必须清除。”这样操作能避免吗?TIF先清除,再开启中断,这时不就立即产生一个中断时间了,又由于事先TIF被清除了,这时候TIF就再次被置位(即开启中断产生的中断事件将被响应),这样一来反而是无法避免啊!
(问题一本来是想用禁止中断的方法来实现的,可是这里说开启中断会立即产生中断,这样的话采用这种方法就不合理了。)
2.位含义的描述:“1  不论 TIF 是否被设置,中断都会被请求”这是什么意思?按常理,这位的意思应该是允许响应中断,即当TIF==1时,响应中断;TIF==0时不响应。可是它这话是这意思嘛?

问题三:
禁止和开启定时器(TEN == 1)会立即重启计数;那禁止和开启中断会导致重启计数吗?我理解是,对计数没影响,只要模块时钟(MDIS) 和 定时器(TEN)都使能了,那计数就一直在执行,开不开启中断只影响TIE在计数溢出时会不会 被置位。












欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2