-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpaintbot.hal
136 lines (113 loc) · 4.44 KB
/
paintbot.hal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
loadrt 4wirekins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x1040 out "
loadrt stepgen step_type=0,0,0,0
loadrt or2 count=3
loadrt mux4 count=1
loadrt oneshot count=1
loadrt pwmgen output_type=0
setp 4wirekins.Lx 37.402
setp 4wirekins.Ly 37.402
setp 4wirekins.Eb 2.75
setp 4wirekins.Eh 2.75
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf or2.0 base-thread
addf parport.0.write 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
addf pwmgen.update servo-thread
addf oneshot.0 servo-thread
# setup solenoid fire chain with latch max current and then a lower holding current
net dout-00 <= motion.digital-out-00
# digital out 00 starts oneshot and pwm holding signal
net dout-00 => oneshot.0.in
net dout-00 => pwmgen.0.enable
# latch time in seconds and hold current precent
setp oneshot.0.width [SOLENOID]LATCH_TIME_SECONDS
setp pwmgen.0.value [SOLENOID]HOLD_CURRENT_PERCENT
setp pwmgen.0.pwm-freq 1000
setp pwmgen.0.dither-pwm 1
# if either oneshot or pwm is active, then output is active
net pwmgen-out <= pwmgen.0.pwm => or2.0.in0
net oneshot-out <= oneshot.0.out => or2.0.in1
net solenoid-final <= or2.0.out
net dout-01 <= motion.digital-out-01
net dout-02 <= motion.digital-out-02
net a0-enable => parport.0.pin-01-out
setp parport.0.pin-01-out-invert 1
net a0-step => parport.0.pin-02-out
net a0-dir => parport.0.pin-03-out
setp parport.0.pin-03-out-invert 0
net a1-step => parport.0.pin-04-out
net a1-dir => parport.0.pin-05-out
setp parport.0.pin-05-out-invert 1
net a2-step => parport.0.pin-06-out
net a2-dir => parport.0.pin-07-out
setp parport.0.pin-07-out-invert 0
net a3-step => parport.0.pin-08-out
net a3-dir => parport.0.pin-09-out
setp parport.0.pin-09-out-invert 1
net solenoid-final => parport.0.pin-17-out
net dout-01 => parport.0.pin-16-out
net dout-02 => parport.0.pin-14-out
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1000
setp stepgen.0.stepspace 1000
setp stepgen.0.dirhold 200
setp stepgen.0.dirsetup 200
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net a0-pos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net a0-pos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
#net a0-pos axis.0.motor-pos-fb axis.0.motor-pos-cmd
net a0-step <= stepgen.0.step
net a0-dir <= stepgen.0.dir
net a0-enable axis.0.amp-enable-out => stepgen.0.enable
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1000
setp stepgen.1.stepspace 1000
setp stepgen.1.dirhold 200
setp stepgen.1.dirsetup 200
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net a1-pos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net a1-pos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
#net a1-pos axis.1.motor-pos-fb axis.1.motor-pos-cmd
net a1-step <= stepgen.1.step
net a1-dir <= stepgen.1.dir
net a1-enable axis.1.amp-enable-out => stepgen.1.enable
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1000
setp stepgen.2.stepspace 1000
setp stepgen.2.dirhold 200
setp stepgen.2.dirsetup 200
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net a2-pos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net a2-pos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
#net a2-pos axis.2.motor-pos-fb axis.2.motor-pos-cmd
net a2-step <= stepgen.2.step
net a2-dir <= stepgen.2.dir
net a2-enable axis.2.amp-enable-out => stepgen.2.enable
setp stepgen.3.position-scale [AXIS_3]SCALE
setp stepgen.3.steplen 1000
setp stepgen.3.stepspace 1000
setp stepgen.3.dirhold 200
setp stepgen.3.dirsetup 200
setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
net a3-pos-cmd axis.3.motor-pos-cmd => stepgen.3.position-cmd
net a3-pos-fb stepgen.3.position-fb => axis.3.motor-pos-fb
#net a3-pos axis.3.motor-pos-fb axis.3.motor-pos-cmd
net a3-step <= stepgen.3.step
net a3-dir <= stepgen.3.dir
net a3-enable axis.3.amp-enable-out => stepgen.3.enable
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
loadusr hal_input -KRAL Xbox