MSP430定时/计数器TimerA中断解惑

刚学过51单片机,再来学习MSP430F149,在定时器中断这一块,对于初学者还是有一定难度的,这是因为430的定时器配置更为灵活,比51要复杂好多,下面我把我初学时遇到的一些问题写下来供大家参考。

1、首先,用户指南中有Three configurable capture/compare registers这句话,这表明430有三个捕获比较单元可以用来配置,那么多几个捕获比较单元有什么用?答案是:非 常有用,就好比百米短跑的秒表,它如果只能够计一个人的时间显然是不够的,多几个这样的单元用户可以根据自己需求灵活开发。

2、很多初学者搞不懂什么是捕获模式,什么是比较模式,打个比喻,捕获模式,就像100米短跑,当你到达终点就触发中断(秒表按下停止键),捕获到的就是你的耗时。

 而比较模式就像是给定你确定的时间(例如1分钟),当到达时间之后就会触发中断。

 捕获模式适合用于测量时间间隔,测量脉冲,速度。而比较模式适合产生周期信号。

3、当Timer_A计数计满的时候需要手动清零吗?

 答案是:不需要!看下图:

MSP430定时/计数器TimerA中断解惑_第1张图片

           用户手册中写道:TACLR是定时器复位位,当计满的时候,会自动清零。

4、其次,关于定时器中断有两种,一种是溢出中断TAIFG,另一种是捕获比较中断CCIFG,这两种到底有什么区别,尤其是寄存器配置过程中TAIE和CCIE到底使用哪一个,让很多初学者头疼,下面我就解释清楚;
MSP430定时/计数器TimerA中断解惑_第2张图片

这是在Continues模式(连续增计数)下,TAIFG和CCIFG产生的条件图,文字也讲的很清楚了,TAIFG is set when the timer counts from 0xffff to zero,就是说当定时器

从最大值0xffff到0的时候,溢出中断标志位会置1,也就是当定时器计满的时候再等上一个时钟周期(1h)之后置1,这个计满,是指16位的定时器计到最大值0xffff,而不是用户设定的比较值CCR0.

而CCIFG是当定时器计数到CCR0的时候置1,CCR0的值由用户自己设定。

在Up增计数模式下,由于定时器不可能计满(0xffff),他只能计到CCR0,因此CCIFG触发的时间和TAIFG触发的时间只差一个时钟周期。

当Timer=CCR0的时候捕获比较中断TAIFG置1,而当Timer从CCR0重新归零的时候TAIFG置1.

当用户使用中断的时候,需要去配置相应的中断允许位。

一定要搞懂一件事情,那就是中断标志位和中断使能位,中断标志位相当于高考分数线,而中断使能位相当于高考准考证,只有先拿到准考证(先使能中断允许),然后参加考试过了分数线(触发了中断),最终才能上大学(响应中断)。当然上大学(响应中断)也不是必要的,可以采用查询法(不领准考证,自己做套试卷,然后根据标准答案得分),当查询到符合条件(考试成绩合格),那么说明你一样具备大学生的入学能力(处理相应事件)。

用户手册中有关于TAIFG和CCIFG的使能及标志位:

MSP430定时/计数器TimerA中断解惑_第3张图片

如上图所示:寄存器TACTL的TAIE是溢出使能位。TAIFG是标志位。
MSP430定时/计数器TimerA中断解惑_第4张图片

如上图所示:CCIFG是捕获比较中断标志,而CCIE是捕获比较中断使能。


作者:NWAFU_lzh
来源:CSDN
原文:https://blog.csdn.net/wzz110011/article/details/78433270
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(MSP学习资料)