Advertisement
JetForMe

pru-stepper.hal

Apr 5th, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. # #######################################
  2. #
  3. # HAL file for HostMot2 with 3 steppers
  4. #
  5. # Derived from Ted Hyde's original hm2-servo config
  6. #
  7. # Based up work and discussion with Seb & Peter & Jeff
  8. # GNU license references - insert here. www.machinekit.io
  9. #
  10. #
  11. # ########################################
  12. # Firmware files are in /lib/firmware/hm2/7i43/
  13. # Must symlink the hostmot2 firmware directory of sanbox to
  14. # /lib/firmware before running EMC2...
  15. # sudo ln -s $HOME/emc2-sandbox/src/hal/drivers/mesa-hostmot2/firmware /lib/firmware/hm2
  16. #
  17. # See also:
  18. # <http://www.linuxcnc.org/docs/devel/html/man/man9/hostmot2.9.html#config%20modparam>
  19. # and http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?HostMot2
  20. #
  21. # #####################################################################
  22.  
  23.  
  24. # ###################################
  25. # Core EMC/HAL Loads
  26. # ###################################
  27.  
  28. # kinematics
  29. loadrt trivkins
  30.  
  31. # motion controller, get name and thread periods from ini file
  32. # trajectory planner
  33. loadrt tp
  34. loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins
  35.  
  36. # load low-level driver
  37. loadrt [PRUCONF](DRIVER) [PRUCONF](CONFIG)
  38.  
  39.  
  40. # ################################################
  41. # THREADS
  42. # ################################################
  43.  
  44. addf [PRUCONF](DRIVER).capture-position servo-thread
  45. addf motion-command-handler servo-thread
  46. addf motion-controller servo-thread
  47. # revel in the free time here from not having to run PID
  48. addf [PRUCONF](DRIVER).update servo-thread
  49.  
  50.  
  51. # ######################################################
  52. # Axis-of-motion Specific Configs (not the GUI)
  53. # ######################################################
  54.  
  55.  
  56. # ################
  57. # X [0] Axis
  58. # ################
  59.  
  60. # axis enable chain
  61. newsig emcmot.00.enable bit
  62. sets emcmot.00.enable FALSE
  63.  
  64. net emcmot.00.enable <= axis.0.amp-enable-out
  65. net emcmot.00.enable => [PRUCONF](DRIVER).stepgen.00.enable
  66.  
  67.  
  68. # position command and feedback
  69. net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd
  70. net emcmot.00.pos-cmd => [PRUCONF](DRIVER).stepgen.00.position-cmd
  71.  
  72. net motor.00.pos-fb <= [PRUCONF](DRIVER).stepgen.00.position-fb
  73. net motor.00.pos-fb => axis.0.motor-pos-fb
  74.  
  75.  
  76. # timing parameters
  77. setp [PRUCONF](DRIVER).stepgen.00.dirsetup [AXIS_0]DIRSETUP
  78. setp [PRUCONF](DRIVER).stepgen.00.dirhold [AXIS_0]DIRHOLD
  79.  
  80. setp [PRUCONF](DRIVER).stepgen.00.steplen [AXIS_0]STEPLEN
  81. setp [PRUCONF](DRIVER).stepgen.00.stepspace [AXIS_0]STEPSPACE
  82.  
  83. setp [PRUCONF](DRIVER).stepgen.00.position-scale [AXIS_0]SCALE
  84.  
  85. setp [PRUCONF](DRIVER).stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL
  86. setp [PRUCONF](DRIVER).stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC
  87.  
  88. #setp [PRUCONF](DRIVER).stepgen.00.step_type 0
  89. setp [PRUCONF](DRIVER).stepgen.00.steppin 914
  90. setp [PRUCONF](DRIVER).stepgen.00.dirpin 916
  91. #setp enable 918
  92.  
  93. # ################
  94. # Y [1] Axis
  95. # ################
  96.  
  97. # axis enable chain
  98. newsig emcmot.01.enable bit
  99. sets emcmot.01.enable FALSE
  100.  
  101. net emcmot.01.enable <= axis.1.amp-enable-out
  102. net emcmot.01.enable => [PRUCONF](DRIVER).stepgen.01.enable
  103.  
  104.  
  105. # position command and feedback
  106. net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd
  107. net emcmot.01.pos-cmd => [PRUCONF](DRIVER).stepgen.01.position-cmd
  108.  
  109. net motor.01.pos-fb <= [PRUCONF](DRIVER).stepgen.01.position-fb
  110. net motor.01.pos-fb => axis.1.motor-pos-fb
  111.  
  112.  
  113. # timing parameters
  114. setp [PRUCONF](DRIVER).stepgen.01.dirsetup [AXIS_1]DIRSETUP
  115. setp [PRUCONF](DRIVER).stepgen.01.dirhold [AXIS_1]DIRHOLD
  116.  
  117. setp [PRUCONF](DRIVER).stepgen.01.steplen [AXIS_1]STEPLEN
  118. setp [PRUCONF](DRIVER).stepgen.01.stepspace [AXIS_1]STEPSPACE
  119.  
  120. setp [PRUCONF](DRIVER).stepgen.01.position-scale [AXIS_1]SCALE
  121.  
  122. setp [PRUCONF](DRIVER).stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL
  123. setp [PRUCONF](DRIVER).stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC
  124.  
  125. #setp [PRUCONF](DRIVER).stepgen.01.step_type 0
  126. setp [PRUCONF](DRIVER).stepgen.01.steppin 0xA4
  127. setp [PRUCONF](DRIVER).stepgen.01.dirpin 0xA5
  128.  
  129.  
  130. # ################
  131. # Z [2] Axis
  132. # ################
  133.  
  134. # axis enable chain
  135. newsig emcmot.02.enable bit
  136. sets emcmot.02.enable FALSE
  137.  
  138. net emcmot.02.enable <= axis.2.amp-enable-out
  139. net emcmot.02.enable => [PRUCONF](DRIVER).stepgen.02.enable
  140.  
  141.  
  142. # position command and feedback
  143. net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd
  144. net emcmot.02.pos-cmd => [PRUCONF](DRIVER).stepgen.02.position-cmd
  145.  
  146. net motor.02.pos-fb <= [PRUCONF](DRIVER).stepgen.02.position-fb
  147. net motor.02.pos-fb => axis.2.motor-pos-fb
  148.  
  149.  
  150. # timing parameters
  151. setp [PRUCONF](DRIVER).stepgen.02.dirsetup [AXIS_2]DIRSETUP
  152. setp [PRUCONF](DRIVER).stepgen.02.dirhold [AXIS_2]DIRHOLD
  153.  
  154. setp [PRUCONF](DRIVER).stepgen.02.steplen [AXIS_2]STEPLEN
  155. setp [PRUCONF](DRIVER).stepgen.02.stepspace [AXIS_2]STEPSPACE
  156.  
  157. setp [PRUCONF](DRIVER).stepgen.02.position-scale [AXIS_2]SCALE
  158.  
  159. setp [PRUCONF](DRIVER).stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL
  160. setp [PRUCONF](DRIVER).stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC
  161.  
  162. #setp [PRUCONF](DRIVER).stepgen.02.step_type 0
  163. setp [PRUCONF](DRIVER).stepgen.02.steppin 0xA6
  164. setp [PRUCONF](DRIVER).stepgen.02.dirpin 0xA7
  165.  
  166.  
  167.  
  168.  
  169. #
  170. # The Mesa AnyIO output pins can be in open-drain mode (drive low, float
  171. # high) or push/pull mode (drive low, drive high).
  172. #
  173. # When a logical output is 1 in open-drain mode, the FPGA lets the pin
  174. # float and it gets pulled high to +5V via a 10K resistor.
  175. #
  176. # When a logical output is 1 in push/pull mode, the FPGA pushes the pin
  177. # high but only to +3.3V. This is problematic on some kinds of inputs.
  178. #
  179.  
  180. #setp [PRUCONF](DRIVER).gpio.048.is_opendrain 1
  181. #setp [PRUCONF](DRIVER).gpio.049.is_opendrain 1
  182.  
  183. #setp [PRUCONF](DRIVER).gpio.054.is_opendrain 1
  184. #setp [PRUCONF](DRIVER).gpio.055.is_opendrain 1
  185.  
  186. #setp [PRUCONF](DRIVER).gpio.060.is_opendrain 1
  187. #setp [PRUCONF](DRIVER).gpio.061.is_opendrain 1
  188.  
  189.  
  190.  
  191.  
  192. # ##################################################
  193. # Standard I/O Block - EStop, Etc
  194. # ##################################################
  195.  
  196. # create a signal for the estop loopback
  197. net estop-loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in
  198.  
  199. # create signals for tool loading loopback
  200. net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
  201. net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement