SFELPHOTON-1335:rework triggerSync
This commit is contained in:
@@ -1,32 +1,110 @@
|
||||
Activate an user servoloop
|
||||
--------------------------
|
||||
triggerSync
|
||||
===========
|
||||
```
|
||||
PBTools/pbtools/usr_servo_phase$ make
|
||||
PBTools/pbtools/usr_servo_phase/usrServoSample$ make
|
||||
scp userservo_util userphase_util usrServoSample/usralgo.ko root@MOTTEST-CPPM-CRM0573:/tmp
|
||||
|
||||
rmmod usralgo
|
||||
insmod /tmp/usralgo.ko
|
||||
|
||||
cat /proc/kallsyms | grep MyUserAlgoFunctionName (e.g. cat /proc/kallsyms | grep usr_servo_ctrl_2)
|
||||
a10385ca r __kstrtab_usr_servo_ctrl_2 [usralgo]
|
||||
a1038570 r __ksymtab_usr_servo_ctrl_2 [usralgo]
|
||||
a103812c T usr_servo_ctrl_2 [usralgo]
|
||||
|
||||
UserAlgo.ServoCtrlAddr[1] = $a103812c
|
||||
Motor[1].Ctrl =UserAlgo.ServoCtrlAddr[1].a
|
||||
|
||||
.. but this can not be set directly in gpascii.
|
||||
|
||||
root@:/opt/ppmac#
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/userservo_util -d 1
|
||||
rmmod usralgo
|
||||
insmod /tmp/usralgo.ko
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/userservo_util -l 1 usr_servo_ctrl_2
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/userservo_util -e 1
|
||||
|
||||
gpascii:
|
||||
Motor[1].Ctrl =UserAlgo.ServoCtrlAddr[1]
|
||||
samples: root@:/opt/ppmac#
|
||||
/tmp/triggerSync 40 11 trigger all 40 ms, simulated start, use real frame triggers, verbose
|
||||
/tmp/triggerSync 40 14 trigger all 40 ms, simulated start and frame triggers, no sync, verbose
|
||||
/tmp/triggerSync 40 15 trigger all 40 ms, simulated start and frame triggers, with sync, verbose
|
||||
/tmp/triggerSync 40 7 trigger all 40 ms, simulated start and frame triggers, with sync, minimal verbose
|
||||
|
||||
|
||||
For real triggers, deltatau is using flags from the EVR-card:
|
||||
|
||||
#define SIMFLAG0 (pshm->Coord[1].Q[10])
|
||||
#define SIMFLAG1 (pshm->Coord[1].Q[11])
|
||||
|
||||
//Power PMAC Software Reference Manual.pdf Gate3[i].Chan[j].Status -> page 919 UserFlag
|
||||
#define FLAG0 (gate3_1->Chan[0].Status&0x800)
|
||||
#define FLAG1 (gate3_1->Chan[1].Status&0x800)
|
||||
|
||||
|
||||
work of triggerSync program:
|
||||
- wait for [SIM]FLAG0 (arm trigger)
|
||||
- once armed, each [SIM]FLAG1 trigger is a frame trigger.
|
||||
|
||||
SIMFLAG[0|1] are vairables Coord[1].Q[10] and Coord[1].Q[11]
|
||||
|
||||
the EVR flags are set in;
|
||||
caqtdm -attach -macro SYS=SAR-EXPMX,DEVICE=EVR0,FF=PCIe G_EVR_main.ui
|
||||
|
||||
FLAG0 == Gate3[1].Chan[0].UserFlag == FrontUnivOut4 -> Pulser0 -> (active Low, 5000us delay 0us) Map: 214
|
||||
FLAG1 == Gate3[1].Chan[1].UserFlag == FrontUnivOut5 -> Pulser1 -> (active Low, 5000us delay 750us) Map: 40
|
||||
|
||||
Pulser 0: event 214 is 'ESC multipurpose event. In this case used as: start motion'
|
||||
Pulser 1: maps event 40 = 'ESA_detector 100 Hz' >>> should be 77='ESC detector'
|
||||
|
||||
event 214 is set with the CTA. For tests one can set manually
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 9 # Force High(0) -> arm event, before start motion
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 8 # Force Low(1) -> trigger motion
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-SP 0 # set back to Pulser 0 -> reset for CTA usage
|
||||
|
||||
This are values how they should be:
|
||||
caget SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-RB SAR-EXPMX-EVR0:FrontUnivOut5-Src-Pulse-RB \
|
||||
SAR-EXPMX-EVR0:Pul0-Polarity-Sel SAR-EXPMX-EVR0:Pul0-Delay-RB SAR-EXPMX-EVR0:Pul0-Width-RB \
|
||||
SAR-EXPMX-EVR0:Pul1-Polarity-Sel SAR-EXPMX-EVR0:Pul1-Delay-RB SAR-EXPMX-EVR0:Pul1-Width-RB \
|
||||
SAR-EXPMX-EVR0:Pul0-Evt-Trig0-SP SAR-EXPMX-EVR0:Pul1-Evt-Trig0-SP
|
||||
|
||||
SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-RB "Pulser 0"
|
||||
SAR-EXPMX-EVR0:FrontUnivOut5-Src-Pulse-RB "Pulser 1"
|
||||
SAR-EXPMX-EVR0:Pul0-Polarity-Sel "Active Low"
|
||||
SAR-EXPMX-EVR0:Pul0-Delay-RB 0.000 us
|
||||
SAR-EXPMX-EVR0:Pul0-Width-RB 5000.000 us
|
||||
SAR-EXPMX-EVR0:Pul1-Polarity-Sel "Active Low"
|
||||
SAR-EXPMX-EVR0:Pul1-Delay-RB 750.000 us
|
||||
SAR-EXPMX-EVR0:Pul1-Width-RB 5000.000 us
|
||||
SAR-EXPMX-EVR0:Pul0-Evt-Trig0-SP 214
|
||||
SAR-EXPMX-EVR0:Pul1-Evt-Trig0-SP 40
|
||||
```
|
||||
|
||||
testing simulated start triggers
|
||||
--------------------------------
|
||||
```
|
||||
Gather.Enable=1 // else triggerSync stops if value is 0
|
||||
Coord[1].Q[0]=-3 // simulate motion ready
|
||||
Coord[1].Q[10]=0 // turn off simulated start event
|
||||
|
||||
root@:/opt/ppmac#
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 14 10 0 # trigger all 10 ms, simulated start and frame triggers , no sync , verbose
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 15 10 0 # trigger all 10 ms, simulated start and frame triggers , with sync, verbose
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 11 10 0 # trigger all 10 ms, simulated start, real frame triggers , with sync, verbose
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 7 10 0 # trigger all 10 ms, simulated start and frame triggers , with sync, minimal verbose
|
||||
|
||||
....
|
||||
Coord[1].Q[10]=1 # turn on simulated start event
|
||||
.s.s.s.s.
|
||||
Coord[1].Q[10]=0 # turn off simulated start event
|
||||
....
|
||||
Coord[1].Q[10]=1 # turn on simulated start event
|
||||
.s.s.s.s.
|
||||
Coord[1].Q[0]=0 # simulate ready at start position
|
||||
.s.s.s.x.........
|
||||
Gather.Enable=0 # end triggerSync
|
||||
```
|
||||
|
||||
testing real start triggers
|
||||
---------------------------
|
||||
```
|
||||
Gather.Enable=1 // else triggerSync stops if value is 0
|
||||
Coord[1].Q[0]=0 // simulate motion not ready (!=-3)
|
||||
|
||||
caget SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-RB
|
||||
->SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-RB "Pulser 0"
|
||||
|
||||
# set start EVT to value 0 (=Force Hi)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 9
|
||||
|
||||
root@:/opt/ppmac#
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 9 10 0 # trigger all 10 ms, real start and frame triggers, with sync, verbose
|
||||
LD_LIBRARY_PATH=/opt/ppmac/libppmac/ /tmp/triggerSync 1 10 0 # trigger all 10 ms, real start and frame triggers, with sync, minimal verbose
|
||||
|
||||
Coord[1].Q[0]=-3 // simulate motion ready
|
||||
|
||||
Coord[1].Q[0] // changed to -2 to indicate 'wait for start EVT
|
||||
|
||||
# set start EVT to value 1 (=Force Lo)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Scale-SP 8
|
||||
# reset EVT default value (Pulser 0)
|
||||
caput SAR-EXPMX-EVR0:FrontUnivOut4-Src-Pulse-SP 0
|
||||
|
||||
Gather.Enable=0 # end triggerSync
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user