Merge branch 'MK3' into Unload-fix
This commit is contained in:
commit
9158bde378
14 changed files with 15093 additions and 15202 deletions
|
@ -9,9 +9,9 @@
|
||||||
|
|
||||||
// Firmware version
|
// Firmware version
|
||||||
#define FW_version "3.1.1-RC3"
|
#define FW_version "3.1.1-RC3"
|
||||||
#define FW_build 138m2
|
#define FW_build 138
|
||||||
//#define FW_build --BUILD-NUMBER--
|
//#define FW_build --BUILD-NUMBER--
|
||||||
#define FW_version_build FW_version " b" STR(FW_build)
|
#define FW_version_build FW_version " b" STR(FW_build) "b"
|
||||||
|
|
||||||
|
|
||||||
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
|
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
|
||||||
|
|
|
@ -75,8 +75,8 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
//Silent mode limits
|
//Silent mode limits
|
||||||
#define SILENT_MAX_ACCEL_X 1024 // X-axis max acceleration in silent mode in mm/s^2
|
#define SILENT_MAX_ACCEL_X 1000 // X-axis max acceleration in silent mode in mm/s^2
|
||||||
#define SILENT_MAX_ACCEL_Y 1024 // Y-axis max axxeleration in silent mode in mm/s^2
|
#define SILENT_MAX_ACCEL_Y 1000 // Y-axis max axxeleration in silent mode in mm/s^2
|
||||||
#define SILENT_MAX_ACCEL_X_ST (100*SILENT_MAX_ACCEL_X) // X max accel in steps/s^2
|
#define SILENT_MAX_ACCEL_X_ST (100*SILENT_MAX_ACCEL_X) // X max accel in steps/s^2
|
||||||
#define SILENT_MAX_ACCEL_Y_ST (100*SILENT_MAX_ACCEL_Y) // Y max accel in steps/s^2
|
#define SILENT_MAX_ACCEL_Y_ST (100*SILENT_MAX_ACCEL_Y) // Y max accel in steps/s^2
|
||||||
#define SILENT_MAX_FEEDRATE 172 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (160mm/s=9600mm/min>2700mm/min)
|
#define SILENT_MAX_FEEDRATE 172 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (160mm/s=9600mm/min>2700mm/min)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1336,7 +1336,7 @@ void loop()
|
||||||
KEEPALIVE_STATE(NOT_BUSY);
|
KEEPALIVE_STATE(NOT_BUSY);
|
||||||
bool stack_integrity = true;
|
bool stack_integrity = true;
|
||||||
|
|
||||||
if (usb_printing_counter > 0 && millis()-_usb_timer > 1000)
|
if ((usb_printing_counter > 0) && ((millis()-_usb_timer) > 1000))
|
||||||
{
|
{
|
||||||
is_usb_printing = true;
|
is_usb_printing = true;
|
||||||
usb_printing_counter--;
|
usb_printing_counter--;
|
||||||
|
@ -2574,7 +2574,7 @@ void process_commands()
|
||||||
{
|
{
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
SERIAL_ECHOPGM("G28, initial "); print_world_coordinates();
|
SERIAL_ECHOPGM("G28, initial "); print_world_coordinates();
|
||||||
SERIAL_ECHOPGM("G28, initial "); print_physical_coordinates();
|
SERIAL_ECHOPGM("G28, initial "); print_physical_coordinates();
|
||||||
#endif
|
#endif
|
||||||
|
@ -2819,10 +2819,11 @@ void process_commands()
|
||||||
if (farm_mode) { prusa_statistics(20); };
|
if (farm_mode) { prusa_statistics(20); };
|
||||||
|
|
||||||
homing_flag = false;
|
homing_flag = false;
|
||||||
|
#if 0
|
||||||
SERIAL_ECHOPGM("G28, final "); print_world_coordinates();
|
SERIAL_ECHOPGM("G28, final "); print_world_coordinates();
|
||||||
SERIAL_ECHOPGM("G28, final "); print_physical_coordinates();
|
SERIAL_ECHOPGM("G28, final "); print_physical_coordinates();
|
||||||
SERIAL_ECHOPGM("G28, final "); print_mesh_bed_leveling_table();
|
SERIAL_ECHOPGM("G28, final "); print_mesh_bed_leveling_table();
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
@ -3520,14 +3521,14 @@ void process_commands()
|
||||||
offset_z = temp_compensation_pinda_thermistor_offset(current_temperature_pinda);
|
offset_z = temp_compensation_pinda_thermistor_offset(current_temperature_pinda);
|
||||||
#endif //PINDA_THERMISTOR
|
#endif //PINDA_THERMISTOR
|
||||||
// #ifdef SUPPORT_VERBOSITY
|
// #ifdef SUPPORT_VERBOSITY
|
||||||
// if (verbosity_level >= 1)
|
/* if (verbosity_level >= 1)
|
||||||
{
|
{
|
||||||
SERIAL_ECHOPGM("mesh bed leveling: ");
|
SERIAL_ECHOPGM("mesh bed leveling: ");
|
||||||
MYSERIAL.print(current_position[Z_AXIS], 5);
|
MYSERIAL.print(current_position[Z_AXIS], 5);
|
||||||
SERIAL_ECHOPGM(" offset: ");
|
SERIAL_ECHOPGM(" offset: ");
|
||||||
MYSERIAL.print(offset_z, 5);
|
MYSERIAL.print(offset_z, 5);
|
||||||
SERIAL_ECHOLNPGM("");
|
SERIAL_ECHOLNPGM("");
|
||||||
}
|
}*/
|
||||||
// #endif // SUPPORT_VERBOSITY
|
// #endif // SUPPORT_VERBOSITY
|
||||||
mbl.set_z(ix, iy, current_position[Z_AXIS] - offset_z); //store measured z values z_values[iy][ix] = z - offset_z;
|
mbl.set_z(ix, iy, current_position[Z_AXIS] - offset_z); //store measured z values z_values[iy][ix] = z - offset_z;
|
||||||
|
|
||||||
|
@ -3550,7 +3551,7 @@ void process_commands()
|
||||||
SERIAL_ECHOLNPGM("killed");
|
SERIAL_ECHOLNPGM("killed");
|
||||||
}
|
}
|
||||||
clean_up_after_endstop_move();
|
clean_up_after_endstop_move();
|
||||||
SERIAL_ECHOLNPGM("clean up finished ");
|
// SERIAL_ECHOLNPGM("clean up finished ");
|
||||||
|
|
||||||
bool apply_temp_comp = true;
|
bool apply_temp_comp = true;
|
||||||
#ifdef PINDA_THERMISTOR
|
#ifdef PINDA_THERMISTOR
|
||||||
|
@ -3559,7 +3560,7 @@ void process_commands()
|
||||||
if (apply_temp_comp)
|
if (apply_temp_comp)
|
||||||
if(temp_cal_active == true && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation
|
if(temp_cal_active == true && calibration_status_pinda() == true) temp_compensation_apply(); //apply PINDA temperature compensation
|
||||||
babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated.
|
babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated.
|
||||||
SERIAL_ECHOLNPGM("babystep applied");
|
// SERIAL_ECHOLNPGM("babystep applied");
|
||||||
bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
|
bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
|
||||||
#ifdef SUPPORT_VERBOSITY
|
#ifdef SUPPORT_VERBOSITY
|
||||||
if (verbosity_level >= 1) {
|
if (verbosity_level >= 1) {
|
||||||
|
@ -3616,13 +3617,13 @@ void process_commands()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SERIAL_ECHOLNPGM("Bed leveling correction finished");
|
// SERIAL_ECHOLNPGM("Bed leveling correction finished");
|
||||||
mbl.upsample_3x3(); //bilinear interpolation from 3x3 to 7x7 points while using the same array z_values[iy][ix] for storing (just coppying measured data to new destination and interpolating between them)
|
mbl.upsample_3x3(); //bilinear interpolation from 3x3 to 7x7 points while using the same array z_values[iy][ix] for storing (just coppying measured data to new destination and interpolating between them)
|
||||||
SERIAL_ECHOLNPGM("Upsample finished");
|
// SERIAL_ECHOLNPGM("Upsample finished");
|
||||||
mbl.active = 1; //activate mesh bed leveling
|
mbl.active = 1; //activate mesh bed leveling
|
||||||
SERIAL_ECHOLNPGM("Mesh bed leveling activated");
|
// SERIAL_ECHOLNPGM("Mesh bed leveling activated");
|
||||||
go_home_with_z_lift();
|
go_home_with_z_lift();
|
||||||
SERIAL_ECHOLNPGM("Go home finished");
|
// SERIAL_ECHOLNPGM("Go home finished");
|
||||||
//unretract (after PINDA preheat retraction)
|
//unretract (after PINDA preheat retraction)
|
||||||
if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
|
if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
|
||||||
current_position[E_AXIS] += DEFAULT_RETRACTION;
|
current_position[E_AXIS] += DEFAULT_RETRACTION;
|
||||||
|
@ -7486,8 +7487,8 @@ void recover_machine_state_after_power_panic()
|
||||||
}
|
}
|
||||||
if (mbl.active)
|
if (mbl.active)
|
||||||
mbl.upsample_3x3();
|
mbl.upsample_3x3();
|
||||||
SERIAL_ECHOPGM("recover_machine_state_after_power_panic, initial ");
|
// SERIAL_ECHOPGM("recover_machine_state_after_power_panic, initial ");
|
||||||
print_mesh_bed_leveling_table();
|
// print_mesh_bed_leveling_table();
|
||||||
|
|
||||||
// 4) Load the baby stepping value, which is expected to be active at the time of power panic.
|
// 4) Load the baby stepping value, which is expected to be active at the time of power panic.
|
||||||
// The baby stepping value is used to reset the physical Z axis when rehoming the Z axis.
|
// The baby stepping value is used to reset the physical Z axis when rehoming the Z axis.
|
||||||
|
|
|
@ -26,6 +26,11 @@ void adc_init(void)
|
||||||
DIDR0 = (ADC_CHAN_MSK & 0xff);
|
DIDR0 = (ADC_CHAN_MSK & 0xff);
|
||||||
DIDR2 = (ADC_CHAN_MSK >> 8);
|
DIDR2 = (ADC_CHAN_MSK >> 8);
|
||||||
adc_reset();
|
adc_reset();
|
||||||
|
// adc_sim_mask = 0b0101;
|
||||||
|
// adc_sim_mask = 0b100101;
|
||||||
|
// adc_values[0] = 1023 * 16;
|
||||||
|
// adc_values[2] = 1023 * 16;
|
||||||
|
// adc_values[5] = 1002 * 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
void adc_reset(void)
|
void adc_reset(void)
|
||||||
|
|
|
@ -59,9 +59,9 @@ void fsensor_unblock() {
|
||||||
|
|
||||||
bool fsensor_enable()
|
bool fsensor_enable()
|
||||||
{
|
{
|
||||||
puts_P(PSTR("fsensor_enable\n"));
|
// puts_P(PSTR("fsensor_enable\n"));
|
||||||
int pat9125 = pat9125_init(PAT9125_XRES, PAT9125_YRES);
|
int pat9125 = pat9125_init(PAT9125_XRES, PAT9125_YRES);
|
||||||
printf_P(PSTR("PAT9125_init:%d\n"), pat9125);
|
// printf_P(PSTR("PAT9125_init:%d\n"), pat9125);
|
||||||
if (pat9125)
|
if (pat9125)
|
||||||
fsensor_not_responding = false;
|
fsensor_not_responding = false;
|
||||||
else
|
else
|
||||||
|
@ -77,7 +77,7 @@ bool fsensor_enable()
|
||||||
|
|
||||||
void fsensor_disable()
|
void fsensor_disable()
|
||||||
{
|
{
|
||||||
puts_P(PSTR("fsensor_disable\n"));
|
// puts_P(PSTR("fsensor_disable\n"));
|
||||||
fsensor_enabled = false;
|
fsensor_enabled = false;
|
||||||
eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00);
|
eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, 0x00);
|
||||||
FSensorStateMenu = 0;
|
FSensorStateMenu = 0;
|
||||||
|
@ -105,7 +105,7 @@ void fsensor_setup_interrupt()
|
||||||
|
|
||||||
void fsensor_autoload_check_start(void)
|
void fsensor_autoload_check_start(void)
|
||||||
{
|
{
|
||||||
puts_P(PSTR("fsensor_autoload_check_start\n"));
|
// puts_P(PSTR("fsensor_autoload_check_start\n"));
|
||||||
pat9125_update_y(); //update sensor
|
pat9125_update_y(); //update sensor
|
||||||
fsensor_autoload_y = pat9125_y; //save current y value
|
fsensor_autoload_y = pat9125_y; //save current y value
|
||||||
fsensor_autoload_c = 0; //reset number of changes counter
|
fsensor_autoload_c = 0; //reset number of changes counter
|
||||||
|
@ -117,7 +117,7 @@ void fsensor_autoload_check_start(void)
|
||||||
|
|
||||||
void fsensor_autoload_check_stop(void)
|
void fsensor_autoload_check_stop(void)
|
||||||
{
|
{
|
||||||
puts_P(PSTR("fsensor_autoload_check_stop\n"));
|
// puts_P(PSTR("fsensor_autoload_check_stop\n"));
|
||||||
fsensor_autoload_sum = 0;
|
fsensor_autoload_sum = 0;
|
||||||
fsensor_autoload_enabled = false;
|
fsensor_autoload_enabled = false;
|
||||||
fsensor_err_cnt = 0;
|
fsensor_err_cnt = 0;
|
||||||
|
@ -166,7 +166,7 @@ ISR(PCINT2_vect)
|
||||||
*digitalPinToPCMSK(fsensor_int_pin) |= bit(digitalPinToPCMSKbit(fsensor_int_pin));*/
|
*digitalPinToPCMSK(fsensor_int_pin) |= bit(digitalPinToPCMSKbit(fsensor_int_pin));*/
|
||||||
if (!pat9125_update_y())
|
if (!pat9125_update_y())
|
||||||
{
|
{
|
||||||
puts_P(PSTR("pat9125 not responding.\n"));
|
// puts_P(PSTR("pat9125 not responding.\n"));
|
||||||
fsensor_disable();
|
fsensor_disable();
|
||||||
fsensor_not_responding = true;
|
fsensor_not_responding = true;
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,7 @@ void fsensor_update()
|
||||||
if (!fsensor_enabled) return;
|
if (!fsensor_enabled) return;
|
||||||
if (fsensor_err_cnt > FSENSOR_ERR_MAX)
|
if (fsensor_err_cnt > FSENSOR_ERR_MAX)
|
||||||
{
|
{
|
||||||
MYSERIAL.println("fsensor_update (fsensor_err_cnt > FSENSOR_ERR_MAX)");
|
// MYSERIAL.println("fsensor_update (fsensor_err_cnt > FSENSOR_ERR_MAX)");
|
||||||
/* if (fsensor_ignore_error)
|
/* if (fsensor_ignore_error)
|
||||||
{
|
{
|
||||||
MYSERIAL.println("fsensor_update - error ignored)");
|
MYSERIAL.println("fsensor_update - error ignored)");
|
||||||
|
|
|
@ -389,6 +389,11 @@ const char * const MSG_COUNT_X_LANG_TABLE[1] PROGMEM = {
|
||||||
MSG_COUNT_X_EN
|
MSG_COUNT_X_EN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char MSG_CRASHDETECT_NA_EN[] PROGMEM = "Crash det. [N/A]";
|
||||||
|
const char * const MSG_CRASHDETECT_NA_LANG_TABLE[1] PROGMEM = {
|
||||||
|
MSG_CRASHDETECT_NA_EN
|
||||||
|
};
|
||||||
|
|
||||||
const char MSG_CRASHDETECT_OFF_EN[] PROGMEM = "Crash det. [off]";
|
const char MSG_CRASHDETECT_OFF_EN[] PROGMEM = "Crash det. [off]";
|
||||||
const char MSG_CRASHDETECT_OFF_CZ[] PROGMEM = "Crash det. [vyp]";
|
const char MSG_CRASHDETECT_OFF_CZ[] PROGMEM = "Crash det. [vyp]";
|
||||||
const char * const MSG_CRASHDETECT_OFF_LANG_TABLE[LANG_NUM] PROGMEM = {
|
const char * const MSG_CRASHDETECT_OFF_LANG_TABLE[LANG_NUM] PROGMEM = {
|
||||||
|
@ -1541,12 +1546,12 @@ const char * const MSG_SD_WRITE_TO_FILE_LANG_TABLE[1] PROGMEM = {
|
||||||
MSG_SD_WRITE_TO_FILE_EN
|
MSG_SD_WRITE_TO_FILE_EN
|
||||||
};
|
};
|
||||||
|
|
||||||
const char MSG_SECOND_SERIAL_OFF_EN[] PROGMEM = "2nd USART [off]";
|
const char MSG_SECOND_SERIAL_OFF_EN[] PROGMEM = "rPi port [off]";
|
||||||
const char * const MSG_SECOND_SERIAL_OFF_LANG_TABLE[1] PROGMEM = {
|
const char * const MSG_SECOND_SERIAL_OFF_LANG_TABLE[1] PROGMEM = {
|
||||||
MSG_SECOND_SERIAL_OFF_EN
|
MSG_SECOND_SERIAL_OFF_EN
|
||||||
};
|
};
|
||||||
|
|
||||||
const char MSG_SECOND_SERIAL_ON_EN[] PROGMEM = "2nd USART [on]";
|
const char MSG_SECOND_SERIAL_ON_EN[] PROGMEM = "rPi port [on]";
|
||||||
const char * const MSG_SECOND_SERIAL_ON_LANG_TABLE[1] PROGMEM = {
|
const char * const MSG_SECOND_SERIAL_ON_LANG_TABLE[1] PROGMEM = {
|
||||||
MSG_SECOND_SERIAL_ON_EN
|
MSG_SECOND_SERIAL_ON_EN
|
||||||
};
|
};
|
||||||
|
|
|
@ -142,6 +142,8 @@ extern const char* const MSG_CORRECTLY_LANG_TABLE[LANG_NUM];
|
||||||
#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE)
|
#define MSG_CORRECTLY LANG_TABLE_SELECT(MSG_CORRECTLY_LANG_TABLE)
|
||||||
extern const char* const MSG_COUNT_X_LANG_TABLE[1];
|
extern const char* const MSG_COUNT_X_LANG_TABLE[1];
|
||||||
#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0)
|
#define MSG_COUNT_X LANG_TABLE_SELECT_EXPLICIT(MSG_COUNT_X_LANG_TABLE, 0)
|
||||||
|
extern const char* const MSG_CRASHDETECT_NA_LANG_TABLE[1];
|
||||||
|
#define MSG_CRASHDETECT_NA LANG_TABLE_SELECT_EXPLICIT(MSG_CRASHDETECT_NA_LANG_TABLE, 0)
|
||||||
extern const char* const MSG_CRASHDETECT_OFF_LANG_TABLE[LANG_NUM];
|
extern const char* const MSG_CRASHDETECT_OFF_LANG_TABLE[LANG_NUM];
|
||||||
#define MSG_CRASHDETECT_OFF LANG_TABLE_SELECT(MSG_CRASHDETECT_OFF_LANG_TABLE)
|
#define MSG_CRASHDETECT_OFF LANG_TABLE_SELECT(MSG_CRASHDETECT_OFF_LANG_TABLE)
|
||||||
extern const char* const MSG_CRASHDETECT_ON_LANG_TABLE[LANG_NUM];
|
extern const char* const MSG_CRASHDETECT_ON_LANG_TABLE[LANG_NUM];
|
||||||
|
|
|
@ -348,6 +348,7 @@
|
||||||
#define MSG_FSENSOR_NA "Fil. senzor [err]"
|
#define MSG_FSENSOR_NA "Fil. senzor [err]"
|
||||||
#define MSG_FSENSOR_ON "Fil. senzor [zap]"
|
#define MSG_FSENSOR_ON "Fil. senzor [zap]"
|
||||||
#define MSG_CRASHDETECT_ON "Crash det. [zap]"
|
#define MSG_CRASHDETECT_ON "Crash det. [zap]"
|
||||||
|
#define MSG_CRASHDETECT_NA "Crash det. [N/A]"
|
||||||
#define MSG_CRASHDETECT_OFF "Crash det. [vyp]"
|
#define MSG_CRASHDETECT_OFF "Crash det. [vyp]"
|
||||||
#define MSG_FANS_CHECK_ON "Kontr. vent.[zap]"
|
#define MSG_FANS_CHECK_ON "Kontr. vent.[zap]"
|
||||||
#define MSG_FANS_CHECK_OFF "Kontr. vent.[vyp]"
|
#define MSG_FANS_CHECK_OFF "Kontr. vent.[vyp]"
|
||||||
|
|
|
@ -349,6 +349,7 @@
|
||||||
//messages bellow has no translation yet
|
//messages bellow has no translation yet
|
||||||
|
|
||||||
#define MSG_CRASHDETECT_OFF "Crash det. [off]"
|
#define MSG_CRASHDETECT_OFF "Crash det. [off]"
|
||||||
|
#define MSG_CRASHDETECT_NA "Crash det. [N/A]"
|
||||||
#define MSG_CRASHDETECT_ON "Crash det. [on]"
|
#define MSG_CRASHDETECT_ON "Crash det. [on]"
|
||||||
#define MSG_FSENSOR_OFF "Fil. sensor [off]"
|
#define MSG_FSENSOR_OFF "Fil. sensor [off]"
|
||||||
#define MSG_FSENSOR_NA "Fil. sensor [N/A]"
|
#define MSG_FSENSOR_NA "Fil. sensor [N/A]"
|
||||||
|
@ -386,5 +387,5 @@
|
||||||
#define(length=17, lines=1) MSG_SORT_NONE "Sort: [None]"
|
#define(length=17, lines=1) MSG_SORT_NONE "Sort: [None]"
|
||||||
#define(length=20, lines=1) MSG_SORTING "Sorting files"
|
#define(length=20, lines=1) MSG_SORTING "Sorting files"
|
||||||
#define(length=20, lines=4) MSG_FILE_CNT "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
#define(length=20, lines=4) MSG_FILE_CNT "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||||
#define(length=17, lines=1) MSG_SECOND_SERIAL_ON "2nd USART [on]"
|
#define(length=17, lines=1) MSG_SECOND_SERIAL_ON "rPi port [on]"
|
||||||
#define(length=17, lines=1) MSG_SECOND_SERIAL_OFF "2nd USART [off]"
|
#define(length=17, lines=1) MSG_SECOND_SERIAL_OFF "rPi port [off]"
|
||||||
|
|
|
@ -743,44 +743,44 @@ void world2machine_initialize()
|
||||||
|
|
||||||
bool reset = false;
|
bool reset = false;
|
||||||
if (vec_undef(cntr) || vec_undef(vec_x) || vec_undef(vec_y)) {
|
if (vec_undef(cntr) || vec_undef(vec_x) || vec_undef(vec_y)) {
|
||||||
SERIAL_ECHOLNPGM("Undefined bed correction matrix.");
|
// SERIAL_ECHOLNPGM("Undefined bed correction matrix.");
|
||||||
reset = true;
|
reset = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Length of the vec_x shall be close to unity.
|
// Length of the vec_x shall be close to unity.
|
||||||
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
|
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
|
||||||
if (l < 0.9 || l > 1.1) {
|
if (l < 0.9 || l > 1.1) {
|
||||||
SERIAL_ECHOLNPGM("X vector length:");
|
// SERIAL_ECHOLNPGM("X vector length:");
|
||||||
MYSERIAL.println(l);
|
// MYSERIAL.println(l);
|
||||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range.");
|
// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range.");
|
||||||
reset = true;
|
reset = true;
|
||||||
}
|
}
|
||||||
// Length of the vec_y shall be close to unity.
|
// Length of the vec_y shall be close to unity.
|
||||||
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
|
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
|
||||||
if (l < 0.9 || l > 1.1) {
|
if (l < 0.9 || l > 1.1) {
|
||||||
SERIAL_ECHOLNPGM("Y vector length:");
|
// SERIAL_ECHOLNPGM("Y vector length:");
|
||||||
MYSERIAL.println(l);
|
// MYSERIAL.println(l);
|
||||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range.");
|
// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range.");
|
||||||
reset = true;
|
reset = true;
|
||||||
}
|
}
|
||||||
// Correction of the zero point shall be reasonably small.
|
// Correction of the zero point shall be reasonably small.
|
||||||
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
|
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
|
||||||
if (l > 15.f) {
|
if (l > 15.f) {
|
||||||
SERIAL_ECHOLNPGM("Zero point correction:");
|
// SERIAL_ECHOLNPGM("Zero point correction:");
|
||||||
MYSERIAL.println(l);
|
// MYSERIAL.println(l);
|
||||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range.");
|
// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range.");
|
||||||
reset = true;
|
reset = true;
|
||||||
}
|
}
|
||||||
// vec_x and vec_y shall be nearly perpendicular.
|
// vec_x and vec_y shall be nearly perpendicular.
|
||||||
l = vec_x[0] * vec_y[0] + vec_x[1] * vec_y[1];
|
l = vec_x[0] * vec_y[0] + vec_x[1] * vec_y[1];
|
||||||
if (fabs(l) > 0.1f) {
|
if (fabs(l) > 0.1f) {
|
||||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. X/Y axes are far from being perpendicular.");
|
// SERIAL_ECHOLNPGM("Invalid bed correction matrix. X/Y axes are far from being perpendicular.");
|
||||||
reset = true;
|
reset = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reset) {
|
if (reset) {
|
||||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Resetting to identity.");
|
// SERIAL_ECHOLNPGM("Invalid bed correction matrix. Resetting to identity.");
|
||||||
reset_bed_offset_and_skew();
|
reset_bed_offset_and_skew();
|
||||||
world2machine_reset();
|
world2machine_reset();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1908,9 +1908,8 @@ void check_max_temp()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_min_temp()
|
void check_min_temp_heater0()
|
||||||
{
|
{
|
||||||
if (current_temperature_raw_ambient > OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW) return;
|
|
||||||
//heater
|
//heater
|
||||||
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
||||||
if (current_temperature_raw[0] >= minttemp_raw[0]) {
|
if (current_temperature_raw[0] >= minttemp_raw[0]) {
|
||||||
|
@ -1919,7 +1918,10 @@ void check_min_temp()
|
||||||
#endif
|
#endif
|
||||||
min_temp_error(0);
|
min_temp_error(0);
|
||||||
}
|
}
|
||||||
//bed
|
}
|
||||||
|
|
||||||
|
void check_min_temp_bed()
|
||||||
|
{
|
||||||
#if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP
|
#if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP
|
||||||
if (current_temperature_bed_raw >= bed_minttemp_raw) {
|
if (current_temperature_bed_raw >= bed_minttemp_raw) {
|
||||||
#else
|
#else
|
||||||
|
@ -1929,6 +1931,28 @@ void check_min_temp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void check_min_temp()
|
||||||
|
{
|
||||||
|
static uint8_t heat_cycles = 0;
|
||||||
|
if (current_temperature_raw_ambient > OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW)
|
||||||
|
{
|
||||||
|
if (READ(HEATER_0_PIN) == HIGH)
|
||||||
|
{
|
||||||
|
// if ((heat_cycles % 10) == 0)
|
||||||
|
// printf_P(PSTR("X%d\n"), heat_cycles);
|
||||||
|
if (heat_cycles > 50) //reaction time 5-10s
|
||||||
|
check_min_temp_heater0();
|
||||||
|
else
|
||||||
|
heat_cycles++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
heat_cycles = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
check_min_temp_heater0();
|
||||||
|
check_min_temp_bed();
|
||||||
|
}
|
||||||
|
|
||||||
void check_fans() {
|
void check_fans() {
|
||||||
if (READ(TACH_0) != fan_state[0]) {
|
if (READ(TACH_0) != fan_state[0]) {
|
||||||
fan_edge_counter[0] ++;
|
fan_edge_counter[0] ++;
|
||||||
|
|
|
@ -255,7 +255,7 @@ void tmc2130_st_isr(uint8_t last_step_mask)
|
||||||
if (diag_mask & 0x04) tmc2130_sg_cnt[2]++;
|
if (diag_mask & 0x04) tmc2130_sg_cnt[2]++;
|
||||||
if (diag_mask & 0x08) tmc2130_sg_cnt[3]++;
|
if (diag_mask & 0x08) tmc2130_sg_cnt[3]++;
|
||||||
}*/
|
}*/
|
||||||
if (!is_usb_printing && tmc2130_sg_stop_on_crash && crash)
|
if (/*!is_usb_printing && */tmc2130_sg_stop_on_crash && crash)
|
||||||
{
|
{
|
||||||
tmc2130_sg_crash = true;
|
tmc2130_sg_crash = true;
|
||||||
tmc2130_sg_stop_on_crash = false;
|
tmc2130_sg_stop_on_crash = false;
|
||||||
|
@ -353,7 +353,7 @@ uint16_t tmc2130_sg_meassure_stop()
|
||||||
|
|
||||||
bool tmc2130_wait_standstill_xy(int timeout)
|
bool tmc2130_wait_standstill_xy(int timeout)
|
||||||
{
|
{
|
||||||
DBG(_n("tmc2130_wait_standstill_xy(timeout=%d)\n"), timeout);
|
// DBG(_n("tmc2130_wait_standstill_xy(timeout=%d)\n"), timeout);
|
||||||
bool standstill = false;
|
bool standstill = false;
|
||||||
while (!standstill && (timeout > 0))
|
while (!standstill && (timeout > 0))
|
||||||
{
|
{
|
||||||
|
@ -361,7 +361,7 @@ bool tmc2130_wait_standstill_xy(int timeout)
|
||||||
uint32_t drv_status_y = 0;
|
uint32_t drv_status_y = 0;
|
||||||
tmc2130_rd(tmc2130_cs[X_AXIS], TMC2130_REG_DRV_STATUS, &drv_status_x);
|
tmc2130_rd(tmc2130_cs[X_AXIS], TMC2130_REG_DRV_STATUS, &drv_status_x);
|
||||||
tmc2130_rd(tmc2130_cs[Y_AXIS], TMC2130_REG_DRV_STATUS, &drv_status_y);
|
tmc2130_rd(tmc2130_cs[Y_AXIS], TMC2130_REG_DRV_STATUS, &drv_status_y);
|
||||||
DBG(_n("\tdrv_status_x=0x%08x drv_status_x=0x%08x\n"), drv_status_x, drv_status_y);
|
// DBG(_n("\tdrv_status_x=0x%08x drv_status_x=0x%08x\n"), drv_status_x, drv_status_y);
|
||||||
standstill = (drv_status_x & 0x80000000) && (drv_status_y & 0x80000000);
|
standstill = (drv_status_x & 0x80000000) && (drv_status_y & 0x80000000);
|
||||||
tmc2130_check_overtemp();
|
tmc2130_check_overtemp();
|
||||||
timeout--;
|
timeout--;
|
||||||
|
|
|
@ -3281,15 +3281,23 @@ static void lcd_sort_type_set() {
|
||||||
}
|
}
|
||||||
#endif //SDCARD_SORT_ALPHA
|
#endif //SDCARD_SORT_ALPHA
|
||||||
|
|
||||||
|
static void lcd_crash_mode_info2()
|
||||||
|
{
|
||||||
|
lcd_show_fullscreen_message_and_wait_P(PSTR("WARNING: crashdetection unavailable in STEALTH mode."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void lcd_silent_mode_set() {
|
static void lcd_silent_mode_set() {
|
||||||
SilentModeMenu = !SilentModeMenu;
|
SilentModeMenu = !SilentModeMenu;
|
||||||
eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu);
|
eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu);
|
||||||
|
if (CrashDetectMenu && SilentModeMenu)
|
||||||
|
lcd_crash_mode_info2();
|
||||||
#ifdef TMC2130
|
#ifdef TMC2130
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
if (tmc2130_wait_standstill_xy(1000))
|
if (tmc2130_wait_standstill_xy(1000)) {}
|
||||||
MYSERIAL.print("standstill OK");
|
// MYSERIAL.print("standstill OK");
|
||||||
else
|
// else
|
||||||
MYSERIAL.print("standstill NG!");
|
// MYSERIAL.print("standstill NG!");
|
||||||
cli();
|
cli();
|
||||||
tmc2130_mode = SilentModeMenu?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
|
tmc2130_mode = SilentModeMenu?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
|
||||||
tmc2130_init();
|
tmc2130_init();
|
||||||
|
@ -3300,6 +3308,12 @@ static void lcd_silent_mode_set() {
|
||||||
else lcd_goto_menu(lcd_settings_menu, 7);
|
else lcd_goto_menu(lcd_settings_menu, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void lcd_crash_mode_info()
|
||||||
|
{
|
||||||
|
lcd_show_fullscreen_message_and_wait_P(PSTR("Crash-detection can be used only in NORMAL mode."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void lcd_crash_mode_set()
|
static void lcd_crash_mode_set()
|
||||||
{
|
{
|
||||||
CrashDetectMenu = !CrashDetectMenu; //set also from crashdet_enable() and crashdet_disable()
|
CrashDetectMenu = !CrashDetectMenu; //set also from crashdet_enable() and crashdet_disable()
|
||||||
|
@ -3763,14 +3777,15 @@ static void lcd_settings_menu()
|
||||||
MENU_ITEM(function, MSG_FANS_CHECK_OFF, lcd_set_fan_check);
|
MENU_ITEM(function, MSG_FANS_CHECK_OFF, lcd_set_fan_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SilentModeMenu == 0) MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set);
|
||||||
if (SilentModeMenu == 0) {
|
else MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set);
|
||||||
if (CrashDetectMenu == 0) {
|
if (SilentModeMenu == 0)
|
||||||
MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set);
|
{
|
||||||
} else {
|
if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set);
|
||||||
MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set);
|
else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else MENU_ITEM(function, MSG_CRASHDETECT_NA, lcd_crash_mode_info);
|
||||||
|
|
||||||
if (temp_cal_active == false) {
|
if (temp_cal_active == false) {
|
||||||
MENU_ITEM(function, MSG_TEMP_CALIBRATION_OFF, lcd_temp_calibration_set);
|
MENU_ITEM(function, MSG_TEMP_CALIBRATION_OFF, lcd_temp_calibration_set);
|
||||||
}
|
}
|
||||||
|
@ -3784,13 +3799,7 @@ static void lcd_settings_menu()
|
||||||
MENU_ITEM(function, MSG_SECOND_SERIAL_ON, lcd_second_serial_set);
|
MENU_ITEM(function, MSG_SECOND_SERIAL_ON, lcd_second_serial_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SilentModeMenu == 0) {
|
if (!isPrintPaused && !homing_flag)
|
||||||
MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set);
|
|
||||||
}
|
|
||||||
if (!isPrintPaused && !homing_flag)
|
|
||||||
{
|
{
|
||||||
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);
|
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);
|
||||||
}
|
}
|
||||||
|
@ -5075,20 +5084,6 @@ static void lcd_autostart_sd()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void lcd_silent_mode_set_tune() {
|
|
||||||
SilentModeMenu = !SilentModeMenu;
|
|
||||||
eeprom_update_byte((unsigned char*)EEPROM_SILENT, SilentModeMenu);
|
|
||||||
#ifdef TMC2130
|
|
||||||
st_synchronize();
|
|
||||||
cli();
|
|
||||||
tmc2130_mode = SilentModeMenu?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
|
|
||||||
tmc2130_init();
|
|
||||||
sei();
|
|
||||||
#endif //TMC2130
|
|
||||||
digipot_init();
|
|
||||||
lcd_goto_menu(lcd_tune_menu, 9);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void lcd_colorprint_change() {
|
static void lcd_colorprint_change() {
|
||||||
|
|
||||||
enquecommand_P(PSTR("M600"));
|
enquecommand_P(PSTR("M600"));
|
||||||
|
@ -5125,19 +5120,15 @@ static void lcd_tune_menu()
|
||||||
MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set);
|
MENU_ITEM(function, MSG_FSENSOR_ON, lcd_fsensor_state_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SilentModeMenu == 0) {
|
if (SilentModeMenu == 0) MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set);
|
||||||
MENU_ITEM(function, MSG_SILENT_MODE_OFF, lcd_silent_mode_set);
|
else MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set);
|
||||||
} else {
|
|
||||||
MENU_ITEM(function, MSG_SILENT_MODE_ON, lcd_silent_mode_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SilentModeMenu == 0) {
|
if (SilentModeMenu == 0)
|
||||||
if (CrashDetectMenu == 0) {
|
{
|
||||||
MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set);
|
if (CrashDetectMenu == 0) MENU_ITEM(function, MSG_CRASHDETECT_OFF, lcd_crash_mode_set);
|
||||||
} else {
|
else MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set);
|
||||||
MENU_ITEM(function, MSG_CRASHDETECT_ON, lcd_crash_mode_set);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else MENU_ITEM(function, MSG_CRASHDETECT_NA, lcd_crash_mode_info);
|
||||||
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue