yarf 0.1
Yet Another RepRap Firmware
|
00001 /* 00002 * steppers.h 00003 * 00004 * Copyright 2011 Pieter Agten 00005 * 00006 * This file is part of Yarf. 00007 * 00008 * Yarf is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU General Public License as published by 00010 * the Free Software Foundation, either version 3 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * Yarf is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License 00019 * along with Yarf. If not, see <http://www.gnu.org/licenses/>. 00020 */ 00021 00029 #ifndef STEPPERS_H 00030 #define STEPPERS_H 00031 00032 #include "yarf.h" 00033 #include "fastio.h" 00034 00035 00039 #define stepper_enable_x() WRITE(X_ENABLE_PIN, !X_ENABLE_INVERTED) 00040 00043 #define stepper_enable_y() WRITE(Y_ENABLE_PIN, !Y_ENABLE_INVERTED) 00044 00047 #define stepper_enable_z() WRITE(Z_ENABLE_PIN, !Z_ENABLE_INVERTED) 00048 00051 #define stepper_enable_e() WRITE(E_ENABLE_PIN, !E_ENABLE_INVERTED) 00052 00056 #define stepper_disable_x() WRITE(X_ENABLE_PIN, X_ENABLE_INVERTED) 00057 00060 #define stepper_disable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_INVERTED) 00061 00064 #define stepper_disable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_INVERTED) 00065 00068 #define stepper_disable_e() WRITE(E_ENABLE_PIN, E_ENABLE_INVERTED) 00069 00073 #define stepper_x_dir_pos() WRITE(X_DIR_PIN, !X_DIR_INVERTED) 00074 00077 #define stepper_y_dir_pos() WRITE(Y_DIR_PIN, !Y_DIR_INVERTED) 00078 00081 #define stepper_z_dir_pos() WRITE(Z_DIR_PIN, !Z_DIR_INVERTED) 00082 00085 #define stepper_e_dir_pos() WRITE(E_DIR_PIN, !E_DIR_INVERTED) 00086 00090 #define stepper_x_dir_neg() WRITE(X_DIR_PIN, X_DIR_INVERTED) 00091 00094 #define stepper_y_dir_neg() WRITE(Y_DIR_PIN, Y_DIR_INVERTED) 00095 00098 #define stepper_z_dir_neg() WRITE(Z_DIR_PIN, Z_DIR_INVERTED) 00099 00102 #define stepper_e_dir_neg() WRITE(E_DIR_PIN, E_DIR_INVERTED) 00103 00107 #define stepper_x_step_high() WRITE(X_STEP_PIN, !X_STEP_INVERTED) 00108 00111 #define stepper_x_step_low() WRITE(X_STEP_PIN, X_STEP_INVERTED) 00112 00116 #define stepper_y_step_high() WRITE(Y_STEP_PIN, !Y_STEP_INVERTED) 00117 00120 #define stepper_y_step_low() WRITE(Y_STEP_PIN, Y_STEP_INVERTED) 00121 00125 #define stepper_z_step_high() WRITE(Z_STEP_PIN, !Z_STEP_INVERTED) 00126 00129 #define stepper_z_step_low() WRITE(Z_STEP_PIN, Z_STEP_INVERTED) 00130 00134 #define stepper_e_step_high() WRITE(E_STEP_PIN, !E_STEP_INVERTED) 00135 00138 #define stepper_e_step_low() WRITE(E_STEP_PIN, E_STEP_INVERTED) 00139 00140 00146 static inline void 00147 stepper_enable(unsigned char axis) { 00148 switch(axis) { 00149 case X_AXIS: 00150 stepper_enable_x(); 00151 break; 00152 case Y_AXIS: 00153 stepper_enable_y(); 00154 break; 00155 case Z_AXIS: 00156 stepper_enable_z(); 00157 break; 00158 case E_AXIS: 00159 stepper_enable_e(); 00160 break; 00161 } 00162 } 00163 00169 static inline void 00170 stepper_disable(unsigned char axis) { 00171 switch(axis) { 00172 case X_AXIS: 00173 stepper_disable_x(); 00174 break; 00175 case Y_AXIS: 00176 stepper_disable_y(); 00177 break; 00178 case Z_AXIS: 00179 stepper_disable_z(); 00180 break; 00181 case E_AXIS: 00182 stepper_disable_e(); 00183 break; 00184 } 00185 } 00186 00193 static inline void 00194 stepper_dir_pos(unsigned char axis) { 00195 switch(axis) { 00196 case X_AXIS: 00197 stepper_x_dir_pos(); 00198 break; 00199 case Y_AXIS: 00200 stepper_y_dir_pos(); 00201 break; 00202 case Z_AXIS: 00203 stepper_z_dir_pos(); 00204 break; 00205 case E_AXIS: 00206 stepper_e_dir_pos(); 00207 break; 00208 } 00209 } 00210 00217 static inline void 00218 stepper_dir_neg(unsigned char axis) { 00219 switch(axis) { 00220 case X_AXIS: 00221 stepper_x_dir_neg(); 00222 break; 00223 case Y_AXIS: 00224 stepper_y_dir_neg(); 00225 break; 00226 case Z_AXIS: 00227 stepper_z_dir_neg(); 00228 break; 00229 case E_AXIS: 00230 stepper_e_dir_neg(); 00231 break; 00232 } 00233 } 00234 00240 static inline void 00241 stepper_step_high(unsigned char axis) { 00242 switch(axis) { 00243 case X_AXIS: 00244 stepper_x_step_high(); 00245 break; 00246 case Y_AXIS: 00247 stepper_y_step_high(); 00248 break; 00249 case Z_AXIS: 00250 stepper_z_step_high(); 00251 break; 00252 case E_AXIS: 00253 stepper_e_step_high(); 00254 break; 00255 } 00256 } 00257 00263 static inline void 00264 stepper_step_low(unsigned char axis) { 00265 switch(axis) { 00266 case X_AXIS: 00267 stepper_x_step_low(); 00268 break; 00269 case Y_AXIS: 00270 stepper_y_step_low(); 00271 break; 00272 case Z_AXIS: 00273 stepper_z_step_low(); 00274 break; 00275 case E_AXIS: 00276 stepper_e_step_low(); 00277 break; 00278 } 00279 } 00280 00284 void steppers_init(void); 00285 00289 void steppers_disable(void); 00290 00291 00292 #endif //STEPPERS_H