rendered paste body# core HAL config file for steppers
# first load the core RT modules that will be needed
# kinematics
loadrt XAkins
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD traj_period_nsec=[EMCMOT]TRAJ_PERIOD key=[EMCMOT]SHMEM_KEY
# stepper module
loadrt stepgen step_type=0,0
# hook its functions to realtime threads
addf stepgen.make-pulses base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
# connect position commands from motion module to step generator
newsig Xpos-cmd float
linksp Xpos-cmd <= axis.0.motor-pos-cmd
linksp Xpos-cmd => stepgen.0.position-cmd
newsig Apos-cmd float
linksp Apos-cmd <= axis.1.motor-pos-cmd
linksp Apos-cmd => stepgen.1.position-cmd
# connect position feedback from step generators
# to motion module
newsig Xpos-fb float
linksp Xpos-fb <= stepgen.0.position-fb
linksp Xpos-fb => axis.0.motor-pos-fb
newsig Apos-fb float
linksp Apos-fb <= stepgen.1.position-fb
linksp Apos-fb => axis.1.motor-pos-fb
# connect enable signals for step generators
newsig Xen bit
linksp Xen <= axis.0.amp-enable-out
linksp Xen => stepgen.0.enable
newsig Aen bit
linksp Aen <= axis.1.amp-enable-out
linksp Aen => stepgen.1.enable
# connect signals to step pulse generator outputs
newsig Xstep bit
newsig Xdir bit
newsig Astep bit
newsig Adir bit
linkps stepgen.0.step Xstep
linkps stepgen.0.dir Xdir
linkps stepgen.1.step Astep
linkps stepgen.1.dir Adir
# set stepgen module scaling - get values from ini file
setp stepgen.0.position-scale [AXIS_0]INPUT_SCALE
setp stepgen.1.position-scale [AXIS_1]INPUT_SCALE
# set stepgen module velocity limits - get values from ini file
setp stepgen.0.maxvel [AXIS_0]STEPGEN_MAXVEL
setp stepgen.1.maxvel [AXIS_1]STEPGEN_MAXVEL
# set stepgen module accel limits - get values from ini file
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
# create a signal for the estop loopback
linkpp iocontrol.0.user-enable-out iocontrol.0.emc-enable-in