snmm: removed detection if print was terminated by reset/blackout; initial version of stop print for snmm
This commit is contained in:
parent
2fa97d5dfe
commit
df9f063f99
|
|
@ -1161,11 +1161,12 @@ void setup()
|
||||||
// 1) Set a high power mode.
|
// 1) Set a high power mode.
|
||||||
eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0);
|
eeprom_write_byte((uint8_t*)EEPROM_SILENT, 0);
|
||||||
}
|
}
|
||||||
|
#ifdef SNMM
|
||||||
if (eeprom_read_dword((uint32_t*)EEPROM_BOWDEN_LENGTH) == 0x0ffffffff) { //bowden length used for SNMM
|
if (eeprom_read_dword((uint32_t*)EEPROM_BOWDEN_LENGTH) == 0x0ffffffff) { //bowden length used for SNMM
|
||||||
int _z = BOWDEN_LENGTH;
|
int _z = BOWDEN_LENGTH;
|
||||||
for(int i = 0; i<4; i++) EEPROM_save_B(EEPROM_BOWDEN_LENGTH + i * 2, &_z);
|
for(int i = 0; i<4; i++) EEPROM_save_B(EEPROM_BOWDEN_LENGTH + i * 2, &_z);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM.
|
// In the future, somewhere here would one compare the current firmware version against the firmware version stored in the EEPROM.
|
||||||
// If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version
|
// If they differ, an update procedure may need to be performed. At the end of this block, the current firmware version
|
||||||
|
|
@ -2061,68 +2062,8 @@ void process_commands()
|
||||||
|
|
||||||
} else if(code_seen("FR")) {
|
} else if(code_seen("FR")) {
|
||||||
// Factory full reset
|
// Factory full reset
|
||||||
factory_reset(0,true);
|
factory_reset(0,true);
|
||||||
|
}
|
||||||
}else if(code_seen("Y")) { //filaments adjustment at the beginning of print (for SNMM)
|
|
||||||
#ifdef SNMM
|
|
||||||
int extr;
|
|
||||||
SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); //is silent mode or loud mode set
|
|
||||||
lcd_implementation_clear();
|
|
||||||
lcd_display_message_fullscreen_P(MSG_FIL_ADJUSTING);
|
|
||||||
current_position[Z_AXIS] = 100;
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
|
|
||||||
digipot_current(2, E_MOTOR_HIGH_CURRENT);
|
|
||||||
for (extr = 1; extr < 4; extr++) { //we dont know which filament is in nozzle, but we want to load filament0, so all other filaments must unloaded
|
|
||||||
change_extr(extr);
|
|
||||||
ramming();
|
|
||||||
}
|
|
||||||
change_extr(0);
|
|
||||||
current_position[E_AXIS] += FIL_LOAD_LENGTH; //loading filament0 into the nozzle
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
|
|
||||||
st_synchronize();
|
|
||||||
|
|
||||||
for (extr = 1; extr < 4; extr++) {
|
|
||||||
digipot_current(2, E_MOTOR_LOW_CURRENT); //set lower current for extruder motors
|
|
||||||
change_extr(extr);
|
|
||||||
current_position[E_AXIS] += (FIL_LOAD_LENGTH + 3 * FIL_RETURN_LENGTH); //adjusting filaments
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5000, active_extruder);
|
|
||||||
st_synchronize();
|
|
||||||
digipot_current(2, tmp_motor_loud[2]); //set back to normal operation currents
|
|
||||||
current_position[E_AXIS] -= FIL_RETURN_LENGTH;
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
|
|
||||||
st_synchronize();
|
|
||||||
}
|
|
||||||
|
|
||||||
change_extr(0);
|
|
||||||
current_position[E_AXIS] += 25;
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder);
|
|
||||||
digipot_current(2, E_MOTOR_HIGH_CURRENT);
|
|
||||||
ramming();
|
|
||||||
if (SilentMode == 1) digipot_current(2, tmp_motor[2]); //set back to normal operation currents
|
|
||||||
else digipot_current(2, tmp_motor_loud[2]);
|
|
||||||
st_synchronize();
|
|
||||||
lcd_show_fullscreen_message_and_wait_P(MSG_CONFIRM_NOZZLE_CLEAN_FIL_ADJ);
|
|
||||||
lcd_implementation_clear();
|
|
||||||
lcd_printPGM(MSG_PLEASE_WAIT);
|
|
||||||
current_position[Z_AXIS] = 0;
|
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
|
|
||||||
st_synchronize();
|
|
||||||
lcd_update_enable(true);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (code_seen("SetF")) {
|
|
||||||
#ifdef SNMM
|
|
||||||
bool not_finished = (eeprom_read_byte((unsigned char*)EEPROM_PRINT_FLAG) != PRINT_FINISHED);
|
|
||||||
eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_STARTED);
|
|
||||||
if (not_finished) enquecommand_front_P(PSTR("PRUSA Y"));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (code_seen("ResF")) {
|
|
||||||
#ifdef SNMM
|
|
||||||
eeprom_update_byte((unsigned char*)EEPROM_PRINT_FLAG, PRINT_FINISHED);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
//else if (code_seen('Cal')) {
|
//else if (code_seen('Cal')) {
|
||||||
// lcd_calibration();
|
// lcd_calibration();
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -515,6 +515,43 @@ static void lcd_status_screen()
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
|
||||||
|
void unload_fil() {
|
||||||
|
char cmd1[10];
|
||||||
|
float unload_l = ((BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2);
|
||||||
|
|
||||||
|
sprintf_P(cmd1, PSTR("M106 S%d"), fanSpeedBckp);
|
||||||
|
enquecommand(cmd1);
|
||||||
|
strcpy(cmd1, "G1 Z");
|
||||||
|
strcat(cmd1, ftostr32(pause_lastpos[Z_AXIS]));
|
||||||
|
enquecommand(cmd1);
|
||||||
|
|
||||||
|
enquecommand_P(PSTR("M907 E700")); //set extruder current higher
|
||||||
|
enquecommand_P(PSTR("M203 E50")); //set max. feedrate
|
||||||
|
st_synchronize();
|
||||||
|
if (current_temperature[0] < 230) {
|
||||||
|
// PLA
|
||||||
|
enquecommand_P(PSTR("G1 E5.4 F2800.000000"));
|
||||||
|
enquecommand_P(PSTR("G1 E3.2 F3000.000000"));
|
||||||
|
enquecommand_P(PSTR("G1 E3 F3400.000000"));
|
||||||
|
st_synchronize();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// ABS
|
||||||
|
enquecommand_P(PSTR("G1 E3.1 F2000.000000"));
|
||||||
|
enquecommand_P(PSTR("G1 E3.1 F2500.000000"));
|
||||||
|
enquecommand_P(PSTR("G1 E4 F3000.000000"));
|
||||||
|
st_synchronize();
|
||||||
|
}
|
||||||
|
enquecommand_P(PSTR("M203 E80")); //set max. feedrate
|
||||||
|
enquecommand_P(PSTR("M907 E550")); //set extruder current
|
||||||
|
st_synchronize();
|
||||||
|
strcpy(cmd1, "G1 E-");
|
||||||
|
strcat(cmd1, ftostr32(unload_l));
|
||||||
|
enquecommand(cmd1);
|
||||||
|
enquecommand(cmd1);
|
||||||
|
st_synchronize();
|
||||||
|
}
|
||||||
|
|
||||||
void lcd_commands()
|
void lcd_commands()
|
||||||
{
|
{
|
||||||
char cmd1[25];
|
char cmd1[25];
|
||||||
|
|
@ -593,6 +630,7 @@ void lcd_commands()
|
||||||
|
|
||||||
if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print
|
if (lcd_commands_type == LCD_COMMAND_STOP_PRINT) /// stop print
|
||||||
{
|
{
|
||||||
|
uint8_t stopped_extruder;
|
||||||
|
|
||||||
if (lcd_commands_step == 0)
|
if (lcd_commands_step == 0)
|
||||||
{
|
{
|
||||||
|
|
@ -624,9 +662,6 @@ void lcd_commands()
|
||||||
{
|
{
|
||||||
// M84: Disable steppers.
|
// M84: Disable steppers.
|
||||||
enquecommand_P(PSTR("M84"));
|
enquecommand_P(PSTR("M84"));
|
||||||
#ifdef SNMM
|
|
||||||
enquecommand_P(PSTR("PRUSA ResF")); //resets flag at the end of the print (used for SNMM)
|
|
||||||
#endif
|
|
||||||
autotempShutdown();
|
autotempShutdown();
|
||||||
lcd_commands_step = 2;
|
lcd_commands_step = 2;
|
||||||
}
|
}
|
||||||
|
|
@ -675,62 +710,41 @@ void lcd_commands()
|
||||||
lcd_commands_step = 5;
|
lcd_commands_step = 5;
|
||||||
}
|
}
|
||||||
if (lcd_commands_step == 7 && !blocks_queued()) {
|
if (lcd_commands_step == 7 && !blocks_queued()) {
|
||||||
/*ramming();
|
MYSERIAL.print("7");
|
||||||
st_synchronize();
|
stopped_extruder = snmm_extruder;
|
||||||
change_extr(0);*/
|
unload_fil();
|
||||||
st_synchronize();
|
lcd_commands_step = 8;
|
||||||
enquecommand_P(PSTR("M907 E700")); //set extruder current higher
|
}
|
||||||
enquecommand_P(PSTR("M203 E50"));
|
if (lcd_commands_step == 8 && !blocks_queued()) {
|
||||||
st_synchronize();
|
MYSERIAL.print("8");
|
||||||
if (current_temperature[0] < 230) {
|
if (stopped_extruder != 0) {
|
||||||
// PLA
|
change_extr(0);
|
||||||
|
unload_fil();
|
||||||
//enquecommand_P(PSTR("G1 E-8 F2100.000000"));
|
}
|
||||||
//enquecommand_P(PSTR("G1 E8 F2100.000000"));
|
lcd_commands_step = 9;
|
||||||
enquecommand_P(PSTR("G1 E5.4 F2800.000000"));
|
}
|
||||||
enquecommand_P(PSTR("G1 E3.2 F3000.000000"));
|
if (lcd_commands_step == 9 && !blocks_queued()) {
|
||||||
enquecommand_P(PSTR("G1 E3 F3400.000000"));
|
MYSERIAL.print("9");
|
||||||
enquecommand_P(PSTR("M203 E80"));
|
if (stopped_extruder != 1) {
|
||||||
st_synchronize();
|
change_extr(1);
|
||||||
enquecommand_P(PSTR("G1 E-82 F9500.000000"));
|
unload_fil();
|
||||||
enquecommand_P(PSTR("M203 E50"));
|
}
|
||||||
enquecommand_P(PSTR("G1 E-20 F1200.000000"));
|
lcd_commands_step = 10;
|
||||||
enquecommand_P(PSTR("G1 E5 F400.000000"));
|
}
|
||||||
enquecommand_P(PSTR("G1 E5 F600.000000"));
|
if (lcd_commands_step == 10 && !blocks_queued()) {
|
||||||
st_synchronize();
|
MYSERIAL.print("10");
|
||||||
enquecommand_P(PSTR("G1 E-10 F600.000000"));
|
if (stopped_extruder != 2) {
|
||||||
enquecommand_P(PSTR("G1 E+10 F600.000000"));
|
change_extr(2);
|
||||||
enquecommand_P(PSTR("G1 E-10 F800.000000"));
|
unload_fil();
|
||||||
enquecommand_P(PSTR("G1 E+10 F800.000000"));
|
}
|
||||||
enquecommand_P(PSTR("G1 E-10 F800.000000"));
|
lcd_commands_step = 11;
|
||||||
st_synchronize();
|
}
|
||||||
}else {
|
if (lcd_commands_step == 11 && !blocks_queued()) {
|
||||||
// ABS
|
MYSERIAL.print("11");
|
||||||
|
if (stopped_extruder != 3) {
|
||||||
//enquecommand_P(PSTR("G1 E-8 F2100.000000"));
|
change_extr(3);
|
||||||
//enquecommand_P(PSTR("G1 E8 F2100.000000"));
|
unload_fil();
|
||||||
enquecommand_P(PSTR("G1 E3.1 F2000.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E3.1 F2500.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E4 F3000.000000"));
|
|
||||||
st_synchronize();
|
|
||||||
enquecommand_P(PSTR("G4 P4700"));
|
|
||||||
enquecommand_P(PSTR("M203 E80"));
|
|
||||||
enquecommand_P(PSTR("G1 E-92 F9900.000000"));
|
|
||||||
enquecommand_P(PSTR("M203 E50"));
|
|
||||||
enquecommand_P(PSTR("G1 E-5 F800.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E5 F400.000000"));
|
|
||||||
st_synchronize();
|
|
||||||
enquecommand_P(PSTR("G1 E-5 F600.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E5 F600.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E-5 F600.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E5 F600.000000"));
|
|
||||||
enquecommand_P(PSTR("G1 E5 F600.000000"));
|
|
||||||
st_synchronize();
|
|
||||||
}
|
}
|
||||||
enquecommand_P(PSTR("T0"));
|
|
||||||
enquecommand_P(PSTR("M907 E550")); //set extruder current to 500
|
|
||||||
//digipot_init();
|
|
||||||
|
|
||||||
lcd_commands_step = 3;
|
lcd_commands_step = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,7 @@ static void extr_unload_1();
|
||||||
static void extr_unload_2();
|
static void extr_unload_2();
|
||||||
static void extr_unload_3();
|
static void extr_unload_3();
|
||||||
static void lcd_disable_farm_mode();
|
static void lcd_disable_farm_mode();
|
||||||
|
static void extr_unload_all();
|
||||||
|
|
||||||
void stack_error();
|
void stack_error();
|
||||||
static void lcd_ping_allert();
|
static void lcd_ping_allert();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue