rendered paste body######################################
# HAL code for external control box##
######################################
######################################
# estop ##############################
######################################
# create a pin and loopback for estop
linkpp parport.1.pin-15-in iocontrol.0.emc-enable-in
######################################
# spindle ###########################
######################################
#input
linkpp parport.1.pin-12-in halui.spindle.start
linkpp parport.1.pin-11-in halui.spindle.stop
#output
# create a signal for "spindle on"
newsig spindle_on bit
# connect it to the iocontroller
linksp spindle_on motion.spindle-on
# connect it to a physical pin
linksp spindle_on parport.0.pin-04-out
######################################
# threading ##########################
######################################
# counting the spindle encoder in software
loadrt counter num_chan=1
loadrt blocks not=1
#add RT functions to base and servo thread
# update counter counter
addf counter.update-counters base-thread
addf not.0 servo-thread
# capture spindle positions
addf counter.capture-position servo-thread
#set pullup pin high
newsig pullup_pin bit
sets pullup_pin 1
linksp pullup_pin parport.0.pin-01-out
# spindle encoder
# connect encoder signals to encoder counter
newsig spindle-phase-A bit
newsig spindle-phase-Z bit
linksp spindle-phase-A => counter.0.phase-A
linksp spindle-phase-Z => counter.0.phase-Z
linkps parport.0.pin-10-in => spindle-phase-A
linkps parport.0.pin-11-in => spindle-phase-Z
# (that way thread pitches can be straightforward,
# a 20 tpi thread would multiply the encoder output
# by 1/20, etc)
setp counter.0.position-scale 100
# encoder reset control
# this signal is driven by the motion
# controller, TRUE for synced motion, FALSE the rest of
# the time.
#
# hook up motion controller's sync output
newsig spindle-sync bit
linkps motion.spindle-sync => spindle-sync
# needs to be inverted to connect to index enable
newsig spindle-index-en bit
linksp spindle-sync => not.0.in
linkps not.0.out => spindle-index-en
linksp spindle-index-en => counter.0.index-enable
# counting the spindle encoder in software
# report our revolution count to the motion controller
newsig spindle-pos float
linkps counter.0.position => spindle-pos
linksp spindle-pos => motion.spindle-revs
######################################
# feed/jogwheels #####################
######################################
# add 3 encoder counter modules
loadrt encoder num_chan=3
#signals to connect the encoders to parport
newsig encA1 bit
newsig encB1 bit
newsig encA2 bit
newsig encB2 bit
newsig encA3 bit
newsig encB3 bit
linksp encA1 parport.1.pin-05-in
linksp encB1 parport.1.pin-06-in
linksp encA2 parport.1.pin-04-in
linksp encB2 parport.1.pin-03-in
linksp encA3 parport.1.pin-08-in
linksp encB3 parport.1.pin-07-in
linksp encA1 encoder.0.phase-A
linksp encB1 encoder.0.phase-B
linksp encA2 encoder.1.phase-A
linksp encB2 encoder.1.phase-B
linksp encA3 encoder.2.phase-A
linksp encB3 encoder.2.phase-B
#jogwheel stuff
#make this your counts/unit
setp encoder.0.position-scale 1
setp encoder.1.position-scale 1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
#next connect the output from the encoder counters to motion jog X
newsig jogwheel-pos1 s32
linkps encoder.0.counts => jogwheel-pos1
linksp jogwheel-pos1 => axis.0.jog-counts
newsig jogwheel-pos2 s32
linkps encoder.1.counts => jogwheel-pos2
linksp jogwheel-pos2 => axis.2.jog-counts
#next enable the jogwheel jogging
newsig enablejog bit
linksp enablejog => axis.0.jog-enable
linksp enablejog => axis.2.jog-enable
#set it to 1
sets enablejog 1
newsig jogscale float
sets jogscale 0.05
setp encoder.0.x4-mode 1
setp encoder.1.x4-mode 1
linksp Xphase-A parport.0.pin-02-out
linksp jogscale => axis.0.jog-scale
linksp jogscale => axis.2.jog-scale
#feedwheel stuff
setp encoder.2.x4-mode 1
newsig scale float
sets scale 0.05
linksp scale halui.feed-override.scale
linkpp halui.feed-override.counts encoder.2.counts