static'ified Marlin.pde.
This commit is contained in:
parent
79d1bfb5c0
commit
87aaf0f70a
2 changed files with 127 additions and 110 deletions
|
@ -61,11 +61,11 @@ const bool ENDSTOPS_INVERTING = true; // set to true to invert the logic of the
|
||||||
#define ULTIPANEL
|
#define ULTIPANEL
|
||||||
#define ULTIPANEL
|
#define ULTIPANEL
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
//#define NEWPANEL //enable this if you have a click-encoder panel
|
//#define NEWPANEL //enable this if you have a click-encoder panel
|
||||||
#define SDSUPPORT
|
#define SDSUPPORT
|
||||||
#define ULTRA_LCD
|
#define ULTRA_LCD
|
||||||
#define LCD_WIDTH 20
|
#define LCD_WIDTH 20
|
||||||
#define LCD_HEIGHT 4
|
#define LCD_HEIGHT 4
|
||||||
#else //no panel but just lcd
|
#else //no panel but just lcd
|
||||||
#ifdef ULTRA_LCD
|
#ifdef ULTRA_LCD
|
||||||
#define LCD_WIDTH 16
|
#define LCD_WIDTH 16
|
||||||
|
@ -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
|
#define BLOCK_BUFFER_SIZE 16 // maximize block buffer
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//The ASCII buffer for recieving from the serial:
|
||||||
|
#define MAX_CMD_SIZE 96
|
||||||
|
#define BUFSIZE 4
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //__CONFIGURATION_H
|
||||||
|
|
|
@ -107,68 +107,82 @@ char version_string[] = "1.0.0 Alpha 1";
|
||||||
|
|
||||||
//Stepper Movement Variables
|
//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};
|
//=============================imported variables============================
|
||||||
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
//===========================================================================
|
||||||
float offset[3] = {0.0, 0.0, 0.0};
|
extern float HeaterPower;
|
||||||
bool home_all_axis = true;
|
|
||||||
float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
|
||||||
long gcode_N, gcode_LastN;
|
|
||||||
|
|
||||||
|
//public variables
|
||||||
float homing_feedrate[] = HOMING_FEEDRATE;
|
float homing_feedrate[] = HOMING_FEEDRATE;
|
||||||
bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
|
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
|
volatile int feedmultiply=100; //100->1 200->2
|
||||||
int saved_feedmultiply;
|
int saved_feedmultiply;
|
||||||
volatile bool feedmultiplychanged=false;
|
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
|
// comm variables
|
||||||
#define MAX_CMD_SIZE 96
|
|
||||||
#define BUFSIZE 4
|
static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
|
||||||
char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
|
static bool fromsd[BUFSIZE];
|
||||||
bool fromsd[BUFSIZE];
|
static int bufindr = 0;
|
||||||
int bufindr = 0;
|
static int bufindw = 0;
|
||||||
int bufindw = 0;
|
static int buflen = 0;
|
||||||
int buflen = 0;
|
static int i = 0;
|
||||||
int i = 0;
|
static char serial_char;
|
||||||
char serial_char;
|
static int serial_count = 0;
|
||||||
int serial_count = 0;
|
static boolean comment_mode = false;
|
||||||
boolean comment_mode = false;
|
static char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc
|
||||||
char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc
|
|
||||||
extern float HeaterPower;
|
|
||||||
|
|
||||||
const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
|
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
|
//Inactivity shutdown variables
|
||||||
unsigned long previous_millis_cmd = 0;
|
static unsigned long previous_millis_cmd = 0;
|
||||||
unsigned long max_inactive_time = 0;
|
static unsigned long max_inactive_time = 0;
|
||||||
unsigned long stepper_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
|
#ifdef SDSUPPORT
|
||||||
Sd2Card card;
|
static Sd2Card card;
|
||||||
SdVolume volume;
|
static SdVolume volume;
|
||||||
SdFile root;
|
static SdFile root;
|
||||||
SdFile file;
|
static SdFile file;
|
||||||
uint32_t filesize = 0;
|
static uint32_t filesize = 0;
|
||||||
uint32_t sdpos = 0;
|
static uint32_t sdpos = 0;
|
||||||
bool sdmode = false;
|
static bool sdmode = false;
|
||||||
bool sdactive = false;
|
static bool sdactive = false;
|
||||||
bool savetosd = false;
|
static bool savetosd = false;
|
||||||
int16_t n;
|
static int16_t n;
|
||||||
unsigned long autostart_atmillis=0;
|
static 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 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()
|
void initsd()
|
||||||
{
|
{
|
||||||
sdactive = false;
|
sdactive = false;
|
||||||
|
@ -223,6 +237,65 @@ unsigned long stoptime=0;
|
||||||
SERIAL_ERRORLN("error writing to file");
|
SERIAL_ERRORLN("error writing to file");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
if(!force)
|
||||||
|
{
|
||||||
|
if(!autostart_stilltocheck)
|
||||||
|
return;
|
||||||
|
if(autostart_atmillis<millis())
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
autostart_stilltocheck=false;
|
||||||
|
if(!sdactive)
|
||||||
|
{
|
||||||
|
initsd();
|
||||||
|
if(!sdactive) //fail
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
static int lastnr=0;
|
||||||
|
char autoname[30];
|
||||||
|
sprintf(autoname,"auto%i.g",lastnr);
|
||||||
|
for(int i=0;i<(int)strlen(autoname);i++)
|
||||||
|
autoname[i]=tolower(autoname[i]);
|
||||||
|
dir_t p;
|
||||||
|
|
||||||
|
root.rewind();
|
||||||
|
|
||||||
|
bool found=false;
|
||||||
|
while (root.readDir(p) > 0)
|
||||||
|
{
|
||||||
|
for(int i=0;i<(int)strlen((char*)p.name);i++)
|
||||||
|
p.name[i]=tolower(p.name[i]);
|
||||||
|
//Serial.print((char*)p.name);
|
||||||
|
//Serial.print(" ");
|
||||||
|
//Serial.println(autoname);
|
||||||
|
if(p.name[9]!='~') //skip safety copies
|
||||||
|
if(strncmp((char*)p.name,autoname,5)==0)
|
||||||
|
{
|
||||||
|
char cmd[30];
|
||||||
|
|
||||||
|
sprintf(cmd,"M23 %s",autoname);
|
||||||
|
//sprintf(cmd,"M115");
|
||||||
|
//enquecommand("G92 Z0");
|
||||||
|
//enquecommand("G1 Z10 F2000");
|
||||||
|
//enquecommand("G28 X-105 Y-105");
|
||||||
|
enquecommand(cmd);
|
||||||
|
enquecommand("M24");
|
||||||
|
found=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!found)
|
||||||
|
lastnr=-1;
|
||||||
|
else
|
||||||
|
lastnr++;
|
||||||
|
}
|
||||||
|
#else //NO SD SUPORT
|
||||||
|
inline void checkautostart(bool x){};
|
||||||
|
|
||||||
#endif //SDSUPPORT
|
#endif //SDSUPPORT
|
||||||
|
|
||||||
|
|
||||||
|
@ -272,66 +345,6 @@ void setup()
|
||||||
tp_init(); // Initialize temperature loop
|
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
|
|
||||||
if(!force)
|
|
||||||
{
|
|
||||||
if(!autostart_stilltocheck)
|
|
||||||
return;
|
|
||||||
if(autostart_atmillis<millis())
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
autostart_stilltocheck=false;
|
|
||||||
if(!sdactive)
|
|
||||||
{
|
|
||||||
initsd();
|
|
||||||
if(!sdactive) //fail
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
static int lastnr=0;
|
|
||||||
char autoname[30];
|
|
||||||
sprintf(autoname,"auto%i.g",lastnr);
|
|
||||||
for(int i=0;i<(int)strlen(autoname);i++)
|
|
||||||
autoname[i]=tolower(autoname[i]);
|
|
||||||
dir_t p;
|
|
||||||
|
|
||||||
root.rewind();
|
|
||||||
|
|
||||||
bool found=false;
|
|
||||||
while (root.readDir(p) > 0)
|
|
||||||
{
|
|
||||||
for(int i=0;i<(int)strlen((char*)p.name);i++)
|
|
||||||
p.name[i]=tolower(p.name[i]);
|
|
||||||
//Serial.print((char*)p.name);
|
|
||||||
//Serial.print(" ");
|
|
||||||
//Serial.println(autoname);
|
|
||||||
if(p.name[9]!='~') //skip safety copies
|
|
||||||
if(strncmp((char*)p.name,autoname,5)==0)
|
|
||||||
{
|
|
||||||
char cmd[30];
|
|
||||||
|
|
||||||
sprintf(cmd,"M23 %s",autoname);
|
|
||||||
//sprintf(cmd,"M115");
|
|
||||||
//enquecommand("G92 Z0");
|
|
||||||
//enquecommand("G1 Z10 F2000");
|
|
||||||
//enquecommand("G28 X-105 Y-105");
|
|
||||||
enquecommand(cmd);
|
|
||||||
enquecommand("M24");
|
|
||||||
found=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found)
|
|
||||||
lastnr=-1;
|
|
||||||
else
|
|
||||||
lastnr++;
|
|
||||||
}
|
|
||||||
#else //NO SD SUPORT
|
|
||||||
inline void checkautostart(bool x){}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue