DS87C530和DS5250结合了实时时钟(RTC)和闹钟,允许用户执行真实世界的定时操作,如时间戳事件,在特定时间执行任务,或执行很长的定时延迟。虽然软件定时循环或内部计时器可用于此类测量,但它们依赖于晶体,对于长时间测量效率低下,并且与电源管理模式的使用不兼容。RTC的集成意味着只需要32.768kHz晶体。无负载电容器需要与RTC晶体。RTC由专用的特殊功能寄存器(SFRs)控制。
RTC由次秒、秒、分、小时、星期和两个总日计数寄存器组成。此外,还有一个用于亚秒、秒、分和小时寄存器的报警寄存器。亚秒寄存器提供1/256秒的分辨率和1秒的最大翻转计数。RTC使用的寄存器和控制位如表1所示。复位后指定为不变的位和寄存器在无电池复位后可能是不确定的。请查阅完整的位或寄存器描述以了解完整的细节。
位名称 | 位置 | 函数 | 范围 | 重置 | 读/写访问 |
ERTCI | EIE.5 | RTC中断使能 | 0 | 不受限制的 | |
PRTCI | EIP.5 | RTC中断优先级 | 0 | 不受限制的 | |
RTASS.7-0 | 区域贸易协定 | RTC报警分秒 | 0-FFh | 不变 | 不受限制的 |
RTAS.5-0 | 区域贸易协定 | RTC报警秒 | 0-3Bh | 不变 | 不受限制的 |
RTAM.5-0 | RTAM | RTC报警分钟 | 0-3Bh | 不变 | 不受限制的 |
RTAH.4-0 | RTAH | RTC报警时间 | 0-17H | 不变 | 不受限制的 |
RTCSS.7-0 | RTCSS | RTC次秒级 | 0-FFh | 不变 | 只读:仅当RTCRE=1时。 不能写。 RTCWE 1<0时清除 |
RTCS.5-0 | 清债信托公司 | RTC第二 | 0-3Bh | 不变 | 只读:仅当RTCRE=1时。 Write:仅当RTCWE=1时。 1ms读/写窗口 |
RTCM.5-0 | RTCM | RTC分钟 | 0-3Bh | 不变 | |
RTCH.4-0 | RTCH.4-0 | RTC小时 | 0-17h | 不变 | |
DOW2-0 | RTCH.7-5 | RTC星期几 | 0-7h | 不变 | |
RTCD1.7-0 RTCD0.7-0 | RTCD1 (MSB) RTCD0 (LSB) | RTC的一天 | 0-FFFFh | 不变 | |
SRCE | RTCC.7 | RTC次秒级 比较支持 | 不变 | 不受限制的 | |
南加州爱迪生公司 | RTCC.6 | RTC二次比较 启用 | 不变 | 不受限制的 | |
多国评价 | RTCC.5 | RTC分钟比较 启用 | 不变 | 不受限制的 | |
HCE | RTCC.4 | RTC小时比较 启用 | 不变 | 不受限制的 | |
RTCRE | RTCC.3 | RTC读使能 | 0 | 不受限制的 | |
RTCWE | RTCC.2 | RTC写使能 | 0 | 读:无限制 写:定时访问 | |
RTCIF | RTCC.1 | RTC中断标志 | 0 | 不受限制的 | |
RTCE | RTCC.0 | RTC启用 | 不变 | 读:无限制 写:定时访问 | |
E4K | TRIM.7 | 外部4096Hz RTC 信号使 | 0 | ||
X12 / / 6 \ | TRIM.6 | RTC水晶 电容选择 | 不变 | ||
TRM2-0 | TRIM.5 TRIM.3 TRIM.1 | RTC修整位2-0 | 不变 | 读:无限制 写:定时访问 | |
/0 - trm2 \ | TRIM.4 TRIM.2 TRIM.0 | 反向修整钻头 2 - 0 | 不变 | 读:无限制 写:定时访问 一定是的倒数 TRM2-0 |
请注意,TRM2及其逆在DS5250上不存在。用户软件和内部时钟都直接写入和读取RTC时间寄存器(RTCSS, RTCS, RTCM, RTCH, RTCD0, RTCD1)。寄存器锁定机制防止了用户软件和内部定时器同时访问同一寄存器的可能性。在软件读或写操作期间,内部计时器对RTC时间寄存器的更新被暂时挂起,最长可达1ms。如果在1ms窗口中出现亚秒计时器,则一旦RTCWE或RTCRE位被清除,它将立即被处理。为了防止意外写入RTC时间寄存器的可能性,应该在计划的修改完成后立即清除RTCWE位。作为一种保护措施,如果软件中没有清除RTCWE位,设备会在1ms后自动清除RTCWE位。为了允许处理任何待处理的计时器节拍,软件必须在RTCWE或RTCRE位的任何连续修改之间等待四个机器周期。
该方案不会影响RTC的准确性,因为在读或写窗口期间可能出现的任何亚秒计时器只会暂时延迟,而不会丢弃。只有对单个亚秒计时器滴答的识别被延迟,随后的滴答将与时钟同步。关于RTC操作的唯一可能的含义是,如果在时间寄存器读取操作期间发生会导致警报中断的计时器滴答。在这种情况下,警报将延迟零点几毫秒,直到RTCRE位被清除。如上所述,下一个亚秒计时器将在适当的时间发生,因此长期时钟精度不会受到影响。
观察4台机器周期设置和1ms窗口时间是至关重要的。在4个机器周期之前从时间寄存器读取的任何操作都可能返回一个无效的时间。在4个机器周期之前写入时间寄存器将被忽略。类似地,在1ms窗口之外的任何RTC时间寄存器操作都会导致无效的读操作或忽略写操作。因此,在修改任何RTC寄存器之前,应该全局禁用中断。
RTC晶体放大器的操作由RTC使能位RTCE (RTCC.0)控制。该位只能由定时访问过程访问,不受任何操作复位的影响。然而,在无电池复位后,RTCE位的状态是未定义的,应该初始化。清除RTC使能位将停止晶体放大器和时钟的操作,但所有寄存器值(包括时钟被禁用的时间)将被保留。这可能是为了在存储期间保持备用能源的寿命所需要的。当重新启动RTC晶体振荡器时,无论是从无电池复位状态还是通过设置RTC使能位,都必须遵守晶体启动时间。没有直接的方法来检测RTC晶体振荡器何时稳定,系统软件必须允许在重新启动RTC时有足够的稳定时间。晶体启动时间由晶体制造商指定,但通常在1秒左右。
在电池电量耗尽或第一次连接电池时,有必要初始化RTC。虽然没有状态位来指示无电池复位,但有几种方法可以检测实时时钟何时失去电源/时间。最好的方法是监视板载内存中的保留位置。由于片上SRAM内容与RTC由相同的能量源保存,因此先前加载的存储器位置的意外变化可能表明电池电量的损失。
从RTC获取当前时间是通过以下程序完成的:
通过清除EA位(IE.7)禁用所有中断
设置RTCRE位(rtc .3)
等待4个机器周期
在RTCRE设置后1毫秒内读取相应的寄存器
清除RTCRE位(RTCC.3)
通过设置EA位(IE.7)使能中断
通过写入时钟寄存器来设置时间。秒、分、时、星期几和日计数可以通过写入各自的寄存器来设置。这是不可能设置实时时钟亚秒寄存器(RTCS;FBh)。当RTCWE位被清除时,通过软件或1ms写窗口的自动超时,该寄存器自动重置为00h。忘记RTC时间寄存器的过程如下:
通过清除EA位(IE.7)禁用所有中断
执行定时访问过程
设置RTCWE位(rtc2)
等待4个机器周期
在RTCWE设置后1毫秒内写入相应的寄存器
执行定时访问过程
清除RTCWE位(rtc2)
通过设置EA位(IE.7)使能中断
RTC告警功能用于当RTC值与选定的告警寄存器值匹配时产生中断。一个告警可以由以下一个或多个告警寄存器的匹配触发:亚秒(RTASS;F2h),秒(RTAS;F3h),分钟(RTAM;F4h)和Hour (RTAM;F5h)。请注意,没有与RTC日或星期寄存器相关联的警报寄存器。如果需要在特定日期发出警报,则可以每天发出一次警报,用户软件可以将当前日期与日寄存器进行比较。设置告警寄存器时,不需要设置RTC写使能位。
可以将警报设置为在与任何或所有警报寄存器匹配时发生。闹钟可以在一天中唯一的时间发生,或者可以每亚秒、秒、分或小时设置一个重复的闹钟。通过设置或清除相应的比较使能位(RTCC.7-4)来选择要比较的具体告警寄存器。任何被清除的比较位将导致该寄存器在评估报警条件时被视为“不关心”。清除所有的比较使能位将禁用RTC引起中断的能力,并将立即清除RTC中断标志(RTCC.1)。与某些中断不同,RTC标志不会通过退出RTC中断服务程序来清除,必须在软件中完成。
设置RTC告警寄存器导致RTC中断的一般步骤如下:
清除RTC中断使能位(ie5)
清除所有RTC告警比较使能位(ANL RTCC, #0Fh)
写一个或多个RTC告警寄存器
设置所需的RTC告警比较使能位
设置RTC中断使能位(ie5)
通过将所有报警寄存器设置为所需值并启用所有比较位,可以在24小时内将警报设置为单个时间中断。例如,如果希望在上午11:45:00发出警报,将使用以下配置:
告警亚秒(RTASS) | 00次秒级 | = 00 h |
报警秒数(RTAS) | 00秒 | = 00 h |
报警分钟(RTAM) | 45分钟 | = 2 dh |
闹钟时间(RTAH) | 11个小时 | = 0黑洞 |
时钟控制(RTCC) | 次秒级比较 | = F1h |
第二个比较 | ||
分钟的比较 | ||
小时比较 |
通过禁用与一个或多个告警寄存器相关联的比较使能位来启用循环告警。通常,使用下一个较低的时间增量设置循环警报。例如,如果需要每小时发出一次警报,就会对RTAM寄存器进行比较,因为RTCM寄存器每小时只匹配RTAM寄存器一次。例如,如果希望在半小时内每小时发出一次警报,则将使用以下配置:
告警亚秒(RTASS) | 00次秒级 | = 00 h |
报警秒数(RTAS) | 00秒 | = 00 h |
报警分钟(RTAM) |
登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
|