All pastes #207570 Raw Edit

Unnamed

public text v1 · immutable
#207570 ·published 2006-10-18 02:25 UTC
rendered paste body
# core HAL config file for steppers

# first load the core RT modules that will be needed
# kinematics
loadrt trivkins
# 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, three step generators, all three using step/dir
loadrt stepgen step_type=0,0,0
loadrt hal_parport cfg="0x0378"
# spindle speed pwm
# loadrt freqgen step_type=1
loadrt pwmgen output_type=2

# hook functions to base thread (high speed thread for step generation)
addf stepgen.make-pulses base-thread
# generate spindle pwm		base-thread
# addf freqgen.make-pulses        base-thread
addf pwmgen.make-pulses        base-thread

# hook functions to servo thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
# spindle?
# addf freqgen.update-freq        servo-thread
addf pwmgen.update		 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 Ypos-cmd float
linksp Ypos-cmd <= axis.1.motor-pos-cmd
linksp Ypos-cmd => stepgen.1.position-cmd
newsig Zpos-cmd float
linksp Zpos-cmd <= axis.2.motor-pos-cmd
linksp Zpos-cmd => stepgen.2.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 Ypos-fb float
linksp Ypos-fb <= stepgen.1.position-fb
linksp Ypos-fb => axis.1.motor-pos-fb
newsig Zpos-fb float
linksp Zpos-fb <= stepgen.2.position-fb
linksp Zpos-fb => axis.2.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 Yen bit
linksp Yen <= axis.1.amp-enable-out
linksp Yen => stepgen.1.enable
newsig Zen bit
linksp Zen <= axis.2.amp-enable-out
linksp Zen => stepgen.2.enable


# connect signals to step pulse generator outputs
newsig Xstep bit
newsig Xdir  bit
newsig Ystep bit
newsig Ydir  bit
newsig Zstep bit
newsig Zdir  bit
linkps stepgen.0.step Xstep
linkps stepgen.0.dir  Xdir
linkps stepgen.1.step Ystep
linkps stepgen.1.dir  Ydir
linkps stepgen.2.step Zstep
linkps stepgen.2.dir  Zdir

# spindle speed
newsig spindle-speed-cmd float
linkps  motion.spindle-speed-out => spindle-speed-cmd
# linksp spindle-speed-cmd => freqgen.0.velocity
linksp spindle-speed-cmd => pwmgen.0.value

# determined emperically: changes if you change base period
# top speed at this gearing of about 1600 rpm
# setp freqgen.0.velocity-scale 36.0
setp pwmgen.0.scale 36


newsig pwmena bit
linksp pwmena pwmgen.0.enable
sets pwmena true

# accel limiting disabled
# setp freqgen.0.maxaccel 0.0 

# create a signal for "spindle on"
newsig spindle_on bit
linksp spindle_on <= motion.spindle-on

# spindle enable
# linksp spindle_on	=> parport.0.pin-09-out
# setp parport.0.pin-09-out-invert 1



# linkpp freqgen.0.up	=> parport.0.pin-08-out
 linkpp pwmgen.0.up   => parport.0.pin-01-out
 linkpp pwmgen.0.down  => parport.0.pin-08-out

# 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
setp stepgen.2.position-scale [AXIS_2]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
setp stepgen.2.maxvel [AXIS_2]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
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL

# load realtime portion of scope, just to have it handy
loadrt scope_rt