I just tested with my TetrAmm and I cannot reproduce the behavior you are seeing. As soon as I change AcquireMode then AcquireMode_RBV also changes. Actually AcquireMode_RBV changes about 10-20 microseconds before AcquireMode. Here is the output from camonitor:
corvette:~>camonitor 13IDA:QE1:AcquireMode 13IDA:QE1:AcquireMode_RBV
13IDA:QE1:AcquireMode 2022-02-01 10:07:24.187031 Continuous WRITE INVALID
13IDA:QE1:AcquireMode_RBV 2022-02-01 10:07:24.187028 Continuous
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:06:48.532124 Single
13IDA:QE1:AcquireMode 2022-03-18 13:06:48.582639 Single
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:06:53.401958 Multiple
13IDA:QE1:AcquireMode 2022-03-18 13:06:53.401969 Multiple
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:06:58.066979 Continuous
13IDA:QE1:AcquireMode 2022-03-18 13:06:58.066999 Continuous
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:07:12.250304 Single
13IDA:QE1:AcquireMode 2022-03-18 13:07:12.278290 Single
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:07:22.147686 Multiple
13IDA:QE1:AcquireMode 2022-03-18 13:07:22.147697 Multiple
13IDA:QE1:AcquireMode_RBV 2022-03-18 13:07:27.644870 Continuous
13IDA:QE1:AcquireMode 2022-03-18 13:07:27.644886 Continuous
HI John,
I just looked at the code in drvQuadEM::writeInt32 and drvTetrAMM::setAcquireMode and it looks OK. It sets the new value in the parameter library at the beginning and unconditionally does callParamCallbacks at the end. That should result in the
camonitor value being correct.
I am on vacation but will test this when I return. Meanwhile you could enable all of the asynTrace debugging to see what that shows.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Runchey, John via Tech-talk <tech-talk at aps.anl.gov>
Sent: Monday, March 14, 2022 11:14 AM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: odd ASYN behavior
I'm working with a new build of QUADEM for the tetrAMM and seeing a weird asyn issue.
Summary: When writing to the AcquireMode PV, the associated _RBV PV is 'one behind' in reporting the new value, consistently. But if I manually do a caput to the _RBV.PROC field and force it to process, the readback is then consistently correct.
camonitor of the issue:
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:00:39.158459244 Single
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:00:39.158436082 Multiple
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:01:23.572226245 Single
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:01:23.572245721 Continuous
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:01:34.876944669 Continuous
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:01:34.876973666 Multiple
after caput AcquireMode_RBV.PROC 1:
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:06:33.097901171 Single
// caput caused _RBV to update to the (correct) value of Continuous
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:06:42.683848695 Continuous
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:06:42.683874661 Continuous
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:06:44.284941724 Multiple
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:06:44.284974097 Multiple
S28IDFE-XBPM:CM3ds:AcquireMode_RBV 03/11/22 09:06:45.876836770 Single
S28IDFE-XBPM:CM3ds:AcquireMode 03/11/22 09:06:45.876854823 Single
This is the first time I've built this on a RHEL 8 machine for what that's worth.
Any thoughts?
Thanks,
John