Hi Oleg,
try to switch off optimization and recompile EPICS base. There is a bug in one
cross-compiler version on Linux (I don't remember which version).
This calculation does not work correctly with optimization:
double a,b,c;
a=(b==c);
It calculates a=(b<=c) instead (or something like this).
BTW: The cross compiler for Solaris as provided by WR does not have this bug.
And this always works:
double a,b,c;
int i;
i=(b==c);
a=i;
Dirk
Oleg A. Makarov wrote:
We encounter misbehaviour of a CALC record in the IOC running under EPICS 3.14.9/tornado 2.2.1.
(but it works correctly under EPICS 3.14.9/tornado 2.0.2)
Test database consists of two records - CALC and BI, see below.
No matter what value - 1 or 0 - is written by "caput" program to "myBi", "myCalc" always has VAL=1
However, with CALC field changed to <A#0>, myCalc.VAL field updates correctly with changes of "myBi".
What is wrong?
Regards,
Oleg Makarov
record(calc, myCalc) {
field(SCAN, "1 second")
field(CALC, "A=1")
field(INPA, "myBi")
}
record(bi, myBi) {
}
--
Dr. Dirk Zimoch
Computing and Controls
Paul Scherrer Institut
phone +41 56 310 5182
fax +41 56 310 4413
- References:
- CALC record weird behaviour Oleg A. Makarov
- Navigate by Date:
- Prev:
Re: Question about mbboDirect record Andrew Johnson
- Next:
Re: sequencer installation Emmanuel Mayssat
- 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:
CALC record weird behaviour Oleg A. Makarov
- Next:
vxWorks 5.5.2 (Tornado 2.2.2) on MVME6100 Andrew Johnson
- 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
|