Experimental Physics and Industrial Control System
A bug was found at CEBAF today which affects 3.12 CAMAC device support for the
records ao, ai, lo and li. The problem is associated with the PARM field.
It has to do with the standard problem when specifying the maximum output of an
ADC, namely, should one specify 2^N or 2^N - 1? There is code in the device
support to allow the user to specify either one, and the device support is
smart enough to figure out what the user meant. That is, if the user
specified 2^16 for a 16-bit ADC, the device support should set ESLO to
(EGUF - EGUL)/(2^16 - 1), so RVAL = EGUF at ADC maximum value
(assuming EGUL==0)
Unfortunately, that's not what the code did. Instead, if the user specified
PARM to be 2^16 - 1, ESLO was set to (EGUF - EGUL)/2^16, so at ADC maximum
value, an ao had RVAL = 0.
The fix, for CAMAC device support for the records ao, ai, li and lo:
< if (!(fsd & (fsd+1))) fsd++;
---
> if (!(fsd & (fsd-1))) fsd--;
Matthew Bickley Email: [email protected]
Computer Scientist Voice mail: 804-249-7347
CEBAF
- Navigate by Date:
- Prev:
Re: ca question Jeff Hill
- Next:
ca_pend_event question (VAX/VMS only) SAA
- 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
- Navigate by Thread:
- Prev:
Re: ca question Jeff Hill
- Next:
ca_pend_event question (VAX/VMS only) SAA
- 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