forked from MarlinFirmware/Marlin
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
132 additions
and
129 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,124 +1,128 @@ | ||
#ifndef __MARLINH | ||
#define __MARLINH | ||
|
||
// Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. | ||
// Licence: GPL | ||
#include <WProgram.h> | ||
#include "fastio.h" | ||
|
||
|
||
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in | ||
// the source g-code and may never actually be reached if acceleration management is active. | ||
typedef struct { | ||
// Fields used by the bresenham algorithm for tracing the line | ||
long steps_x, steps_y, steps_z, steps_e; // Step count along each axis | ||
long step_event_count; // The number of step events required to complete this block | ||
volatile long accelerate_until; // The index of the step event on which to stop acceleration | ||
volatile long decelerate_after; // The index of the step event on which to start decelerating | ||
volatile long acceleration_rate; // The acceleration rate used for acceleration calculation | ||
unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) | ||
|
||
long advance_rate; | ||
volatile long initial_advance; | ||
volatile long final_advance; | ||
float advance; | ||
|
||
// Fields used by the motion planner to manage acceleration | ||
float speed_x, speed_y, speed_z, speed_e; // Nominal mm/minute for each axis | ||
float nominal_speed; // The nominal speed for this block in mm/min | ||
float millimeters; // The total travel of this block in mm | ||
float entry_speed; | ||
float acceleration; // acceleration mm/sec^2 | ||
|
||
// Settings for the trapezoid generator | ||
long nominal_rate; // The nominal step rate for this block in step_events/sec | ||
volatile long initial_rate; // The jerk-adjusted step rate at start of block | ||
volatile long final_rate; // The minimal rate at exit | ||
long acceleration_st; // acceleration steps/sec^2 | ||
volatile char busy; | ||
} block_t; | ||
|
||
|
||
void get_command(); | ||
void process_commands(); | ||
|
||
void manage_inactivity(byte debug); | ||
|
||
void manage_heater(); | ||
//int temp2analogu(int celsius, const short table[][2], int numtemps); | ||
//float analog2tempu(int raw, const short table[][2], int numtemps); | ||
float temp2analog(int celsius); | ||
float temp2analogBed(int celsius); | ||
float analog2temp(int raw); | ||
float analog2tempBed(int raw); | ||
|
||
#ifdef HEATER_USES_THERMISTOR | ||
#define HEATERSOURCE 1 | ||
#endif | ||
#ifdef BED_USES_THERMISTOR | ||
#define BEDSOURCE 1 | ||
#endif | ||
|
||
//#define temp2analogh( c ) temp2analogu((c),temptable,NUMTEMPS) | ||
//#define analog2temp( c ) analog2tempu((c),temptable,NUMTEMPS) | ||
|
||
#if X_ENABLE_PIN > -1 | ||
#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON) | ||
#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON) | ||
#else | ||
#define enable_x() ; | ||
#define disable_x() ; | ||
#endif | ||
#if Y_ENABLE_PIN > -1 | ||
#define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON) | ||
#define disable_y() WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON) | ||
#else | ||
#define enable_y() ; | ||
#define disable_y() ; | ||
#endif | ||
#if Z_ENABLE_PIN > -1 | ||
#define enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) | ||
#define disable_z() WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON) | ||
#else | ||
#define enable_z() ; | ||
#define disable_z() ; | ||
#endif | ||
|
||
#if E_ENABLE_PIN > -1 | ||
|
||
#define enable_e() WRITE(E_ENABLE_PIN, E_ENABLE_ON) | ||
#define disable_e() WRITE(E_ENABLE_PIN,!E_ENABLE_ON) | ||
|
||
#else | ||
#define enable_e() ; | ||
#define disable_e() ; | ||
#endif | ||
|
||
#define X_AXIS 0 | ||
#define Y_AXIS 1 | ||
#define Z_AXIS 2 | ||
#define E_AXIS 3 | ||
|
||
void FlushSerialRequestResend(); | ||
void ClearToSend(); | ||
|
||
void get_coordinates(); | ||
void prepare_move(); | ||
void linear_move(unsigned long steps_remaining[]); | ||
void do_step(int axis); | ||
void kill(byte debug); | ||
|
||
|
||
|
||
void check_axes_activity(); | ||
void plan_init(); | ||
void st_init(); | ||
void tp_init(); | ||
void plan_buffer_line(float x, float y, float z, float e, float feed_rate); | ||
void plan_set_position(float x, float y, float z, float e); | ||
void st_wake_up(); | ||
void st_synchronize(); | ||
void enquecommand(const char *cmd); | ||
|
||
|
||
#ifndef __MARLINH | ||
#define __MARLINH | ||
|
||
// Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. | ||
// Licence: GPL | ||
#include <WProgram.h> | ||
#include "fastio.h" | ||
|
||
|
||
#define ECHO(x) Serial << "echo: " << x; | ||
#define ECHOLN(x) Serial << "echo: "<<x<<endl; | ||
|
||
|
||
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in | ||
// the source g-code and may never actually be reached if acceleration management is active. | ||
typedef struct { | ||
// Fields used by the bresenham algorithm for tracing the line | ||
long steps_x, steps_y, steps_z, steps_e; // Step count along each axis | ||
long step_event_count; // The number of step events required to complete this block | ||
volatile long accelerate_until; // The index of the step event on which to stop acceleration | ||
volatile long decelerate_after; // The index of the step event on which to start decelerating | ||
volatile long acceleration_rate; // The acceleration rate used for acceleration calculation | ||
unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) | ||
|
||
long advance_rate; | ||
volatile long initial_advance; | ||
volatile long final_advance; | ||
float advance; | ||
|
||
// Fields used by the motion planner to manage acceleration | ||
float speed_x, speed_y, speed_z, speed_e; // Nominal mm/minute for each axis | ||
float nominal_speed; // The nominal speed for this block in mm/min | ||
float millimeters; // The total travel of this block in mm | ||
float entry_speed; | ||
float acceleration; // acceleration mm/sec^2 | ||
|
||
// Settings for the trapezoid generator | ||
long nominal_rate; // The nominal step rate for this block in step_events/sec | ||
volatile long initial_rate; // The jerk-adjusted step rate at start of block | ||
volatile long final_rate; // The minimal rate at exit | ||
long acceleration_st; // acceleration steps/sec^2 | ||
volatile char busy; | ||
} block_t; | ||
|
||
|
||
void get_command(); | ||
void process_commands(); | ||
|
||
void manage_inactivity(byte debug); | ||
|
||
void manage_heater(); | ||
//int temp2analogu(int celsius, const short table[][2], int numtemps); | ||
//float analog2tempu(int raw, const short table[][2], int numtemps); | ||
float temp2analog(int celsius); | ||
float temp2analogBed(int celsius); | ||
float analog2temp(int raw); | ||
float analog2tempBed(int raw); | ||
|
||
#ifdef HEATER_USES_THERMISTOR | ||
#define HEATERSOURCE 1 | ||
#endif | ||
#ifdef BED_USES_THERMISTOR | ||
#define BEDSOURCE 1 | ||
#endif | ||
|
||
//#define temp2analogh( c ) temp2analogu((c),temptable,NUMTEMPS) | ||
//#define analog2temp( c ) analog2tempu((c),temptable,NUMTEMPS) | ||
|
||
#if X_ENABLE_PIN > -1 | ||
#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON) | ||
#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON) | ||
#else | ||
#define enable_x() ; | ||
#define disable_x() ; | ||
#endif | ||
#if Y_ENABLE_PIN > -1 | ||
#define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON) | ||
#define disable_y() WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON) | ||
#else | ||
#define enable_y() ; | ||
#define disable_y() ; | ||
#endif | ||
#if Z_ENABLE_PIN > -1 | ||
#define enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) | ||
#define disable_z() WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON) | ||
#else | ||
#define enable_z() ; | ||
#define disable_z() ; | ||
#endif | ||
|
||
#if E_ENABLE_PIN > -1 | ||
|
||
#define enable_e() WRITE(E_ENABLE_PIN, E_ENABLE_ON) | ||
#define disable_e() WRITE(E_ENABLE_PIN,!E_ENABLE_ON) | ||
|
||
#else | ||
#define enable_e() ; | ||
#define disable_e() ; | ||
#endif | ||
|
||
#define X_AXIS 0 | ||
#define Y_AXIS 1 | ||
#define Z_AXIS 2 | ||
#define E_AXIS 3 | ||
|
||
void FlushSerialRequestResend(); | ||
void ClearToSend(); | ||
|
||
void get_coordinates(); | ||
void prepare_move(); | ||
void linear_move(unsigned long steps_remaining[]); | ||
void do_step(int axis); | ||
void kill(byte debug); | ||
|
||
|
||
|
||
void check_axes_activity(); | ||
void plan_init(); | ||
void st_init(); | ||
void tp_init(); | ||
void plan_buffer_line(float x, float y, float z, float e, float feed_rate); | ||
void plan_set_position(float x, float y, float z, float e); | ||
void st_wake_up(); | ||
void st_synchronize(); | ||
void enquecommand(const char *cmd); | ||
|
||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters