前面讲了几个寄存器,现在说说定时器A的三种功能
定时器
定时器主要是配置tatcl
在
TASSELx 选择时钟源(这里X是因为有两位来控制,或者查询IAR里面的430的头文件找简单的书写方式,有对应的 #define)
这边我一般都是是选用ACLK,到时候用外部中断唤醒CPU
对应时钟就是分频,选择IDx(1/2/4/8)
选择MCx,来控制16位计数器计数模式。
这里面会用到寄存器中的TACCR0,这是一个16位的寄存器,可以存0~65536之中的任意值,(一般根据计算机器周期等等的,输入一个值,来使TAR计数器累加到咱们计算出啦的数字后产生中断)比如,我知道计数器数数字数到32768需要一秒时间,那我就可以在taccr0中赋值32768,当tar中的值等于32768的时候,就产生中断。在这之前,中断使能哦,还有总中断开关打开。
一般这样就可以工作了,如果需要中断的操作的,配置一下TAIE 和 TAIFG,这个中断标志要软件清零,然而TACLR这个是用来复位TAR的,一般不用管,因为会自动清零
TAR寄存器是16位的计数用的寄存器,最大能存的值为65536(2^16),通俗点说就是用二进制来数数,从0,1,2,3…一直数到一定值
捕捉
捕捉一般是计算脉冲宽度啥啥啥的,打个比方,在一个高脉冲走了5S。这个时候我们用捕捉功能可以玩一下,当脉冲上升沿的时候产生个中断,当下降沿的时候再产生中断的时候,我们就可以知道我们的振荡器数了几个数字,你要是说如果数数超过65536呢,我们在寄存器里面有个捕捉溢出位,到时候溢出一次,加上65536再把溢出位清零就好
一般作用测量两个上升沿之间的时间,或者两个下降之间的时间,或者一段脉冲的时间
捕捉功能怎么配置呢:
首先
在TACCTLx中:(有三个TACCTL0、TACCTL1、TACCTL2)
eg:TACCTL1
1.cap位置位(1)
2.CMx选择捕获方式;
3.CCISx选择捕获那个引脚,一般就是CCI1A(这个是eg:TACCTL1)
4.SCS置一,同步模式
5中断使能和标志,置一
比较
一般默认就是比较功能:
首先
1.cap清零;默认就是0
2.中断使能和标志置一;
3.taccr1赋值;
输出输出模式设置
主要由:
outmodx 位,8中状态可以选择
out 如果outmodx 位是000,则这位直接控制输出状态,0输出低;1输出高;
输出模式主要是PWM作用,具体可以看下数据手册