EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: time drift in camonitor timestamps
From: Andrew Johnson <[email protected]>
To: [email protected]
Cc: Eric Norum <[email protected]>
Date: Wed, 9 Jan 2013 13:45:30 -0600
Hi Eric,

FYI Jack wasn't the reporter.

Your fixed version works fine for me.  I'm adding some code to print warnings 
about continuous overruns (at increasing periods, up to hourly) before I 
commit it.

I'm also inclined to keep the original delay = 0.1 penalty for an over-run 
instead of dropping it to 0.02 seconds, but I will consider arguments against 
that if there are objections.

- Andrew

On 2013-01-09 Eric Norum wrote:
> Sorry.
> Previous message had wrong periodicTask code.  Here's what I meant to send.
> 
> Jack, can you try this and see if it fixes the problem that you were
>  seeing/
> 
> 
> static void periodicTask(void *arg)
> {
>     periodic_scan_list *ppsl = (periodic_scan_list *)arg;
> 
>     epicsTimeStamp nextScan, now;
>     double delay;
> 
>     taskwdInsert(0, NULL, NULL);
>     epicsEventSignal(startStopEvent);
> 
>     epicsTimeGetCurrent(&nextScan);
>     while (ppsl->scanCtl != ctlExit) {
>         if (ppsl->scanCtl == ctlRun) scanList(&ppsl->scan_list);
>         epicsTimeAddSeconds(&nextScan, ppsl->period);
>         epicsTimeGetCurrent(&now);
>         delay = epicsTimeDiffInSeconds(&nextScan, &now);
>         if (delay <= 0.0) {
>             ppsl->overrunCount++;
>             delay = 0.02;
>             epicsTimeGetCurrent(&nextScan);
>         }
>         epicsEventWaitWithTimeout(ppsl->loopEvent, delay);
>     }
> 
>     taskwdRemove(0);
>     epicsEventSignal(startStopEvent);
> }

-- 
There is no such thing as a free lunch.  When invited for lunch,
it is best to check if you are there to eat, or to be eaten.
-- Clive Robinson

Replies:
RE: time drift in camonitor timestamps tom.cobb
References:
time drift in camonitor timestamps ibadillo
Re: time drift in camonitor timestamps Jack Smith
Re: time drift in camonitor timestamps Eric Norum

Navigate by Date:
Prev: Re: What's calling get_array_info? Michael Davidsaver
Next: medm build D Peter Siddons
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: time drift in camonitor timestamps Eric Norum
Next: RE: time drift in camonitor timestamps tom.cobb
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·