summaryrefslogtreecommitdiff
path: root/configs/by_interface/pico/univpwmv/univpwm_load.hal
blob: 5508c6474675edbc00c75a68f67202273b5ba8e5 (plain)
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
# loads all HAL modules for Universal PWM controller with threading
# this version activates velocity estimation in the PPMC driver
#     with the timestamp=xx parameter in the loadrt line
#     this will only work with rev 4 UPC firmware and EMC2.4.6 or later

# 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]SERVO_PERIOD key=[EMCMOT]SHMEM_KEY

# next load the PID module, for four PID loops
loadrt pid num_chan=4

# install Universal PWM Controller driver
loadrt hal_ppmc port_addr="0x378" timestamp="0x00"

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

# make some signals for the scope for tuning.
loadrt ddt count=4
loadrt not count=1
loadrt estop_latch count=1
loadrt and2 count=1
loadrt or2 count=1
loadrt conv_s32_float count=1
loadrt mult2 count=2
loadrt lowpass count=1

# set up the realtime thread
# read inputs first
addf ppmc.0.read       servo-thread
# then run the motion controller
addf motion-command-handler servo-thread
addf and2.0            servo-thread
addf estop-latch.0     servo-thread
addf motion-controller servo-thread
addf not.0	       servo-thread
# then the PID loops
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pid.2.do-pid-calcs servo-thread
addf pid.3.do-pid-calcs servo-thread
#  for spindle
addf or2.0              servo-thread
addf conv-s32-float.0   servo-thread
addf mult2.0            servo-thread
addf mult2.1            servo-thread
addf lowpass.0          servo-thread
# write outputs last
addf ppmc.0.write servo-thread