untestest commit, so I don't loose code.. features runout prevention addons
This commit is contained in:
parent
3320a5b37d
commit
651cde8b98
|
@ -248,7 +248,7 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||||
#define SLOWDOWN
|
#define SLOWDOWN
|
||||||
|
|
||||||
//default stepper release if idle
|
//default stepper release if idle
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 1200
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_COMMAND "M84 X Y E" //z stays powered
|
#define DEFAULT_STEPPER_DEACTIVE_COMMAND "M84 X Y E" //z stays powered
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -176,8 +176,10 @@ const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
|
||||||
|
|
||||||
//Inactivity shutdown variables
|
//Inactivity shutdown variables
|
||||||
static unsigned long previous_millis_cmd = 0;
|
static unsigned long previous_millis_cmd = 0;
|
||||||
static unsigned long max_inactive_time = 0;
|
static unsigned long previous_millis_runoutprevent = 0;
|
||||||
static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000;
|
//static unsigned long previous_millis_beep = 0;
|
||||||
|
static unsigned long max_inactive_time=0;
|
||||||
|
static unsigned long stepper_inactive_time = 0;
|
||||||
static unsigned long last_stepperdisabled_time=30*1000; //first release check after 30 seconds
|
static unsigned long last_stepperdisabled_time=30*1000; //first release check after 30 seconds
|
||||||
|
|
||||||
static unsigned long starttime=0;
|
static unsigned long starttime=0;
|
||||||
|
@ -243,6 +245,10 @@ void setup()
|
||||||
fromsd[i] = false;
|
fromsd[i] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
max_inactive_time = DEFAULT_MAX_INACTIVE_TIME*1000;
|
||||||
|
stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000;
|
||||||
|
|
||||||
|
|
||||||
EEPROM_RetrieveSettings(); // loads data from EEPROM if available
|
EEPROM_RetrieveSettings(); // loads data from EEPROM if available
|
||||||
|
|
||||||
for(int8_t i=0; i < NUM_AXIS; i++)
|
for(int8_t i=0; i < NUM_AXIS; i++)
|
||||||
|
@ -415,6 +421,7 @@ FORCE_INLINE void get_command()
|
||||||
SERIAL_ECHO_START;
|
SERIAL_ECHO_START;
|
||||||
SERIAL_ECHOLN(time);
|
SERIAL_ECHOLN(time);
|
||||||
LCD_MESSAGE(time);
|
LCD_MESSAGE(time);
|
||||||
|
st_synchronize();
|
||||||
card.printingHasFinished();
|
card.printingHasFinished();
|
||||||
card.checkautostart(true);
|
card.checkautostart(true);
|
||||||
|
|
||||||
|
@ -1200,11 +1207,34 @@ void prepare_arc_move(char isclockwise) {
|
||||||
|
|
||||||
void manage_inactivity(byte debug)
|
void manage_inactivity(byte debug)
|
||||||
{
|
{
|
||||||
if( (millis()-previous_millis_cmd) > max_inactive_time )
|
unsigned long curtime=millis();
|
||||||
|
SERIAL_ECHO_START;
|
||||||
|
SERIAL_ECHO("MS");
|
||||||
|
SERIAL_ECHO(millis());
|
||||||
|
SERIAL_ECHO(" PREV_CMD");
|
||||||
|
SERIAL_ECHO(previous_millis_cmd);
|
||||||
|
SERIAL_ECHO(" maxinactive");
|
||||||
|
SERIAL_ECHOLN(max_inactive_time );
|
||||||
|
|
||||||
|
if( (curtime-previous_millis_cmd) > max_inactive_time )
|
||||||
if(max_inactive_time)
|
if(max_inactive_time)
|
||||||
|
{
|
||||||
|
LCD_MESSAGEPGM("Bored Shutdown.");
|
||||||
|
SERIAL_ERROR_START;
|
||||||
|
SERIAL_ERRORLNPGM("Bored Shutdown.");
|
||||||
kill();
|
kill();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (curtime-previous_millis_cmd) > DEFAULT_MAX_HOT_TIME*1000 )
|
||||||
|
if(DEFAULT_MAX_HOT_TIME && (degHotend0()>HOTTEMP) )
|
||||||
|
{
|
||||||
|
LCD_MESSAGEPGM("Hot too long.");
|
||||||
|
SERIAL_ECHO_START;
|
||||||
|
SERIAL_ECHOLNPGM("Hot too long");
|
||||||
|
disable_heater();
|
||||||
|
}
|
||||||
if(stepper_inactive_time)
|
if(stepper_inactive_time)
|
||||||
if( (millis()-last_stepperdisabled_time) > stepper_inactive_time )
|
if( (curtime-last_stepperdisabled_time) > stepper_inactive_time )
|
||||||
{
|
{
|
||||||
if(previous_millis_cmd>last_stepperdisabled_time)
|
if(previous_millis_cmd>last_stepperdisabled_time)
|
||||||
last_stepperdisabled_time=previous_millis_cmd;
|
last_stepperdisabled_time=previous_millis_cmd;
|
||||||
|
@ -1216,23 +1246,37 @@ void manage_inactivity(byte debug)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||||
if( (millis()-previous_millis_cmd) > EXTRUDER_RUNOUT_SECONDS*1000 )
|
if(!blocks_queued())
|
||||||
if(degHotend(active_extruder)>EXTRUDER_RUNOUT_MINTEMP)
|
if( (curtime-previous_millis_cmd) > EXTRUDER_RUNOUT_SECONDS*1000 )
|
||||||
{
|
{
|
||||||
bool oldstatus=READ(E_ENABLE_PIN);
|
if(previous_millis_cmd>previous_millis_runoutprevent)
|
||||||
enable_e();
|
{
|
||||||
float oldepos=current_position[E_AXIS];
|
previous_millis_runoutprevent=previous_millis_cmd;
|
||||||
float oldedes=destination[E_AXIS];
|
}
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
|
|
||||||
current_position[E_AXIS]+EXTRUDER_RUNOUT_EXTRUDE*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS],
|
if(degHotend0()>EXTRUDER_RUNOUT_MINTEMP)
|
||||||
EXTRUDER_RUNOUT_SPEED/60.*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS], active_extruder);
|
if((curtime-previous_millis_runoutprevent) > EXTRUDER_RUNOUT_SECONDS*1000)
|
||||||
current_position[E_AXIS]=oldepos;
|
{
|
||||||
destination[E_AXIS]=oldedes;
|
bool oldstatus=READ(E_ENABLE_PIN);
|
||||||
plan_set_e_position(oldepos);
|
enable_e();
|
||||||
previous_millis_cmd=millis();
|
float oldepos=current_position[E_AXIS];
|
||||||
//enquecommand(DEFAULT_STEPPER_DEACTIVE_COMMAND);
|
float oldedes=destination[E_AXIS];
|
||||||
st_synchronize();
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
|
||||||
WRITE(E_ENABLE_PIN,oldstatus);
|
current_position[E_AXIS]+EXTRUDER_RUNOUT_EXTRUDE*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS],
|
||||||
|
EXTRUDER_RUNOUT_SPEED/60.*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS], active_extruder);
|
||||||
|
current_position[E_AXIS]=oldepos;
|
||||||
|
destination[E_AXIS]=oldedes;
|
||||||
|
plan_set_e_position(oldepos);
|
||||||
|
|
||||||
|
while(current_block!=NULL || blocks_queued())
|
||||||
|
{
|
||||||
|
manage_heater();
|
||||||
|
LCD_STATUS;
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_millis_runoutprevent=millis();
|
||||||
|
WRITE(E_ENABLE_PIN,oldstatus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
check_axes_activity();
|
check_axes_activity();
|
||||||
|
@ -1247,7 +1291,7 @@ void kill()
|
||||||
disable_z();
|
disable_z();
|
||||||
disable_e();
|
disable_e();
|
||||||
|
|
||||||
if(PS_ON_PIN > -1) pinMode(PS_ON_PIN,INPUT);
|
if(PS_ON_PIN > -1) pinMode(PS_ON_PIN,INPUT); //Turn powersupply off
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
SERIAL_ERRORLNPGM("Printer halted. kill() called !!");
|
SERIAL_ERRORLNPGM("Printer halted. kill() called !!");
|
||||||
LCD_MESSAGEPGM("KILLED. ");
|
LCD_MESSAGEPGM("KILLED. ");
|
||||||
|
|
|
@ -706,15 +706,21 @@ void st_init()
|
||||||
sei();
|
sei();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "util/delay.h"
|
||||||
// Block until all buffered steps are executed
|
// Block until all buffered steps are executed
|
||||||
void st_synchronize()
|
void st_synchronize()
|
||||||
{
|
{
|
||||||
while( blocks_queued()) {
|
while(current_block!=NULL || blocks_queued()) {
|
||||||
manage_heater();
|
manage_heater();
|
||||||
manage_inactivity(1);
|
manage_inactivity(1);
|
||||||
LCD_STATUS;
|
LCD_STATUS;
|
||||||
|
//_delay_ms(100);
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
// _delay_ms(250);_delay_ms(250);_delay_ms(250);_delay_ms(250);
|
||||||
|
// _delay_ms(250);_delay_ms(250);_delay_ms(250);_delay_ms(250);
|
||||||
|
// _delay_ms(250);_delay_ms(250);_delay_ms(250);_delay_ms(250);
|
||||||
|
// _delay_ms(250);_delay_ms(250);_delay_ms(250);_delay_ms(250);
|
||||||
}
|
}
|
||||||
|
|
||||||
void st_set_position(const long &x, const long &y, const long &z, const long &e)
|
void st_set_position(const long &x, const long &y, const long &z, const long &e)
|
||||||
|
|
|
@ -451,6 +451,11 @@ void setWatch()
|
||||||
|
|
||||||
void disable_heater()
|
void disable_heater()
|
||||||
{
|
{
|
||||||
|
for(int i=0;i<EXTRUDERS;i++)
|
||||||
|
setTargetHotend(0,i);
|
||||||
|
setTargetBed(0);
|
||||||
|
|
||||||
|
|
||||||
#if TEMP_0_PIN > -1
|
#if TEMP_0_PIN > -1
|
||||||
target_raw[0]=0;
|
target_raw[0]=0;
|
||||||
#if HEATER_0_PIN > -1
|
#if HEATER_0_PIN > -1
|
||||||
|
|
Loading…
Reference in a new issue