Hi 109jb,
I use the MPG with 2 PC817 Optocoupler, convert 5V logic level to 3.3v.
Below is my MPG setting in .hal file:
# MPG setup
loadrt arisc pwm="p,p,p,v" out="PA12,PA11,PA1,PA10,PA9,PA13,PA14,PA0,PA3,PC4" in="PC0,PC1,PC2,PC3,PG6,PG7,PG8,PG9" encoders=1
loadrt conv_float_s32 count=1
setp arisc.encoder.0.enable 1
setp arisc.encoder.0.x4-mode 0
setp arisc.encoder.0.pos-scale 4
setp arisc.encoder.0.A-port 6 # 6=PG
setp arisc.encoder.0.A-pin 6 # PG6
setp arisc.encoder.0.B-port 6 # 6=PG
setp arisc.encoder.0.B-pin 7 # PG7
setp arisc.gpio.PG6-pull -1
setp arisc.gpio.PG6-multi-drive-level 0
setp arisc.gpio.PG7-pull -1
setp arisc.gpio.PG7-multi-drive-level 0
net conv0 conv-float-s32.0.in <= arisc.encoder.0.pos
net jog-counter <= conv-float-s32.0.out
net jog-counter => joint.0.jog-counts axis.x.jog-counts
net jog-counter => joint.1.jog-counts axis.y.jog-counts
net jog-counter => joint.2.jog-counts axis.z.jog-counts
I also setup pyvcp to select which axis I want to use with MPG.
loadrt mux16 count=1
addf mux16.0 servo-thread
# connect radiobutton to jog-enable
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0
net jog-enable-x pyvcp.jog-enable.X axis.x.jog-enable
net jog-enable-y pyvcp.jog-enable.Y axis.y.jog-enable
net jog-enable-z pyvcp.jog-enable.Z axis.z.jog-enable
# connect jog scale selector
setp mux16.0.in00 0
setp mux16.0.in01 0.000
setp mux16.0.in02 0.100
setp mux16.0.in03 0
setp mux16.0.in04 0.010
setp mux16.0.in05 0
setp mux16.0.in06 0
setp mux16.0.in07 0
setp mux16.0.in08 0.001
setp mux16.0.in09 0
setp mux16.0.in10 0
net selected-jog-scale mux16.0.out-f => axis.x.jog-scale
net selected-jog-scale mux16.0.out-f => axis.y.jog-scale
net selected-jog-scale mux16.0.out-f => axis.z.jog-scale
net jog-sel1 pyvcp.jog-scale.OFF => mux16.0.sel0
net jog-sel2 pyvcp.jog-scale.0.100 => mux16.0.sel1
net jog-sel3 pyvcp.jog-scale.0.010 => mux16.0.sel2
net jog-sel4 pyvcp.jog-scale.0.001 => mux16.0.sel3