Beruflich Dokumente
Kultur Dokumente
梁 源
杭州鹏远电子有限公司
摘要:
16-bit MCU MSP430 of Texas Instruments produced since 1996, its powerful function and well
performance have been known by all of people. Its Flash MCU is grow fast at present and its
memory and other resource have characteristics different from other MCU. TIMER_A is an
important module in MSP430 Flash. This article combines some detailed examples to explain
TIMER_A application in temperature measure, PWM generates, serial communcation. It has
some research value.
一 概述
目前 美国德州仪器所出的所有 FLASH 单片机都含有 TIMER_A 它是程序设计的核心 它由一个
十六位定时器和多路比较/捕获通道组成 每一个比较/捕获通道都可以以十六位定时器的定时功能为核心
进行单独的控制 具体可参照 MSP430X1XX Family User’s Guide 一书 同其它各类型单片机相比 MSP430
单片机的定时器 A 有以下特点
1 输入时钟可以有多种选择 可是是慢时钟 快时钟以及外部时钟
2 虽然没有自动重载时间常数功能 但产生的定时脉冲或 PWM 信号没有软件带来的误差
3 不仅能捕获外部时间发生的时间 还可锁定外部时间发生时的高低电平 给我们的使用带来了很
大的方便
4 有适用于串行通讯的功能特征
二 在产品设计中的应用
TIMER_A 有 4 种工作方式 停止 上升 连续 上升
Xin
下降方式 其中上升和上升下降方式需要和比较/捕获通道 0 Rref=10K
CCR0 共同使用 我们可以根据实际的需要 灵活选用 P2.0 Xout
Rsensor
当多个捕获/比较通道都以 16 位的定时时间作为时标时 P2.1
1.测量阻性传感器 MSP430F1121
图1
在采用廉价的单片机进行产品设计时 用 RC 充放电原理测量已是很平常的事 然而 由于单片机比
较廉价 往往分辨率很低 MSP430 的 FLASH 型单片机中 采用 16 位的 TIMER_A 定时器 再加上内部
的比较器 至少能达到 10 位的 AD 测量精度
传统的办法采用充电的办法测量 为增加分别率 我们取内部的 0.25Vcc 作为阈值电压 采用放电的
办法可分别测出参考电阻 Rref 的放电时间 Tref,传感器电阻 Rsensor 的放电时间 Tsensor.则有下面的公式
Rsensor Tsensor Rref / Tref
下面的程序 定时器 A 的输入频率采用约 1MHz 左右的 DCO 由于电阻大小和放电时间成正比 对
测得的时间进行比较 就可以确定温度传感器的范围 如图 1 所示 当温度电阻大于参考电阻时 P1.0
输出低电平 反之 P1.0 输出高电平 如果我们温度传感器采用负温度系数的 103AT 参考电阻取 10K
那末当温度大于 25 度时 LED 亮 小于 25 度时 LED 灭 如果我们要测量具体的温度数值 可以在下面的
程序基础上增加温度传感器电阻值计算和查表程序就可以了
#include "msp430x11x1.h"
Ref equ 001h ; P2.0 接参考电阻
Sensor equ 002h ; P2.1 接温度传感器
ORG 0F000h ;程序开始
RESET mov #300h,SP ;初始化堆栈指针
Init_Sys mov #WDTPW+WDTHOLD,&WDTCTL ;停看门狗
SetupP1 bic.b #001h,&P1OUT ; P1.0 输出低电平
bis.b #001h,&P1DIR
SetupP2 bic.b #Sensor+Ref,&P2OUT ; 传感器 参考电阻输出低电平
bis.b #Sensor+Ref,&P2DIR
SetupCA mov.b #CARSEL+CAREF0+CAON,&CACTL1 ;比较器的参考电压 0.25Vcc
mov.b #P2CA0,&CACTL2 ; P2.3 比较器
SetupTA mov #TASSEL1+TACLR,&TACTL ; SMCLK 作为 TAR 输入
eint
Mainloop mov.b #Sensor,R14 ; R14 为放电引脚
call #Measure
mov R14,R15 ; R15 保存传感器放电时间
mov.b #Ref,R14 ; R14 为放电引脚
call #Measure
cmp R14,R15 ; R14 保存参考电阻的放电时间
jlo ON ; 比较是否温度大于 25 度
OFF bic.b #001h,&P1OUT ;小于等于 25 度,P1.0 输出低
jmp Mainloop
ON bis.b #001h,&P1OUT ;大于 25 度 P1.0 输出高
jmp Mainloop
Charge bis #MC1,&TACTL ; TIMER_A 工作在连续方式
bis.b #Ref,&P2OUT ;P2.0(Ref)输出高电平
bis.b #Ref,&P2DIR
mov #TAR,&CCR1 ;充电 5ms
add. #5000,&CCR1
mov #CCIE,&CCTL1 ;允许中断
bis #LPM0,SR ;等待中断唤醒
bic.b #Ref,&P2DIR ;P2.0( Ref)进入高阻态
bic.b #Ref,&P2OUT
Discharge mov #CM1+CCIS0+CAP+CCIE,&CCTL1 ;TIMER_A 工作于捕获方式
push &TAR ;保存现行的定时器数值
bis.b R14,&P2DIR ;开始放电
bis #LPM0,SR ;进入睡眠等待中断
mov &CCR1,R14 ;计算放电时间
sub @SP+,R14
bic.b #Sensor+Ref,&P2DIR ;进入高阻态
clr &CCTL1 ;禁止捕获
bic #MC1,&TACTL ;停定时器
ret
TAX_ISR add &TAIV,PC ;中断服务
reti ; CCR0 没有时钟源
CCR1_ISR bic #LPM0,0(SP) ;返回时退出低功耗
reti
ORG 0FFFEh ;中断向量地址
DW RESET
ORG 0FFF0h ;Timer_A 中断向量地址
DW TAX_ISR
END
Vcc
2.用作 PWM 控制
利用 TIMER_A 做成的 PWM 能用软件任意改变占空比和
周期 当不需要修改占空比和时间时 不需要利用中断维持 PWM P2.0 PWM 输出
输出 TIMER_A 能自动输出 PWM. - P2.1
P1.2
三 结束语
MSP430 单片机的 TIMER_A 结构复杂,功能强大,它给开发人员提供了较多的灵活的选择余地.上面仅
是少数的几个例子,开发人员只要深入理解了 TIMER_A 的原理,就可以根据自己的产品的实际情况 发现
更多的应用方法
参考文献