摘要: 本应用笔记描述了如何使用DS1602或DS1603运行时间计数器来记录电源循环信息。
来自Dallas Semiconductor的DS1602和DS1603提供了一种简化的硬件解决方案,用于保持时间以及跟踪系统的上电时间。DS1602和DS1603可以通过简单的软件由微处理器或微控制器直接读写;然而,一个更有创意的软件算法可以用来跟踪年、月、日、星期、一天的时间等。此外,还可以使用DS1602/DS1603和适当的软件跟踪上电时间和上电周期数。
DS1602/DS1603的连续计数器和上电计数器都是32位计数器,以秒为单位,可以通过DS1602/DS1603 3线串行接口读写。对于最基本的实现:
连续计数器将设置一次,并使其递增,直到达到最大值;
上电的计数器最初将被清除一次,并留下增加,直到达到其最大值。
有了这两个假设,每个计数器都能够计数到最大值(2)(32)-1)秒,即4.29 x 10(9)秒(大约136年)。
对于需要100年以上连续计时能力的系统,可能需要整个32位计数器;但对于需要最长连续计数器时间约为5年的用户来说,未使用的计数器位空间可以更好地用作存储上电循环信息的存储位。
正如在图1, DS1602/DS1603可以分区,以提供一个连续时间计数器和一个上电时间计数器,其计数能力高达4.75年,使计数器的剩余较高位可用作读/写非易失性存储器。
软件实现需要使用三个寄存器,因此第三个寄存器必须映射到可用的两个寄存器中,如图1所示。
下面是如何使用计数器来完成此任务的示例。
图1所示。将三个寄存器映射到两个寄存器。
比特1-24:保持连续时间基准测量,最大16.7 x 10(6)秒或0.53年。
位25:缓冲位或溢出位;当连续时间计数器达到它的最大值并且没有被处理器读取和重置。该位还用于将寄存器的计数器部分与将用作存储位的部分分开。
比特26-28:连续运行时间的年数x 0.53。
比特29-32:电源周期数× 128。这四个比特作为一个寄存器,每达到第26-32位的全计数就增加一次。
比特1-24:保持为通电秒的非易失性秒测量,存储长达16.7 x 106秒,或0.53年。
位25:缓冲位或溢出位;当上电计数器达到最大值并且处理器没有读取和复位时。该位还用于将寄存器的计数器部分与将用作存储位的部分分开。
位26-32:上电计数器的高7位是DS1602或DS1603所看到的上电周期数的1-127计数存储区域。
有了这一原则和适当的软件算法,DS1602/DS1603的自包含计数器保持上电时间和连续时间,而上电周期数和运行时间年数x 0.53在用作内存的计数器的高阶位中保持。
这种实现要求微控制器必须准备好每年至少一次读写DS1602或DS1603。
当连续计数器的下24位已经超过0.53年,并且将第25位设置为1时,控制器必须读取连续计数器,确定第25位的状态,如果为1,则清除该位并将第26-28位的值增加半年。如果第25位没有设置,寄存器的低24位还没有达到0.53年,可以继续计数。
一旦第26-28位的值达到111,即7 × 0.53年,连续时间计数器可以在低24位继续计数到1.06年,加上第25位的溢出0.53,最大值为9 × 0.53年。
图2 用于连续时间跟踪。
当上电计数器的下24位超过0.53年,并将计数器的第25位设置为1时,控制器必须读取上电计数器,确定第25位的状态,如果为1,则清除该位并将该值存储在外部存储器中,以便上电计数器可以继续计数。在DS1602/DS1603中,以这种方式可以存储的最大上电时间为2 x 0.53年。
图3 用于开机时间跟踪。
使用DS1603或DS1602执行此功能主要是一个软件任务。当最初写入启动值或清除时,上电计数器的25-32位必须设置为0。此后每次上电后,连接到DS1603的控制器或处理器必须读取上电计数器并检查存储在高7位的值。如果该值小于1111111,则控制器必须增加该值并将其写回7个高阶位。如果高阶位的值为1111111,则控制器必须设置0000000的值,读取连续时间计数器高4位的值,并将其加1,然后将新值写回高4位。使用该软件算法,DS1603或DS1602可用于记录和存储多达2,047个电源周期。
图4 用于上电周期数跟踪。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308