发新帖我要提问
12
返回列表
打印

定时器增计数模式和连续计数模式

[复制链接]
楼主: wuhany
手机看帖
扫描二维码
随时随地手机跟帖
21
wyjie| | 2016-11-27 22:26 | 只看该作者 回帖奖励 |倒序浏览
在连续计数模式中,很多时候会用到CCR0、CCR1等信号,闹钟的例子最形象了,在周期循环定时中,CCR0、CCR1对应不同时刻的事件。这就是430定时器最大的特点,在一个循环中可以产生多个不同的定时事件。

使用特权

评论回复
22
jlyuan| | 2016-11-27 22:27 | 只看该作者
递增模式时,CCRx不能设为最大值.这一点是乎规格书上有明确说明,不过我没试过.

使用特权

评论回复
23
dengdc| | 2016-11-27 22:29 | 只看该作者
CCR0 += 50000;  这句程序是什么意思?

使用特权

评论回复
24
jiahy| | 2016-11-27 22:30 | 只看该作者
CCRO的最大值不是65536么,怎么能不断地增加?

使用特权

评论回复
25
shimx| | 2016-11-27 22:31 | 只看该作者
还是每次进入定时中断,CCRO会清零?

使用特权

评论回复
26
shimx| | 2016-11-27 22:32 | 只看该作者
lz这个问题明白了吗,我也不明白这个问题,+50000后就超出65535了呢

使用特权

评论回复
27
shimx| | 2016-11-27 22:43 | 只看该作者
个人认为增计数模式跟连续计数模式没多大区别的

使用特权

评论回复
28
liliang9554| | 2016-11-27 22:45 | 只看该作者
增计数模式只能设置一个CCR0(小于65535)来产生一个中断/事件。

使用特权

评论回复
29
午夜粪车| | 2016-11-27 22:46 | 只看该作者
连续模式可以设置CCR0,CCR1(小于65535)等来产生多个中断,这样就可以产生时间间隔(占空比)不同的方波了。

使用特权

评论回复
30
午夜粪车| | 2016-11-27 22:47 | 只看该作者
至于+=50000的问题的解释:当进入中断后,CCR0 +=50000,这时CCR0=10 0000,超过了16位最大值65535了,这时硬件会把多出的高16位截掉,剩下低16位,即10 0000&0x0000FFFF=0x86A0=34464,即下一次定时器计数值TAR要和34464比较。计数器TAR也是16位的,当记到65535再加1后他就会自动变为0,直到记到34464,和CCR0值一样后又发生一次中断,这样的话定时器的中断时间间隔永远保持在了50000。

使用特权

评论回复
31
huangchui| | 2016-11-27 22:49 | 只看该作者
如果在中断中不 +=50000的话,那么以后的中断间隔就是65535了。

使用特权

评论回复
32
zhenykun| | 2016-11-27 22:50 | 只看该作者
如果直接是 =50000的话,那么以后的中断间隔就是50000+(65535-50000)=65535,和上面效果一样了。

使用特权

评论回复
33
jlyuan| | 2016-11-27 22:51 | 只看该作者
刚才我在msp430f5438A上写程序跑了一下,验证了说的是对的。效果非常的好。

使用特权

评论回复
34
dengdc| | 2016-11-27 22:53 | 只看该作者
连续模式,除了计数到设置的CCRO,CCR1时产生中断,在计数到65535时也会产生中断?

使用特权

评论回复
35
lizye| | 2016-11-27 22:58 | 只看该作者
不会产生这个中断的

使用特权

评论回复
36
shimx| | 2016-11-27 22:58 | 只看该作者
跟楼上各位的学习的了,定时器的这集中工作模式其实不难的

使用特权

评论回复
37
wuhany|  楼主 | 2016-11-27 22:59 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
38
米尔豪斯| | 2016-11-28 17:05 | 只看该作者
这个就是控制CCR0的,看看芯片手册

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则