yarf 0.1
Yet Another RepRap Firmware
src/hardware/steppers.h
Go to the documentation of this file.
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
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines