static'ified Marlin.pde.
This commit is contained in:
parent
79d1bfb5c0
commit
87aaf0f70a
2 changed files with 127 additions and 110 deletions
|
@ -251,4 +251,8 @@ const int dropsegments=5; //everything with this number of steps will be ignore
|
|||
#define BLOCK_BUFFER_SIZE 16 // maximize block buffer
|
||||
#endif
|
||||
|
||||
//The ASCII buffer for recieving from the serial:
|
||||
#define MAX_CMD_SIZE 96
|
||||
#define BUFSIZE 4
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
|
|
|
@ -107,68 +107,82 @@ char version_string[] = "1.0.0 Alpha 1";
|
|||
|
||||
//Stepper Movement Variables
|
||||
|
||||
const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
|
||||
float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
||||
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
||||
float offset[3] = {0.0, 0.0, 0.0};
|
||||
bool home_all_axis = true;
|
||||
float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
||||
long gcode_N, gcode_LastN;
|
||||
//===========================================================================
|
||||
//=============================imported variables============================
|
||||
//===========================================================================
|
||||
extern float HeaterPower;
|
||||
|
||||
//public variables
|
||||
float homing_feedrate[] = HOMING_FEEDRATE;
|
||||
bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
|
||||
|
||||
bool relative_mode = false; //Determines Absolute or Relative Coordinates
|
||||
bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode.
|
||||
|
||||
uint8_t fanpwm=0;
|
||||
|
||||
volatile int feedmultiply=100; //100->1 200->2
|
||||
int saved_feedmultiply;
|
||||
volatile bool feedmultiplychanged=false;
|
||||
|
||||
//===========================================================================
|
||||
//=============================private variables=============================
|
||||
//===========================================================================
|
||||
const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
|
||||
static float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
||||
static float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
||||
static float offset[3] = {0.0, 0.0, 0.0};
|
||||
static bool home_all_axis = true;
|
||||
static float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
||||
static long gcode_N, gcode_LastN;
|
||||
|
||||
|
||||
|
||||
static bool relative_mode = false; //Determines Absolute or Relative Coordinates
|
||||
static bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode.
|
||||
|
||||
static uint8_t fanpwm=0;
|
||||
|
||||
|
||||
// comm variables
|
||||
#define MAX_CMD_SIZE 96
|
||||
#define BUFSIZE 4
|
||||
char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
|
||||
bool fromsd[BUFSIZE];
|
||||
int bufindr = 0;
|
||||
int bufindw = 0;
|
||||
int buflen = 0;
|
||||
int i = 0;
|
||||
char serial_char;
|
||||
int serial_count = 0;
|
||||
boolean comment_mode = false;
|
||||
char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc
|
||||
extern float HeaterPower;
|
||||
|
||||
static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
|
||||
static bool fromsd[BUFSIZE];
|
||||
static int bufindr = 0;
|
||||
static int bufindw = 0;
|
||||
static int buflen = 0;
|
||||
static int i = 0;
|
||||
static char serial_char;
|
||||
static int serial_count = 0;
|
||||
static boolean comment_mode = false;
|
||||
static char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc
|
||||
|
||||
const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
|
||||
|
||||
float tt = 0, bt = 0;
|
||||
static float tt = 0, bt = 0;
|
||||
|
||||
//Inactivity shutdown variables
|
||||
unsigned long previous_millis_cmd = 0;
|
||||
unsigned long max_inactive_time = 0;
|
||||
unsigned long stepper_inactive_time = 0;
|
||||
static unsigned long previous_millis_cmd = 0;
|
||||
static unsigned long max_inactive_time = 0;
|
||||
static unsigned long stepper_inactive_time = 0;
|
||||
|
||||
static unsigned long starttime=0;
|
||||
static unsigned long stoptime=0;
|
||||
|
||||
unsigned long starttime=0;
|
||||
unsigned long stoptime=0;
|
||||
#ifdef SDSUPPORT
|
||||
Sd2Card card;
|
||||
SdVolume volume;
|
||||
SdFile root;
|
||||
SdFile file;
|
||||
uint32_t filesize = 0;
|
||||
uint32_t sdpos = 0;
|
||||
bool sdmode = false;
|
||||
bool sdactive = false;
|
||||
bool savetosd = false;
|
||||
int16_t n;
|
||||
unsigned long autostart_atmillis=0;
|
||||
|
||||
bool autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||
static Sd2Card card;
|
||||
static SdVolume volume;
|
||||
static SdFile root;
|
||||
static SdFile file;
|
||||
static uint32_t filesize = 0;
|
||||
static uint32_t sdpos = 0;
|
||||
static bool sdmode = false;
|
||||
static bool sdactive = false;
|
||||
static bool savetosd = false;
|
||||
static int16_t n;
|
||||
static unsigned long autostart_atmillis=0;
|
||||
|
||||
static bool autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||
#endif //SDSUPPORT
|
||||
|
||||
//===========================================================================
|
||||
//=============================ROUTINES=============================
|
||||
//===========================================================================
|
||||
#ifdef SDSUPPORT
|
||||
void initsd()
|
||||
{
|
||||
sdactive = false;
|
||||
|
@ -223,57 +237,8 @@ unsigned long stoptime=0;
|
|||
SERIAL_ERRORLN("error writing to file");
|
||||
}
|
||||
}
|
||||
#endif //SDSUPPORT
|
||||
|
||||
|
||||
//adds an command to the main command buffer
|
||||
//thats really done in a non-safe way.
|
||||
//needs overworking someday
|
||||
void enquecommand(const char *cmd)
|
||||
{
|
||||
if(buflen < BUFSIZE)
|
||||
{
|
||||
//this is dangerous if a mixing of serial and this happsens
|
||||
strcpy(&(cmdbuffer[bufindw][0]),cmd);
|
||||
SERIAL_ECHOLN("enqueing \""<<cmdbuffer[bufindw]<<"\"");
|
||||
bufindw= (bufindw + 1)%BUFSIZE;
|
||||
buflen += 1;
|
||||
}
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(BAUDRATE);
|
||||
SERIAL_ECHOLN("Marlin "<<version_string);
|
||||
Serial.println("start");
|
||||
for(int i = 0; i < BUFSIZE; i++)
|
||||
{
|
||||
fromsd[i] = false;
|
||||
}
|
||||
|
||||
RetrieveSettings(); // loads data from EEPROM if available
|
||||
|
||||
for(int i=0; i < NUM_AXIS; i++)
|
||||
{
|
||||
axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i];
|
||||
}
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
//power to SD reader
|
||||
#if SDPOWER > -1
|
||||
SET_OUTPUT(SDPOWER);
|
||||
WRITE(SDPOWER,HIGH);
|
||||
#endif //SDPOWER
|
||||
quickinitsd();
|
||||
#endif //SDSUPPORT
|
||||
|
||||
plan_init(); // Initialize planner;
|
||||
st_init(); // Initialize stepper;
|
||||
tp_init(); // Initialize temperature loop
|
||||
}
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
|
||||
void checkautostart(bool force)
|
||||
{
|
||||
//this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset
|
||||
|
@ -329,8 +294,56 @@ void checkautostart(bool force)
|
|||
lastnr++;
|
||||
}
|
||||
#else //NO SD SUPORT
|
||||
inline void checkautostart(bool x){}
|
||||
#endif
|
||||
inline void checkautostart(bool x){};
|
||||
|
||||
#endif //SDSUPPORT
|
||||
|
||||
|
||||
//adds an command to the main command buffer
|
||||
//thats really done in a non-safe way.
|
||||
//needs overworking someday
|
||||
void enquecommand(const char *cmd)
|
||||
{
|
||||
if(buflen < BUFSIZE)
|
||||
{
|
||||
//this is dangerous if a mixing of serial and this happsens
|
||||
strcpy(&(cmdbuffer[bufindw][0]),cmd);
|
||||
SERIAL_ECHOLN("enqueing \""<<cmdbuffer[bufindw]<<"\"");
|
||||
bufindw= (bufindw + 1)%BUFSIZE;
|
||||
buflen += 1;
|
||||
}
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(BAUDRATE);
|
||||
SERIAL_ECHOLN("Marlin "<<version_string);
|
||||
Serial.println("start");
|
||||
for(int i = 0; i < BUFSIZE; i++)
|
||||
{
|
||||
fromsd[i] = false;
|
||||
}
|
||||
|
||||
RetrieveSettings(); // loads data from EEPROM if available
|
||||
|
||||
for(int i=0; i < NUM_AXIS; i++)
|
||||
{
|
||||
axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i];
|
||||
}
|
||||
|
||||
#ifdef SDSUPPORT
|
||||
//power to SD reader
|
||||
#if SDPOWER > -1
|
||||
SET_OUTPUT(SDPOWER);
|
||||
WRITE(SDPOWER,HIGH);
|
||||
#endif //SDPOWER
|
||||
quickinitsd();
|
||||
#endif //SDSUPPORT
|
||||
|
||||
plan_init(); // Initialize planner;
|
||||
st_init(); // Initialize stepper;
|
||||
tp_init(); // Initialize temperature loop
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
|
|
Reference in a new issue