Inital rewrite of stepticker and associated code to implement accleration per tick.
[clinton/Smoothieware.git] / src / modules / robot / Stepper.h
dissimilarity index 71%
index 0cf0cbf..4fb741f 100644 (file)
@@ -1,74 +1,47 @@
-/*  
-      This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
-      Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-      Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-      You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. 
-*/
-
-#ifndef STEPPER_H
-#define STEPPER_H
-#include "libs/Module.h"
-#include "libs/Kernel.h"
-#include "Planner.h"
-#include "Block.h"
-
-#define microseconds_per_step_pulse_ckeckusm        42333
-#define acceleration_ticks_per_second_checksum      25075
-#define minimum_steps_per_minute_checksum           9003
-#define base_stepping_frequency_checksum            21918
-#define alpha_step_pin_checksum                     11468
-#define beta_step_pin_checksum                      22114
-#define gamma_step_pin_checksum                     1225
-#define alpha_dir_pin_checksum                      55887
-#define beta_dir_pin_checksum                       28644
-#define gamma_dir_pin_checksum                      46412
-
-class Stepper : public Module {
-    public:
-        Stepper();
-        void on_module_loaded();
-        void on_config_reload(void* argument);
-        void on_block_begin(void* argument);
-        void on_block_end(void* argument);
-        void on_play(void* argument);
-        void on_pause(void* argument);
-        void main_interrupt();
-        void trapezoid_generator_reset();
-        void set_step_events_per_minute(double steps_per_minute);
-        void trapezoid_generator_tick();
-        void reset_step_pins();
-        void update_offsets();
-        int config_step_timer( int cycles );
-
-        Block* current_block;
-        int counters[3];
-        int stepped[3]; 
-        int offsets[3]; 
-        float counter_alpha;
-        float counter_beta;
-        float counter_gamma;
-        int step_events_completed; 
-        unsigned int out_bits; 
-        double trapezoid_adjusted_rate;
-        int trapezoid_tick_cycle_counter;
-        int cycles_per_step_event; 
-        bool trapezoid_generator_busy;
-        int microseconds_per_step_pulse; 
-        int acceleration_ticks_per_second;
-        int divider;
-        int minimum_steps_per_minute;
-        int base_stepping_frequency;
-        Pin* alpha_step_pin;
-        Pin* beta_step_pin;
-        Pin* gamma_step_pin;
-        Pin* alpha_dir_pin;
-        Pin* beta_dir_pin;
-        Pin* gamma_dir_pin;
-        unsigned short step_bits[3];
-        int counter_increment;
-};
-
-
-
-
-#endif
+/*
+      This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
+      Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+      Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+      You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef STEPPER_H
+#define STEPPER_H
+
+#include "libs/Module.h"
+#include <stdint.h>
+
+class Block;
+class StepperMotor;
+
+class Stepper : public Module
+{
+public:
+    Stepper();
+    void on_module_loaded();
+    void on_config_reload(void *argument);
+    void on_block_begin(void *argument);
+    void on_block_end(void *argument);
+    void on_gcode_received(void *argument);
+    void on_halt(void *argument);
+
+    void turn_enable_pins_on();
+    void turn_enable_pins_off();
+
+    const Block *get_current_block() const { return current_block; }
+
+private:
+    void stepper_motor_finished_move();
+
+    Block *current_block;
+
+    struct {
+        bool enable_pins_status:1;
+    };
+
+};
+
+
+
+
+#endif