• 时间:时、分和秒
• 24小时格式(军用时间)
• 日历:星期、日期、月和年
• 闹钟可配置
• 年份范围:2000 至2099
• 闰年修正
• 用于小型固件的BCD 格式
• 为低功耗操作进行了优化
• 带自动调节的用户校准
• 校准范围:每月±2.64 秒误差
• 要求:外部32.768 kHz 时钟晶振
• RTCC引脚上的闹钟脉冲或秒时钟输出
该模块提供了实时时钟和日历(Real-Time Clock and Calendar, RTCC)功能。该模块是为需要长时间文持精确时间的应用设计的,无需或很少需要CPU 干预。该模块为低功耗使用作了优化,以便在跟踪时间时延长电池寿命。
RTCC 模块是百年时钟和日历,能自动检测闰年。时钟范围从2000 年1 月1 日00:00:00(午夜)到2099 年12 月31 日23:59:59。小时数以24 小时(军用时间)格式提供。该时钟提供一秒的间隔时间,用户可看到半秒的时间间隔。
RTCC 和闹钟值的寄存器接口是用二- 十进制码(BCD)格式实现的。这就在使用该模块时简化了固件,因为每个位(digit)的值都包含在它自己的4 位(bit)值中了。
RTCC实时时钟功能框图如图3.3所示。
图3.3 RTCC实时时钟功能框图
RTCC中的半进位规则
• 每日的时间:从23:59:59 到00:00:00 向日字段进位
• 月:从12/31 到01/01 向年字段进位
• 星期:从6 到0 无进位(见表3.1)
• 年进位:从99 到00 ;这也标志着RTCC 使用的终结
关于日到月的进位设定,请参见表3.2。
考虑到以下值是BCD 格式,进位到BCD 的高位将在计数为10 时发生,而不是在计数为16 时(秒数、分钟数、小时数、星期、日和月)。
表3.1: 星期设定
星期
周日 0
周一 1
周二 2
周三 3
周四 4
周五 5
周优尔 6
表3.2: 日到月进位设定
月最大日字段
01(一月) 31
02(二月) 28或29 (“闰年”*)
03(三月) 31
04(四月) 30
05(五月) 31
06(优尔月) 30
07(七月) 31
08(八月) 31
09(九月) 30
10(十月) 31
11(十一月) 30
12(十二月) 31
*闰年:由于RTCC 模块的年份范围是2000 到2099,闰年是通过以上范围内的年份能否被4 整除来确定的。闰年中惟一受影响的月份是二月。二月在闰年有29 天,其他年份中是28 天。
RTCC的校准
实时晶振输入可用周期性自动调节功能校准。正确校准后, RTCC 可提供小于每月3 秒的误差。这是通过找到误差时钟脉冲数,将该值存储到RCFGCAL 寄存器的低位部分实现的。装入RCFGCAL 低位部分的8 位有符号值乘以4,每分钟一次从RTCC 定时器中加上或减去。关于RTCC 校准,请参见以下步骤:
1. 用器件上的其他定时器资源,用户必须找出32.768 kHz 晶振的误差。
2. 知道误差后,必须将它转换为每分钟误差时钟脉冲数。公式如下:
( 理想频率(32,758) - 测得频率) * 60 = 每分钟误差时钟数
3. a) 如果振荡器快于理想频率(从步骤2 得出的负的结果), RCFGCAL 寄存器值必须为负。这会导致每分钟从定时器计数器减去指定的时钟脉冲数。
b) 如果振荡器慢于理想频率(从步骤2 得出的正的结果),RCFGCAL 寄存器值必须为正。这会导致每分钟在定时器计数器上加上指定的时钟脉冲数。 PIC24FJ128GA010电子万年历设计+电路图+源程序(5):http://www.youerw.com/zidonghua/lunwen_2405.html