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: epicsTimer |
From: | Matthieu Bec <[email protected]> |
To: | "Szalata, Zenon M." <[email protected]> |
Cc: | [email protected] |
Date: | Thu, 3 Jun 2010 17:48:11 -0400 |
Addressing the limits of the VxWorks system clock....
With VxWorks 5.5, the upper limit on the system clock is set by the SYS_CLK_RATE_MAX parameter in the <WIND_BASE>/target/config/mv<cpubrd>.h file. For a MVME5100 board, the default limit is 5000 Hz (200 us). The default system clock rate to 60 Hz. You can change the system clock (before EPICS iocInit is called and only with EPICS R3.14 and above) with a "sysClkRateSet(5000)" call. Of course, setting the system clock to 5000 Hz is going to cause a timer interrupt every 200 us and create a lot of overhead; use with caution.
Ron
Eric Norum wrote:The epicsTimer quantum is that of the vxWorks system clock and is almost certainly too large for this to be accomplished. If you have a hardware timer available you could use it to generate interrupts and perform the timing that way. If you need really precise timing you might have to move all this out to custom hardware.
On Jun 3, 2010, at 1:15 PM, Szalata, Zenon M. wrote:
I have a VME system, which is external trigger driven. I wrote a device driver for one of the modules in the VME crate. The device driver is so far OSI. I am using EPICS R3.14.11 and vxWorks 6.6.
In my device driver, I need to execute a command a few hundred of micro seconds after the trigger. The device driver responds to the trigger, by queuing a call back routine. I would like to setup in the trigger handling call back routine another call back routine to be called a few hundred microseconds later. I don't want to call vxWorks routines directly. Looking through "EPICS: Input/Output Controller Application Developer's Guide", it seems to me that epicsTimer is a good candidate. Unfortunately, as it is for me, this guide is very good once I know what I am doing. Since I have not used epicsTimer before, the description in the guide is not explicit enough to be useful.
I would greatly appreciate if someone sent me an example of how to accomplish my goal in a device driver written in C.
Thank you, Zen
-- Matthieu Bec Gemini Observatory Tel: +56 51 205785 c/o AURA, Casilla 603 Fax: +56 51 205650 La Serena, Chile