RTC时间的安全读取

发布者:EtherealGaze最新更新时间:2015-11-09 来源: eefocus关键字:RTC时间  安全读取 手机看文章 扫描二维码
随时随地手机看文章
方法1:
 
(缺点): for(;RTCCTL01&RTCRDY;)        _NOP()               ; // 等待RTC有效   
 
这一步最长可能需要等上一秒钟,对实时操作十分不利。
 
         单要这一步: for(;!(RTCCTL01&RTCRDY);)      _NOP() ; 虽然可以避免 RTCRDY复位的时候去读取,但是不能避免读取的还未完成,就遇到RTCRDY 复位的可能。
 
//
 
//                                                                           //
 
//                 读取RTC时钟  方法1                                        //
 
//                                                                           //
 
//
 
unsigned long GetTime(void)
 
{
 
  int hour,minute,second                             ;
 
  unsigned long time                                 ;
 
  for(;RTCCTL01&RTCRDY;)        _NOP()               ; // 等待RTC有效                               
 
  for(;!(RTCCTL01&RTCRDY);)      _NOP()               ;                                    
 
  hour    = GetRTCHOUR()                             ;
 
  minute  = GetRTCMIN()                              ;
 
  second  = GetRTCSEC()                              ;
 
  time    = (unsigned long)hour*1000000
 
           +(unsigned long)minute*1000
 
           +(unsigned long)second                    ;
 
  return time                                        ;
 
}
 
 
 
方法2:
 
读取时钟 方法2 缺点:
 
(数据体结构pTime->wYear )
 
读取RTC寄存器或者相关RTC芯片的绝妙方法   
 
do
    {
        seconds = FROM_BCD(pRTCReg->BCDSEC & 0x7f);
        pTime->wYear        = FROM_BCD((pRTCReg->BCDYEAR & 0xff)) + RTC_YEAR_DATUM;
        pTime->wMonth       = FROM_BCD(pRTCReg->BCDMON & 0x1f);
        pTime->wDay         = FROM_BCD(pRTCReg->BCDDATE & 0x3f);
        pTime->wDayOfWeek   = pRTCReg->BCDDAY - 1;
        pTime->wHour        = FROM_BCD(pRTCReg->BCDHOUR & 0x3f);
        pTime->wMinute      = FROM_BCD(pRTCReg->BCDMIN & 0x7f);
        pTime->wSecond      = FROM_BCD(pRTCReg->BCDSEC & 0x7f);
        pTime->wMilliseconds= 0;
    } while (pTime->wSecond != seconds);
 
 
这样即可防止在读的过程中出现跨分、时、日、月、年等跳变时取得的数据不同步。
 
在计数器变化的时候去读取,该读取被判为无效,自动忽略。向寄存器写入范围外的数据和时间会导致不可预见的结果。
 
关键字:RTC时间  安全读取 引用地址:RTC时间的安全读取

上一篇:【UART】USCI:UART模式
下一篇:MSP430系统实时时钟RTC学习日志

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved