1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 <2011> 2012 2013 2014 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 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Beam Synchronous Acquistion (BSA) and the Hytec Motor Postion |
From: | Till Straumann <[email protected]> |
To: | Eric Norum <[email protected]> |
Cc: | EPICS tech-talk <[email protected]> |
Date: | Thu, 12 May 2011 14:00:24 -0500 |
On 05/12/2011 01:42 PM, Eric Norum wrote:
On May 12, 2011, at 11:38 AM, Ernest L. Williams Jr. wrote:Mark Rivers wrote:1ms period should be fine but I haven't checked the least time period that epicseventwait can use. Maybe Mark has better idea?That depends on the OS and how it is configured. With vxWorks it is determined by the value of sysClkRateGet/Set. The default clock period on vxWorks is normally 50/60Hz, but it can easily be increased with sysClkRateSet(). If you are using RTEMS I don't know what the rate of the system clock is. Also, typically if you specify a time of X for epicsEventWait the actual time will be X +- epicsThreadSleepQuantum(), which is the system clock period. In other words if I ask for 16.6 ms on a standard 60Hz vxWorks system I will get 0 to 16.6 ms, because the next system tick can happen immediately (=0) or we may have just missed one and it will happen in 16.6ms.Hi Mark, Awesome, thanks for the info. Till and Eric can you weigh in on this question for RTEMS?
Basically, the behavior is as described by Mark (i.e., the granularity/resolution of a blocking operation or a sleep/delay
is determined by the OS system clock). Our GeSys images at SLAC are configured the following way: 4.9.3/rtems_p1/ssrlApps_p2 4.9.4/rtems_p0/ssrlApps_p3 4.9.4/rtems_p1/ssrlApps_p3 4.9.4/rtems_p1/ssrlApps_p4 (and upcoming, later releases) use a system clock of 1kHz by default (so that we can block for less than a 360Hz fiducial). Only slower hardware (mvme167, uC5282, virtex, rce405) uses a lower clock rate of 100Hz. All older GeSys versions (not listed above) use a clock rate of 50Hz on all platforms. HTH -- Till PS: The increase of clock speed from the old 50Hz is documented in the ChangeLogs.
From<base>/src/RTEMS/base/rtems_config.c#define CONFIGURE_MICROSECONDS_PER_TICK 20000 If you want a different value you can copy rtems_config.c to your application source directory, add it to the Makefile and make any changes you wish. Note that this won't work for those of you dynamically loading your EPICS applications.