added configuration options, feedrate gcode to the extruder module
[clinton/Smoothieware.git] / src / modules / tools / extruder / Extruder.h
1 #ifndef EXTURDER_MODULE_H
2 #define EXTRUDER_MODULE_H
3
4 #include "mbed.h"
5 #include "libs/Module.h"
6 #include "libs/Kernel.h"
7 #include "modules/robot/Block.h"
8
9 #define microseconds_per_step_pulse_ckeckusm 42333
10 #define extruder_module_enable_checksum 6183
11 #define steps_per_millimeter_checksum 58088
12 #define default_feed_rate_checksum 53183
13 #define acceleration_checksum 60356
14
15
16 class Extruder : public Module{
17 public:
18 Extruder(PinName stppin, PinName dirpin);
19 void on_module_loaded();
20 void on_config_reload(void* argument);
21 void on_gcode_execute(void* argument);
22 void on_block_begin(void* argument);
23 void on_block_end(void* argument);
24 void on_speed_change(void* argument);
25 void acceleration_tick();
26 void stepping_tick();
27
28 DigitalOut step_pin; // Step pin for the stepper driver
29 DigitalOut dir_pin; // Dir pin for the stepper driver
30 double start_position; // Start point ( in steps ) for the current move
31 double target_position; // End point ( in steps ) for the current move
32 double current_position; // Current point ( in steps ) for the current move, incremented every time a step is outputed
33 Ticker acceleration_ticker; // Ticker responsible with updating the speed ( acceleration management ). Uses Timer3
34 Block* current_block; // Current block we are stepping, same as Stepper's one
35 int microseconds_per_step_pulse; // Pulse duration for step pulses
36 double steps_per_millimeter; // Steps to travel one millimeter
37 double feed_rate; //
38 double acceleration; //
39
40 bool solo_mode;
41 double travel_ratio;
42 double travel_distance;
43 bool absolute_mode;
44
45 int direction;
46
47 bool debug;
48 int debug_count;
49 };
50
51 #endif