ENGLISH 简体中文 日本語 한국어  


应用笔记3429

DS2422、DS1923、DS1922L和DS1922T数据记录器的启动延时问题

摘要:新型8k字节Thermochron®和Hygrochron™数据记录器存在一个设计瑕疵,在执行第一次采样任务时可能存在长达一个采样周期的延迟。本文对该问题进行了分析,以便用户在具体应用中限定延迟时间。本文讨论了一种工作方式,有助于减小最差工作条件下的延时。

更新:数据记录仪的启动延时问题已经得到确认,并在新推出的B1版DS1922L/T、DS1923和DS2422中得到解决。B1版器件的序列号为005A900h至005C09Fh和0064200h及更高序号。

新型8k字节Thermochron和Hygrochron数据记录器存在一个设计瑕疵,在执行第一次采样任务时可能存在长达一个采样周期的延迟。这些记录器包括温度数据记录器(DS1922L和DS1922T), 湿度/温度数据记录器(DS1923), 以及单芯片记录器(DS2422)。这个问题需要分两种情况讨论。一种情况是数据记录器终止了当前工作,按一定的规则启动后续新的任务。这种情况下,每次启动新任务时,第一次采样的延迟时间可能达到一个时钟周期。例如,如果采样间隔为10分钟,在1:00重新启动一次任务,那么,第一次采样可能发生在1:00至1:10之间的任一时刻。在此之后,将以10分钟为间隔有规则地记录数据。

第二种情况是系统中采用了不同的采样速率或者“使能高速采样”位,这种情况下可能产生更大的延迟,但是,这个延迟时间可以预测并很容易缩短。当启动一次新任务时,器件记录第一次采样值(记录任务时标等),并将采样速率寄存器的数值拷贝到倒计时寄存器。当这个计数值达到零时,执行下一次采样。理想情况下,Clear Memory命令应该将内部寄存器清零,而实际情况并非如此,这也正是这些产品出现问题的关键。完成一次任务后,倒计时计数器会停止在0到采样速率之间的任意数值。这意味着启动下一次任务时,内部倒计时计数器必须首先结束上一次遗留的计数操作,而不是在正确的时间进行采样。

工作方式

采用高速采样(EHSS=1),很难注意到这个问题。当以10秒钟的间隔结束或启动一次新的任务时,对于开启新任务可能存在最长10秒的延迟。真正意识到这个问题可能是在时间间隔从10秒钟切换到1分钟的情况下。这时,内部倒计时寄存器中存在一个0至10之间的数值,采样速率切换后,它将以分钟(而不是秒)为单位进行倒计时,这样,第一次采样时间可能被延迟10分钟,然后,再以1分钟为间隔进行采样。

对于以分钟为采样间隔的数据记录器,最好的工作方式应该是以“1秒钟”为间隔启动并终止一次新的任务(EHSS=1, SR=1)。启动新的任务后终止它,并开启另一新任务,按照所希望的参数继续操作。这有助于缩短启动新任务的延迟时间(不会降低器件的有效使用寿命,因为在内部倒计时寄存器数递减期间不会发生采样操作)。表1给出的伪码是实现这一过程的一个范例。

改变分辨率以加速第一次采样

例程1
# Start by initializing the datalogger with the desired mission parameters.
# For this example, the sample rate is 60 minutes, with no start delay
SET_SAMPLE_RATE( 60 );
SET_EHSS( 0 ); # Disable high-speed sampling

SET_START_DELAY( 0 );
SET_TEMPERATURE_SAMPLING( 0.0625C ); # enable sampling in desired resolution

# Initialize and start the Real-time clock
SET_RTC( CurrentTimeAndDate );

START_MISSION();

# Since resolution is minutes, first sample will only be taken on RTC’s
# minute boundary, so delay to give the device time to take the sample
DELAY_ONE_MINUTE();

# Check to make sure the Mission Sample Count register is a non-zero value
If ( GET_MISSION_SAMPLE_COUNT() == 0 ) Then

   # Mission did not begin right away, so a 1 second mission will be
   # used to clear the internal counter of the device
   STOP_MISSION();

   SET_SAMPLE_RATE( 1 );
   SET_EHSS( 1 ); # Enable high-speed sampling

   START_MISSION();

   # Now counter is counting down in 1 second increments instead of
   # 1 minute increments.  Wait for first sample to be recorded.
   While( GET_MISSION_SAMPLE_COUNT() == 0 )
      DELAY_ONE_MINUTE();
   EndWhile;

   # Mission sample has been recorded and the internal countdown register
   # contains a value of either 1 or 0.  Reset the original parameters.
   STOP_MISSION();

   SET_SAMPLE_RATE( 60 );
   SET_EHSS( 0 ); # Disable high-speed sampling

   START_MISSION();

   # Mission will now start in less than 2 minutes reliably.  The time could be
   # 2 minutes because there is up to one minute of delay if the RTC is not 
   # near the minute boundary and up to one minute of delay from the internal
   # counter.  Delay 2 minutes and double-check, for sanity’s sake.
   DELAY_ONE_MINUTE();
   DELAY_ONE_MINUTE();

   If ( GET_MISSION_SAMPLE_COUNT == 0 ) THEN
      SEVERE_ERROR(); # There is another unrelated failure with this device
   EndIf

EndIf;
在频繁终止并启动新任务的应用中,可以在结束一次任务后立即读取RTC的数值(或者是同时中止任务和RTC),以便系统通过测量最后一次采样记录的时标与RTC当前数值的时间间隔,非常准确地预测倒计时寄存器内的数值。采用这种方法,可以计算延迟时间,以便在预知的时间启动任务。因为这个问题不会对具体应用有影响(终止一次任务、修改任务参数、启动一次新任务,这在原型中是非常可能的),建议原型是用较小的采样间隔,并且,设置EHSS=1。 如果采用较低的采样速率,采样时间间隔在分钟量级,须谨慎处理和使用RTC,以预测这个隐藏在内部寄存器的数值。


我们期待您的反馈!
喜欢?不喜欢?有待改善?或为我们提供建议?请与我们联系 — 我们将根据您的意见或建议改善我们的工作。 网页评价或提供建议


自动更新
需要自动接收最新发布的应用笔记吗?请订阅EE-Mail™ (English only)。



更多信息  APP 3429: Apr 14, 2005
DS1922L 温度记录器iButton,带有8KB数据记录存储器 完整的数据资料
(PDF, 508kB)
DS1922T 温度记录器iButton,带有8KB数据记录存储器 完整的数据资料
(PDF, 508kB)
DS1923 温度/湿度记录仪iButton,具有8KB数据记录存储器 完整的数据资料
(PDF, 1MB)
DS2422 1-Wire®温度/数据记录器,带有8KB数据记录存储器 完整的数据资料
(PDF, 500kB)
 

下载,PDF格式下载,PDF格式 (22kB)
 AN3429, AN 3429, APP3429, Appnote3429, Appnote 3429


      隐私权政策    法律声明

      © 2008 Maxim Integrated Products, Dallas Semiconductor版权所有