新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于MSP430F11X的低功耗低成本实时时钟

基于MSP430F11X的低功耗低成本实时时钟

作者:时间:2012-02-22来源:网络收藏

晶体的指定负载电容也影响RTC的精度,晶体的负载电容是晶体所需电容的总和,而不是晶体所提供电容的总和,晶体需要适当的负载电容以便在指定的频率起振。所有的MSP430器件所用的32768Hz振荡器已经集成了额定电容值为12pF的负载。这就为晶体提供了全部12pF的负载,它意味着为了获取最佳的 RTC精度,必须指定所连接的32768Hz的晶体使用12pF的负载电容。

在RTC容限要求更高的应用领域,可以使用一个更易调整的电容,在制造时进行调节。

更高级别的陶瓷(即NP0型)电容和聚酯软片电容较适用于定时应用领域,因为它们和通用陶瓷电容相比具有更少的介质损耗和更佳的温度系数。

可扩展型

MSP430F111 是极低、低价格的微控制器,可理想的适用于器件。将MSP430作为RTC的一个主要优点是它与专用的RTC器件相比具有可扩展性。所有的 MSP430x11x期间都包括一个16位RISC CPU、16位看门狗定时器、16位定时器A(带3个捕捉/比较寄存器和模拟比较器)、最小128B的RAM、最小2Kb的ROM和最少14个脚通用 I/O口。很明显MSP430能提供其它专用RTC所无法比拟的灵活性。

除此之外,定时器A模块能提供斜率A/D转换、PWM输出和工作速率高达115200波特率的UART。看门狗定时器也能作为一个简单的定时器,并且通用I/O口和所有外围设备具有可扩展的中断能力。

软件设计

RTC的应用程序代码相当简单,包括一个初始化子程序、一个主循环、一个计算时、分、秒的计数子程序和一个处理来自定时器A的1s中断的中断服务子程序。

初始化子程序可初始化MSP430的的不同部分。看门狗定时器被禁止,定时器A模块被配置为可连续从0数到32768,每次到达32768时便给出一个中断。基本模块也被设置。

主循环是一个无穷循环,每当定时器A发出一个中断时,它便调用时钟计数子程序,否则将CPU置于休眠方式。当CPU休眠时,定时器A继续计数。

定时器A中断服务程序(ISR)处理状态寄存器(SR)位,该位在进入ISR之前被压入堆栈。这可使CPU在刚从ISR返回时处于有效方式,而不是休眠方式。ISR也可清零定时器A中断标志。

时钟计数子程序将每一个定时器A中断计为1秒。

源程序

STARTMOV#Stack,SP
CALL#Setup;初始化设置
MainloopBIS#LPM3,SR;CPU进入低模式3
CALL#Clock;中断处理后进入时钟计算
JMPMainloop;再次进入省电模式
ClockSETC;设进位位
DADC.bSECOND;秒加1
CMP.b#060d,SECOND;判断是否满1分钟
JLOClockend;若不满则跳出
CLR.bSECOND;清空秒计数器
DADC.bMINUTE;分加1
CMP.b#60d,MINUTE;判断是否满1小时
JLOClockend;若不满则跳出
CLR.bMINUTE;清空分钟计数器
DADC.bHOUR;小时加1
CMP.b#024d,HOUR;判断是否满24小时
JLOClockend;若不满则跳出
CLR.bHOUR;清空小时计数器
ClockendRET
;设置模块和控制寄存器
SetupMOV#WDTPW+WDTHOLD,WDTCTL;禁止看门狗
MOV.b#08Ch,BCSCTL1;设置振荡器和时钟控制寄存器
MOV.b#000h,BCSCTL2;选择DCOCLK为MCLK时钟源
SetupTAMOV#0106h,TACTL;设置定时器A控制寄存器
MOV#CCRE0,CCTL0;中断使能
MOV#8000h,CCR0;设置时间间隔
BIS#10h,TACTL;启动TA,开始增计数模式
ClearRAMMOV.b#00h,SECOND;清空秒、分、时计数器
MOV.b#00h,MINUTE
MOV.b#00h,HOUR
EINT ;中断使能
RET



评论


相关推荐

技术专区

关闭