Merge branch 'MK3' into MK3-PFW-1024
This commit is contained in:
commit
770fcd7c42
31 changed files with 433 additions and 251 deletions
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG]<Enter comprehensive title>"
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please, before you create a new bug report, please make sure you searched in open and closed issues and couldn't find anything that matches.
|
||||
|
||||
**Printer type** - [e.g. MK3S, MK3, MK2.5S, MK2.5, MK2S, MK2]
|
||||
**Printer firmware version**- [e.g. 3.8.1, 3.8.1-RC1, ...]
|
||||
|
||||
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||
**MMU upgrade firmware version [e.g. 1.0.6, 1.0.6-RC2, ...]
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Please describe steps to reproduce the behavior.
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**G-code**
|
||||
Please attach a G-code. This will make it easier for us to replicate the error.
|
||||
|
||||
**Video**
|
||||
Please attach a video. It usually helps to solve the problem.
|
20
.github/ISSUE_TEMPLATE/enhancement.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/enhancement.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Enhancement
|
||||
about: Suggest an idea for this project
|
||||
title: " [ENHANCEMENT]<Enter comprehensive title>"
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please, before you create a new feature request, please make sure you searched in open and closed issues and couldn't find anything that matches.
|
||||
|
||||
Enter what type of printer or upgrade the enhancement applies to.
|
||||
**Printer type** - [e.g. MK3S, MK3, MK2.5S, MK2.5, MK2S, MK2]
|
||||
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||
|
||||
**Is your enhancement related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[FEATURE REQUEST]<Enter comprehensive title>"
|
||||
labels: feature request
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please, before you create a new feature request, please make sure you searched in open and closed issues and couldn't find anything that matches.
|
||||
|
||||
If it makes sense, enter what type of printer or upgrade the feature request applies to.
|
||||
**Printer type** - [e.g. MK3S, MK3, MK2.5S, MK2.5, MK2S, MK2]
|
||||
**MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
12
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
12
.github/ISSUE_TEMPLATE/question.md
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
name: Question
|
||||
about: What do you want to know?
|
||||
title: "[QUESTION]<Enter comprehensive title>"
|
||||
labels: question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please, before you create a new question, please make sure you searched in open and closed issues and couldn't find anything that matches.
|
||||
|
||||
**What is your question?**
|
|
@ -296,6 +296,7 @@ void setPwmFrequency(uint8_t pin, int val);
|
|||
extern bool fans_check_enabled;
|
||||
extern float homing_feedrate[];
|
||||
extern bool axis_relative_modes[];
|
||||
extern float feedrate;
|
||||
extern int feedmultiply;
|
||||
extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
|
||||
extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
|
||||
|
@ -395,7 +396,7 @@ extern uint16_t gcode_in_progress;
|
|||
extern LongTimer safetyTimer;
|
||||
|
||||
#define PRINT_PERCENT_DONE_INIT 0xff
|
||||
#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || card.paused || mmu_print_saved)
|
||||
#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || mmu_print_saved)
|
||||
|
||||
//! Beware - mcode_in_progress is set as soon as the command gets really processed,
|
||||
//! which is not the same as posting the M600 command into the command queue
|
||||
|
|
|
@ -310,6 +310,8 @@ bool no_response = false;
|
|||
uint8_t important_status;
|
||||
uint8_t saved_filament_type;
|
||||
|
||||
#define SAVED_TARGET_UNSET (X_MIN_POS-1)
|
||||
float saved_target[NUM_AXIS] = {SAVED_TARGET_UNSET, 0, 0, 0};
|
||||
|
||||
// save/restore printing in case that mmu was not responding
|
||||
bool mmu_print_saved = false;
|
||||
|
@ -330,7 +332,15 @@ float destination[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0};
|
|||
|
||||
// For tracing an arc
|
||||
static float offset[3] = {0.0, 0.0, 0.0};
|
||||
static float feedrate = 1500.0, next_feedrate, saved_feedrate;
|
||||
|
||||
// Current feedrate
|
||||
float feedrate = 1500.0;
|
||||
|
||||
// Feedrate for the next move
|
||||
static float next_feedrate;
|
||||
|
||||
// Original feedrate saved during homing moves
|
||||
static float saved_feedrate;
|
||||
|
||||
// Determines Absolute or Relative Coordinates.
|
||||
// Also there is bool axis_relative_modes[] per axis flag.
|
||||
|
@ -374,8 +384,8 @@ bool saved_printing = false; //!< Print is paused and saved in RAM
|
|||
static uint32_t saved_sdpos = 0; //!< SD card position, or line number in case of USB printing
|
||||
uint8_t saved_printing_type = PRINTING_TYPE_SD;
|
||||
static float saved_pos[4] = { 0, 0, 0, 0 };
|
||||
//! Feedrate hopefully derived from an active block of the planner at the time the print has been canceled, in mm/min.
|
||||
static float saved_feedrate2 = 0;
|
||||
static uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float)
|
||||
static int saved_feedmultiply2 = 0;
|
||||
static uint8_t saved_active_extruder = 0;
|
||||
static float saved_extruder_temperature = 0.0; //!< Active extruder temperature
|
||||
static bool saved_extruder_under_pressure = false;
|
||||
|
@ -3658,7 +3668,7 @@ void process_commands()
|
|||
|
||||
Set of internal PRUSA commands
|
||||
|
||||
PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | fsensor_recover | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
|
||||
PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
|
||||
|
||||
- `Ping`
|
||||
- `PRN` - Prints revision of the printer
|
||||
|
@ -3666,7 +3676,6 @@ void process_commands()
|
|||
- `fn` - Prints farm no.
|
||||
- `thx`
|
||||
- `uvlo`
|
||||
- `fsensor_recover` - Filament sensor recover - restore print and continue
|
||||
- `MMURES` - Reset MMU
|
||||
- `RESET` - (Careful!)
|
||||
- `fv` - ?
|
||||
|
@ -3716,12 +3725,6 @@ void process_commands()
|
|||
eeprom_update_byte((uint8_t*)EEPROM_UVLO,0);
|
||||
enquecommand_P(PSTR("M24"));
|
||||
}
|
||||
#ifdef FILAMENT_SENSOR
|
||||
else if (code_seen("fsensor_recover")) // PRUSA fsensor_recover
|
||||
{
|
||||
fsensor_restore_print_and_continue();
|
||||
}
|
||||
#endif //FILAMENT_SENSOR
|
||||
else if (code_seen("MMURES")) // PRUSA MMURES
|
||||
{
|
||||
mmu_reset();
|
||||
|
@ -4046,8 +4049,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
|
||||
#endif
|
||||
|
||||
get_coordinates(); // For X Y Z E F
|
||||
|
||||
// When recovering from a previous print move, restore the originally
|
||||
// calculated target position on the first USB/SD command. This accounts
|
||||
// properly for relative moves
|
||||
if ((saved_target[0] != SAVED_TARGET_UNSET) &&
|
||||
((CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_SDCARD) ||
|
||||
(CMDBUFFER_CURRENT_TYPE == CMDBUFFER_CURRENT_TYPE_USB_WITH_LINENR)))
|
||||
{
|
||||
memcpy(destination, saved_target, sizeof(destination));
|
||||
saved_target[0] = SAVED_TARGET_UNSET;
|
||||
}
|
||||
|
||||
get_coordinates(); // For X Y Z E F
|
||||
if (total_filament_used > ((current_position[E_AXIS] - destination[E_AXIS]) * 100)) { //protection against total_filament_used overflow
|
||||
total_filament_used = total_filament_used + ((destination[E_AXIS] - current_position[E_AXIS]) * 100);
|
||||
}
|
||||
|
@ -5366,21 +5380,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
|
|||
card.openFile(strchr_pointer + 4,true);
|
||||
break;
|
||||
|
||||
//! ### M24 - Start SD print
|
||||
//! ### M24 - Start/resume SD print
|
||||
// ----------------------------------
|
||||
case 24:
|
||||
if (!card.paused)
|
||||
failstats_reset_print();
|
||||
card.startFileprint();
|
||||
starttime=_millis();
|
||||
if (isPrintPaused)
|
||||
lcd_resume_print();
|
||||
else
|
||||
{
|
||||
failstats_reset_print();
|
||||
card.startFileprint();
|
||||
starttime=_millis();
|
||||
}
|
||||
break;
|
||||
|
||||
//! ### M25 - Pause SD print
|
||||
// ----------------------------------
|
||||
case 25:
|
||||
card.pauseSDPrint();
|
||||
break;
|
||||
|
||||
//! ### M26 S\<index\> - Set SD index
|
||||
//! Set position in SD card file to index in bytes.
|
||||
//! This command is expected to be called after M23 and before M24.
|
||||
|
@ -5935,7 +5947,7 @@ Sigma_Exit:
|
|||
//! ### M112 - Emergency stop
|
||||
// -----------------------------------------
|
||||
case 112:
|
||||
kill(_n(""), 3);
|
||||
kill(MSG_M112_KILL, 3);
|
||||
break;
|
||||
|
||||
//! ### M140 - Set bed temperature
|
||||
|
@ -7235,19 +7247,27 @@ Sigma_Exit:
|
|||
break;
|
||||
#endif //FILAMENTCHANGEENABLE
|
||||
|
||||
//! ### M25 - Pause SD print
|
||||
//! ### M601 - Pause print
|
||||
//! ### M125 - Pause print (TODO: not implemented)
|
||||
// -------------------------------
|
||||
case 25:
|
||||
case 601:
|
||||
{
|
||||
cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
|
||||
lcd_pause_print();
|
||||
if (!isPrintPaused)
|
||||
{
|
||||
st_synchronize();
|
||||
cmdqueue_pop_front(); //trick because we want skip this command (M601) after restore
|
||||
lcd_pause_print();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//! ### M602 - Resume print
|
||||
// -------------------------------
|
||||
case 602: {
|
||||
lcd_resume_print();
|
||||
if (isPrintPaused)
|
||||
lcd_resume_print();
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -8342,38 +8362,43 @@ void clamp_to_software_endstops(float target[3])
|
|||
}
|
||||
|
||||
#ifdef MESH_BED_LEVELING
|
||||
void mesh_plan_buffer_line(const float &x, const float &y, const float &z, const float &e, const float &feed_rate, const uint8_t extruder) {
|
||||
void mesh_plan_buffer_line(const float &x, const float &y, const float &z, const float &e, const float &feed_rate, const uint8_t extruder) {
|
||||
float dx = x - current_position[X_AXIS];
|
||||
float dy = y - current_position[Y_AXIS];
|
||||
float dz = z - current_position[Z_AXIS];
|
||||
int n_segments = 0;
|
||||
|
||||
|
||||
if (mbl.active) {
|
||||
float len = abs(dx) + abs(dy);
|
||||
if (len > 0)
|
||||
// Split to 3cm segments or shorter.
|
||||
n_segments = int(ceil(len / 30.f));
|
||||
}
|
||||
|
||||
|
||||
if (n_segments > 1) {
|
||||
// In a multi-segment move explicitly set the final target in the plan
|
||||
// as the move will be recalculated in it's entirety
|
||||
float gcode_target[NUM_AXIS];
|
||||
gcode_target[X_AXIS] = x;
|
||||
gcode_target[Y_AXIS] = y;
|
||||
gcode_target[Z_AXIS] = z;
|
||||
gcode_target[E_AXIS] = e;
|
||||
|
||||
float dz = z - current_position[Z_AXIS];
|
||||
float de = e - current_position[E_AXIS];
|
||||
|
||||
for (int i = 1; i < n_segments; ++ i) {
|
||||
float t = float(i) / float(n_segments);
|
||||
if (saved_printing || (mbl.active == false)) return;
|
||||
plan_buffer_line(
|
||||
current_position[X_AXIS] + t * dx,
|
||||
plan_buffer_line(current_position[X_AXIS] + t * dx,
|
||||
current_position[Y_AXIS] + t * dy,
|
||||
current_position[Z_AXIS] + t * dz,
|
||||
current_position[E_AXIS] + t * de,
|
||||
feed_rate, extruder);
|
||||
feed_rate, extruder, gcode_target);
|
||||
if (waiting_inside_plan_buffer_line_print_aborted)
|
||||
return;
|
||||
}
|
||||
}
|
||||
// The rest of the path.
|
||||
plan_buffer_line(x, y, z, e, feed_rate, extruder);
|
||||
current_position[X_AXIS] = x;
|
||||
current_position[Y_AXIS] = y;
|
||||
current_position[Z_AXIS] = z;
|
||||
current_position[E_AXIS] = e;
|
||||
}
|
||||
#endif // MESH_BED_LEVELING
|
||||
|
||||
|
@ -8394,9 +8419,7 @@ void prepare_move()
|
|||
#endif
|
||||
}
|
||||
|
||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||
current_position[i] = destination[i];
|
||||
}
|
||||
set_current_to_destination();
|
||||
}
|
||||
|
||||
void prepare_arc_move(char isclockwise) {
|
||||
|
@ -8604,7 +8627,7 @@ if(0)
|
|||
|
||||
if( (_millis() - previous_millis_cmd) > max_inactive_time )
|
||||
if(max_inactive_time)
|
||||
kill(_n(""), 4);
|
||||
kill(_n("Inactivity Shutdown"), 4);
|
||||
if(stepper_inactive_time) {
|
||||
if( (_millis() - previous_millis_cmd) > stepper_inactive_time )
|
||||
{
|
||||
|
@ -8645,7 +8668,7 @@ if(0)
|
|||
// ----------------------------------------------------------------
|
||||
if ( killCount >= KILL_DELAY)
|
||||
{
|
||||
kill("", 5);
|
||||
kill(NULL, 5);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -8723,6 +8746,16 @@ void kill(const char *full_screen_message, unsigned char id)
|
|||
} // Wait for reset
|
||||
}
|
||||
|
||||
// Stop: Emergency stop used by overtemp functions which allows recovery
|
||||
//
|
||||
// In addition to stopping the print, this prevents subsequent G[0-3] commands to be
|
||||
// processed via USB (using "Stopped") until the print is resumed via M999 or
|
||||
// manually started from scratch with the LCD.
|
||||
//
|
||||
// Note that the current instruction is completely discarded, so resuming from Stop()
|
||||
// will introduce either over/under extrusion on the current segment, and will not
|
||||
// survive a power panic. Switching Stop() to use the pause machinery instead (with
|
||||
// the addition of disabling the headers) could allow true recovery in the future.
|
||||
void Stop()
|
||||
{
|
||||
disable_heater();
|
||||
|
@ -9117,10 +9150,8 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
|
|||
destination[X_AXIS] = ix * (x_dimension / (x_points_num - 1)) + shift_x;
|
||||
destination[Y_AXIS] = iy * (y_dimension / (y_points_num - 1)) + shift_y;
|
||||
|
||||
mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder);
|
||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||
current_position[i] = destination[i];
|
||||
}
|
||||
mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder);
|
||||
set_current_to_destination();
|
||||
st_synchronize();
|
||||
|
||||
// printf_P(PSTR("X = %f; Y= %f \n"), current_position[X_AXIS], current_position[Y_AXIS]);
|
||||
|
@ -9535,9 +9566,11 @@ float temp_compensation_pinda_thermistor_offset(float temperature_pinda)
|
|||
void long_pause() //long pause print
|
||||
{
|
||||
st_synchronize();
|
||||
|
||||
start_pause_print = _millis();
|
||||
|
||||
// Stop heaters
|
||||
setAllTargetHotends(0);
|
||||
|
||||
//retract
|
||||
current_position[E_AXIS] -= default_retraction;
|
||||
plan_buffer_line_curposXYZE(400, active_extruder);
|
||||
|
@ -9552,8 +9585,7 @@ void long_pause() //long pause print
|
|||
current_position[Y_AXIS] = Y_PAUSE_POS;
|
||||
plan_buffer_line_curposXYZE(50, active_extruder);
|
||||
|
||||
// Turn off the hotends and print fan
|
||||
setAllTargetHotends(0);
|
||||
// Turn off the print fan
|
||||
fanSpeed = 0;
|
||||
}
|
||||
|
||||
|
@ -9611,8 +9643,18 @@ void uvlo_()
|
|||
if (sd_position < 0) sd_position = 0;
|
||||
}
|
||||
|
||||
// Backup the feedrate in mm/min.
|
||||
int feedrate_bckp = blocks_queued() ? (block_buffer[block_buffer_tail].nominal_speed * 60.f) : feedrate;
|
||||
// save the global state at planning time
|
||||
uint16_t feedrate_bckp;
|
||||
if (blocks_queued())
|
||||
{
|
||||
memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
|
||||
feedrate_bckp = current_block->gcode_feedrate;
|
||||
}
|
||||
else
|
||||
{
|
||||
saved_target[0] = SAVED_TARGET_UNSET;
|
||||
feedrate_bckp = feedrate;
|
||||
}
|
||||
|
||||
// After this call, the planner queue is emptied and the current_position is set to a current logical coordinate.
|
||||
// The logical coordinate will likely differ from the machine coordinate if the skew calibration and mesh bed leveling
|
||||
|
@ -9679,7 +9721,8 @@ void uvlo_()
|
|||
eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4), current_position[Y_AXIS]);
|
||||
eeprom_update_float((float*)EEPROM_UVLO_CURRENT_POSITION_Z , current_position[Z_AXIS]);
|
||||
// Store the current feed rate, temperatures, fan speed and extruder multipliers (flow rates)
|
||||
EEPROM_save_B(EEPROM_UVLO_FEEDRATE, &feedrate_bckp);
|
||||
eeprom_update_word((uint16_t*)EEPROM_UVLO_FEEDRATE, feedrate_bckp);
|
||||
EEPROM_save_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply);
|
||||
eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_HOTEND, target_temperature[active_extruder]);
|
||||
eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_BED, target_temperature_bed);
|
||||
eeprom_update_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED, fanSpeed);
|
||||
|
@ -9691,6 +9734,11 @@ void uvlo_()
|
|||
#endif
|
||||
#endif
|
||||
eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
|
||||
// Store the saved target
|
||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
|
||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
|
||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4), saved_target[Z_AXIS]);
|
||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4), saved_target[E_AXIS]);
|
||||
|
||||
// Finaly store the "power outage" flag.
|
||||
if(sd_print) eeprom_update_byte((uint8_t*)EEPROM_UVLO, 1);
|
||||
|
@ -9939,10 +9987,17 @@ void recover_machine_state_after_power_panic(bool bTiny)
|
|||
#endif
|
||||
#endif
|
||||
extrudemultiply = (int)eeprom_read_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY));
|
||||
|
||||
// 9) Recover the saved target
|
||||
saved_target[X_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4));
|
||||
saved_target[Y_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4));
|
||||
saved_target[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4));
|
||||
saved_target[E_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4));
|
||||
}
|
||||
|
||||
void restore_print_from_eeprom() {
|
||||
int feedrate_rec;
|
||||
int feedmultiply_rec;
|
||||
uint8_t fan_speed_rec;
|
||||
char cmd[30];
|
||||
char filename[13];
|
||||
|
@ -9950,9 +10005,12 @@ void restore_print_from_eeprom() {
|
|||
char dir_name[9];
|
||||
|
||||
fan_speed_rec = eeprom_read_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED);
|
||||
EEPROM_read_B(EEPROM_UVLO_FEEDRATE, &feedrate_rec);
|
||||
feedrate_rec = eeprom_read_word((uint16_t*)EEPROM_UVLO_FEEDRATE);
|
||||
EEPROM_read_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply_rec);
|
||||
SERIAL_ECHOPGM("Feedrate:");
|
||||
MYSERIAL.println(feedrate_rec);
|
||||
MYSERIAL.print(feedrate_rec);
|
||||
SERIAL_ECHOPGM(", feedmultiply:");
|
||||
MYSERIAL.println(feedmultiply_rec);
|
||||
|
||||
depth = eeprom_read_byte((uint8_t*)EEPROM_DIR_DEPTH);
|
||||
|
||||
|
@ -9993,9 +10051,11 @@ void restore_print_from_eeprom() {
|
|||
enquecommand(cmd);
|
||||
// Unretract.
|
||||
enquecommand_P(PSTR("G1 E" STRINGIFY(2*default_retraction)" F480"));
|
||||
// Set the feedrate saved at the power panic.
|
||||
// Set the feedrates saved at the power panic.
|
||||
sprintf_P(cmd, PSTR("G1 F%d"), feedrate_rec);
|
||||
enquecommand(cmd);
|
||||
sprintf_P(cmd, PSTR("M220 S%d"), feedmultiply_rec);
|
||||
enquecommand(cmd);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS))
|
||||
{
|
||||
enquecommand_P(PSTR("M82")); //E axis abslute mode
|
||||
|
@ -10147,16 +10207,21 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
saved_feedrate2 = feedrate; //save feedrate
|
||||
#else
|
||||
// Try to deduce the feedrate from the first block of the planner.
|
||||
// Speed is in mm/min.
|
||||
saved_feedrate2 = blocks_queued() ? (block_buffer[block_buffer_tail].nominal_speed * 60.f) : feedrate;
|
||||
#endif
|
||||
// save the global state at planning time
|
||||
if (blocks_queued())
|
||||
{
|
||||
memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
|
||||
saved_feedrate2 = current_block->gcode_feedrate;
|
||||
}
|
||||
else
|
||||
{
|
||||
saved_target[0] = SAVED_TARGET_UNSET;
|
||||
saved_feedrate2 = feedrate;
|
||||
}
|
||||
|
||||
planner_abort_hard(); //abort printing
|
||||
memcpy(saved_pos, current_position, sizeof(saved_pos));
|
||||
saved_feedmultiply2 = feedmultiply; //save feedmultiply
|
||||
saved_active_extruder = active_extruder; //save active_extruder
|
||||
saved_extruder_temperature = degTargetHotend(active_extruder);
|
||||
|
||||
|
@ -10172,7 +10237,9 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
|
|||
sei();
|
||||
if ((z_move != 0) || (e_move != 0)) { // extruder or z move
|
||||
#if 1
|
||||
// Rather than calling plan_buffer_line directly, push the move into the command queue,
|
||||
// Rather than calling plan_buffer_line directly, push the move into the command queue so that
|
||||
// the caller can continue processing. This is used during powerpanic to save the state as we
|
||||
// move away from the print.
|
||||
char buf[48];
|
||||
|
||||
// First unretract (relative extrusion)
|
||||
|
@ -10201,6 +10268,7 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
|
|||
memcpy(current_position, saved_pos, sizeof(saved_pos));
|
||||
memcpy(destination, current_position, sizeof(destination));
|
||||
#endif
|
||||
waiting_inside_plan_buffer_line_print_aborted = true; //unroll the stack
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10234,7 +10302,6 @@ void restore_print_from_ram_and_continue(float e_move)
|
|||
wait_for_heater(_millis(), saved_active_extruder);
|
||||
heating_status = 2;
|
||||
}
|
||||
feedrate = saved_feedrate2; //restore feedrate
|
||||
axis_relative_modes[E_AXIS] = saved_extruder_relative_mode;
|
||||
float e = saved_pos[E_AXIS] - e_move;
|
||||
plan_set_e_position(e);
|
||||
|
@ -10257,6 +10324,10 @@ void restore_print_from_ram_and_continue(float e_move)
|
|||
fans_check_enabled = true;
|
||||
#endif
|
||||
|
||||
// restore original feedrate/feedmultiply _after_ restoring the extruder position
|
||||
feedrate = saved_feedrate2;
|
||||
feedmultiply = saved_feedmultiply2;
|
||||
|
||||
memcpy(current_position, saved_pos, sizeof(saved_pos));
|
||||
memcpy(destination, current_position, sizeof(destination));
|
||||
if (saved_printing_type == PRINTING_TYPE_SD) { //was sd printing
|
||||
|
@ -10272,10 +10343,12 @@ void restore_print_from_ram_and_continue(float e_move)
|
|||
else {
|
||||
//not sd printing nor usb printing
|
||||
}
|
||||
|
||||
SERIAL_PROTOCOLLNRPGM(MSG_OK); //dummy response because of octoprint is waiting for this
|
||||
lcd_setstatuspgm(_T(WELCOME_MSG));
|
||||
saved_printing_type = PRINTING_TYPE_NONE;
|
||||
saved_printing = false;
|
||||
waiting_inside_plan_buffer_line_print_aborted = true; //unroll the stack
|
||||
}
|
||||
|
||||
void print_world_coordinates()
|
||||
|
|
|
@ -25,7 +25,6 @@ CardReader::CardReader()
|
|||
sdpos = 0;
|
||||
sdprinting = false;
|
||||
cardOK = false;
|
||||
paused = false;
|
||||
saving = false;
|
||||
logging = false;
|
||||
autostart_atmillis=0;
|
||||
|
@ -242,24 +241,13 @@ void CardReader::startFileprint()
|
|||
if(cardOK)
|
||||
{
|
||||
sdprinting = true;
|
||||
paused = false;
|
||||
Stopped = false;
|
||||
Stopped = false;
|
||||
#ifdef SDCARD_SORT_ALPHA
|
||||
//flush_presort();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void CardReader::pauseSDPrint()
|
||||
{
|
||||
if(sdprinting)
|
||||
{
|
||||
sdprinting = false;
|
||||
paused = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CardReader::openLogFile(const char* name)
|
||||
{
|
||||
logging = true;
|
||||
|
@ -371,10 +359,10 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
|||
{
|
||||
if((int)file_subcall_ctr>(int)SD_PROCEDURE_DEPTH-1)
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
|
||||
SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
|
||||
kill("", 1);
|
||||
// SERIAL_ERROR_START;
|
||||
// SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
|
||||
// SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
|
||||
kill(_n("trying to call sub-gcode files with too many levels."), 1);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -408,9 +396,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
|||
SERIAL_ECHOLN(name);
|
||||
}
|
||||
sdprinting = false;
|
||||
paused = false;
|
||||
|
||||
|
||||
|
||||
SdFile myDir;
|
||||
const char *fname=name;
|
||||
diveSubfolder(fname,myDir);
|
||||
|
@ -492,24 +478,27 @@ uint32_t CardReader::getFileSize()
|
|||
|
||||
void CardReader::getStatus()
|
||||
{
|
||||
if(sdprinting){
|
||||
SERIAL_PROTOCOL(longFilename);
|
||||
SERIAL_PROTOCOLPGM("\n");
|
||||
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
|
||||
SERIAL_PROTOCOL(sdpos);
|
||||
SERIAL_PROTOCOLPGM("/");
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
uint16_t time = _millis()/60000 - starttime/60000;
|
||||
SERIAL_PROTOCOL(itostr2(time/60));
|
||||
SERIAL_PROTOCOL(':');
|
||||
SERIAL_PROTOCOL(itostr2(time%60));
|
||||
SERIAL_PROTOCOLPGM("\n");
|
||||
}
|
||||
else if (paused) {
|
||||
SERIAL_PROTOCOLLNPGM("SD print paused");
|
||||
}
|
||||
else if (saved_printing) {
|
||||
SERIAL_PROTOCOLLNPGM("Print saved");
|
||||
if(sdprinting)
|
||||
{
|
||||
if (isPrintPaused) {
|
||||
SERIAL_PROTOCOLLNPGM("SD print paused");
|
||||
}
|
||||
else if (saved_printing) {
|
||||
SERIAL_PROTOCOLLNPGM("Print saved");
|
||||
}
|
||||
else {
|
||||
SERIAL_PROTOCOL(longFilename);
|
||||
SERIAL_PROTOCOLPGM("\n");
|
||||
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
|
||||
SERIAL_PROTOCOL(sdpos);
|
||||
SERIAL_PROTOCOLPGM("/");
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
uint16_t time = _millis()/60000 - starttime/60000;
|
||||
SERIAL_PROTOCOL(itostr2(time/60));
|
||||
SERIAL_PROTOCOL(':');
|
||||
SERIAL_PROTOCOL(itostr2(time%60));
|
||||
SERIAL_PROTOCOLPGM("\n");
|
||||
}
|
||||
}
|
||||
else {
|
||||
SERIAL_PROTOCOLLNPGM("Not SD printing");
|
||||
|
|
|
@ -25,7 +25,6 @@ public:
|
|||
void closefile(bool store_location=false);
|
||||
void release();
|
||||
void startFileprint();
|
||||
void pauseSDPrint();
|
||||
uint32_t getFileSize();
|
||||
void getStatus();
|
||||
void printingHasFinished();
|
||||
|
@ -75,7 +74,6 @@ public:
|
|||
bool logging;
|
||||
bool sdprinting ;
|
||||
bool cardOK ;
|
||||
bool paused ;
|
||||
char filename[13];
|
||||
uint16_t modificationTime, modificationDate;
|
||||
uint32_t cluster, position;
|
||||
|
|
|
@ -500,7 +500,7 @@ void get_command()
|
|||
|
||||
//If command was e-stop process now
|
||||
if(strcmp(cmdbuffer+bufindw+CMDHDRSIZE, "M112") == 0)
|
||||
kill("", 2);
|
||||
kill(MSG_M112_KILL, 2);
|
||||
|
||||
// Store the current line into buffer, move to the next line.
|
||||
// Store type of entry
|
||||
|
@ -582,30 +582,8 @@ void get_command()
|
|||
((serial_char == '#' || serial_char == ':') && comment_mode == false) ||
|
||||
serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
|
||||
{
|
||||
if(card.eof()){
|
||||
SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED
|
||||
stoptime=_millis();
|
||||
char time[30];
|
||||
unsigned long t=(stoptime-starttime-pause_time)/1000;
|
||||
pause_time = 0;
|
||||
int hours, minutes;
|
||||
minutes=(t/60)%60;
|
||||
hours=t/60/60;
|
||||
save_statistics(total_filament_used, t);
|
||||
sprintf_P(time, PSTR("%i hours %i minutes"),hours, minutes);
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLN(time);
|
||||
lcd_setstatus(time);
|
||||
card.printingHasFinished();
|
||||
card.checkautostart(true);
|
||||
if(card.eof()) break;
|
||||
|
||||
if (farm_mode)
|
||||
{
|
||||
prusa_statistics(6);
|
||||
lcd_commands_type = LcdCommands::FarmModeConfirm;
|
||||
}
|
||||
|
||||
}
|
||||
if(serial_char=='#')
|
||||
stop_buffering=true;
|
||||
|
||||
|
@ -663,6 +641,37 @@ void get_command()
|
|||
else if(!comment_mode) cmdbuffer[bufindw+CMDHDRSIZE+serial_count++] = serial_char;
|
||||
}
|
||||
}
|
||||
if(card.eof())
|
||||
{
|
||||
// file was fully buffered, but commands might still need to be planned!
|
||||
// do *not* clear sdprinting until all SD commands are consumed to ensure
|
||||
// SD state can be resumed from a saved printing state. sdprinting is only
|
||||
// cleared by printingHasFinished after peforming all remaining moves.
|
||||
if(!cmdqueue_calc_sd_length())
|
||||
{
|
||||
SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED
|
||||
stoptime=_millis();
|
||||
char time[30];
|
||||
unsigned long t=(stoptime-starttime-pause_time)/1000;
|
||||
pause_time = 0;
|
||||
int hours, minutes;
|
||||
minutes=(t/60)%60;
|
||||
hours=t/60/60;
|
||||
save_statistics(total_filament_used, t);
|
||||
sprintf_P(time, PSTR("%i hours %i minutes"),hours, minutes);
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLN(time);
|
||||
lcd_setstatus(time);
|
||||
card.printingHasFinished();
|
||||
card.checkautostart(true);
|
||||
|
||||
if (farm_mode)
|
||||
{
|
||||
prusa_statistics(6);
|
||||
lcd_commands_type = LcdCommands::FarmModeConfirm;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif //SDSUPPORT
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
|||
#define EEPROM_UVLO_CURRENT_POSITION_Z (EEPROM_FILE_POSITION - 4) //float for current position in Z
|
||||
#define EEPROM_UVLO_TARGET_HOTEND (EEPROM_UVLO_CURRENT_POSITION_Z - 1)
|
||||
#define EEPROM_UVLO_TARGET_BED (EEPROM_UVLO_TARGET_HOTEND - 1)
|
||||
#define EEPROM_UVLO_FEEDRATE (EEPROM_UVLO_TARGET_BED - 2)
|
||||
#define EEPROM_UVLO_FEEDRATE (EEPROM_UVLO_TARGET_BED - 2) //uint16_t
|
||||
#define EEPROM_UVLO_FAN_SPEED (EEPROM_UVLO_FEEDRATE - 1)
|
||||
#define EEPROM_FAN_CHECK_ENABLED (EEPROM_UVLO_FAN_SPEED - 1)
|
||||
#define EEPROM_UVLO_MESH_BED_LEVELING (EEPROM_FAN_CHECK_ENABLED - 9*2)
|
||||
|
@ -204,7 +204,10 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
|
|||
#define EEPROM_FSENSOR_PCB (EEPROM_SHEETS_BASE-1) // uint8
|
||||
#define EEPROM_FSENSOR_ACTION_NA (EEPROM_FSENSOR_PCB-1) // uint8
|
||||
|
||||
#define EEPROM_BACKLIGHT_LEVEL_HIGH (EEPROM_FSENSOR_ACTION_NA-1) // uint8
|
||||
#define EEPROM_UVLO_SAVED_TARGET (EEPROM_FSENSOR_ACTION_NA - 4*4) // 4 x float for saved target for all axes
|
||||
#define EEPROM_UVLO_FEEDMULTIPLY (EEPROM_UVLO_SAVED_TARGET - 2) // uint16_t for feedmultiply
|
||||
|
||||
#define EEPROM_BACKLIGHT_LEVEL_HIGH (EEPROM_UVLO_FEEDMULTIPLY-1) // uint8
|
||||
#define EEPROM_BACKLIGHT_LEVEL_LOW (EEPROM_BACKLIGHT_LEVEL_HIGH-1) // uint8
|
||||
#define EEPROM_BACKLIGHT_MODE (EEPROM_BACKLIGHT_LEVEL_LOW-1) // uint8
|
||||
#define EEPROM_BACKLIGHT_TIMEOUT (EEPROM_BACKLIGHT_MODE-2) // uint16
|
||||
|
|
|
@ -57,15 +57,8 @@ bool fsensor_enabled = true;
|
|||
bool fsensor_watch_runout = true;
|
||||
//! not responding - is set if any communication error occurred during initialization or readout
|
||||
bool fsensor_not_responding = false;
|
||||
//! printing saved
|
||||
bool fsensor_printing_saved = false;
|
||||
//! enable/disable quality meassurement
|
||||
bool fsensor_oq_meassure_enabled = false;
|
||||
//! as explained in the CHECK_FSENSOR macro: this flag is set to true when fsensor posts
|
||||
//! the M600 into the command queue, which elliminates the hazard of having posted multiple M600's
|
||||
//! before the first one gets read and started processing.
|
||||
//! Btw., the IR fsensor could do up to 6 posts before the command queue managed to start processing the first M600 ;)
|
||||
static bool fsensor_m600_enqueued = false;
|
||||
|
||||
//! number of errors, updated in ISR
|
||||
uint8_t fsensor_err_cnt = 0;
|
||||
|
@ -137,12 +130,19 @@ void fsensor_stop_and_save_print(void)
|
|||
void fsensor_restore_print_and_continue(void)
|
||||
{
|
||||
printf_P(PSTR("fsensor_restore_print_and_continue\n"));
|
||||
fsensor_watch_runout = true;
|
||||
fsensor_err_cnt = 0;
|
||||
fsensor_m600_enqueued = false;
|
||||
restore_print_from_ram_and_continue(0); //XYZ = orig, E - no change
|
||||
}
|
||||
|
||||
// fsensor_checkpoint_print cuts the current print job at the current position,
|
||||
// allowing new instructions to be inserted in the middle
|
||||
void fsensor_checkpoint_print(void)
|
||||
{
|
||||
printf_P(PSTR("fsensor_checkpoint_print\n"));
|
||||
stop_and_save_print_to_ram(0, 0);
|
||||
restore_print_from_ram_and_continue(0);
|
||||
}
|
||||
|
||||
void fsensor_init(void)
|
||||
{
|
||||
#ifdef PAT9125
|
||||
|
@ -565,8 +565,6 @@ void fsensor_enque_M600(){
|
|||
printf_P(PSTR("fsensor_update - M600\n"));
|
||||
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
||||
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
||||
enquecommand_front_P(PSTR("PRUSA fsensor_recover"));
|
||||
fsensor_m600_enqueued = true;
|
||||
enquecommand_front_P((PSTR("M600")));
|
||||
}
|
||||
|
||||
|
@ -578,7 +576,7 @@ void fsensor_enque_M600(){
|
|||
void fsensor_update(void)
|
||||
{
|
||||
#ifdef PAT9125
|
||||
if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX) && ( ! fsensor_m600_enqueued) )
|
||||
if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
|
||||
{
|
||||
bool autoload_enabled_tmp = fsensor_autoload_enabled;
|
||||
fsensor_autoload_enabled = false;
|
||||
|
@ -611,22 +609,18 @@ void fsensor_update(void)
|
|||
err |= (fsensor_oq_er_sum > 2);
|
||||
err |= (fsensor_oq_yd_sum < (4 * FSENSOR_OQ_MIN_YD));
|
||||
|
||||
if (!err)
|
||||
{
|
||||
printf_P(PSTR("fsensor_err_cnt = 0\n"));
|
||||
fsensor_restore_print_and_continue();
|
||||
}
|
||||
else
|
||||
{
|
||||
fsensor_enque_M600();
|
||||
fsensor_watch_runout = false;
|
||||
}
|
||||
fsensor_restore_print_and_continue();
|
||||
fsensor_autoload_enabled = autoload_enabled_tmp;
|
||||
fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
|
||||
|
||||
if (!err)
|
||||
printf_P(PSTR("fsensor_err_cnt = 0\n"));
|
||||
else
|
||||
fsensor_enque_M600();
|
||||
}
|
||||
#else //PAT9125
|
||||
if (CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected && ( ! fsensor_m600_enqueued) )
|
||||
{
|
||||
if (CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected)
|
||||
{
|
||||
if(digitalRead(IR_SENSOR_PIN))
|
||||
{ // IR_SENSOR_PIN ~ H
|
||||
#if IR_SENSOR_ANALOG
|
||||
|
@ -670,8 +664,8 @@ void fsensor_update(void)
|
|||
else
|
||||
{
|
||||
#endif //IR_SENSOR_ANALOG
|
||||
fsensor_stop_and_save_print();
|
||||
fsensor_enque_M600();
|
||||
fsensor_checkpoint_print();
|
||||
fsensor_enque_M600();
|
||||
#if IR_SENSOR_ANALOG
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@ extern bool fsensor_oq_meassure_enabled;
|
|||
extern void fsensor_stop_and_save_print(void);
|
||||
//! restore print - restore position and heatup to original temperature
|
||||
extern void fsensor_restore_print_and_continue(void);
|
||||
//! split the current gcode stream to insert new instructions
|
||||
extern void fsensor_checkpoint_print(void);
|
||||
//! @}
|
||||
|
||||
//! initialize
|
||||
|
|
|
@ -167,3 +167,4 @@ const char MSG_OCTOPRINT_RESUMED[] PROGMEM_N1 = "// action:resumed"; ////
|
|||
const char MSG_OCTOPRINT_CANCEL[] PROGMEM_N1 = "// action:cancel"; ////
|
||||
const char MSG_FANCHECK_EXTRUDER[] PROGMEM_N1 = "Err: EXTR. FAN ERROR"; ////c=20
|
||||
const char MSG_FANCHECK_PRINT[] PROGMEM_N1 = "Err: PRINT FAN ERROR"; ////c=20
|
||||
const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
|
||||
|
|
|
@ -168,6 +168,7 @@ extern const char MSG_OCTOPRINT_RESUMED[];
|
|||
extern const char MSG_OCTOPRINT_CANCEL[];
|
||||
extern const char MSG_FANCHECK_EXTRUDER[];
|
||||
extern const char MSG_FANCHECK_PRINT[];
|
||||
extern const char MSG_M112_KILL[];
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
@ -382,8 +382,7 @@ void mmu_loop(void)
|
|||
FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda);
|
||||
//printf_P(PSTR("Eact: %d\n"), int(e_active()));
|
||||
if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) {
|
||||
fsensor_stop_and_save_print();
|
||||
enquecommand_front_P(PSTR("PRUSA fsensor_recover")); //then recover
|
||||
fsensor_checkpoint_print();
|
||||
ad_markDepleted(mmu_extruder);
|
||||
if (lcd_autoDepleteEnabled() && !ad_allDepleted())
|
||||
{
|
||||
|
|
|
@ -258,11 +258,11 @@ void optiboot_w25x20cl_enter()
|
|||
uint32_t addr = (((uint32_t)rampz) << 16) | address;
|
||||
// During a single bootloader run, only erase a 64kB block once.
|
||||
// An 8bit bitmask 'pages_erased' covers 512kB of FLASH memory.
|
||||
if (address == 0 && (pages_erased & (1 << addr)) == 0) {
|
||||
if ((address == 0) && (pages_erased & (1 << (addr >> 16))) == 0) {
|
||||
w25x20cl_wait_busy();
|
||||
w25x20cl_enable_wr();
|
||||
w25x20cl_block64_erase(addr);
|
||||
pages_erased |= (1 << addr);
|
||||
pages_erased |= (1 << (addr >> 16));
|
||||
}
|
||||
w25x20cl_wait_busy();
|
||||
w25x20cl_enable_wr();
|
||||
|
|
|
@ -659,15 +659,15 @@ float junction_deviation = 0.1;
|
|||
// Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in
|
||||
// mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
|
||||
// calculation the caller must also provide the physical length of the line in millimeters.
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder)
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target)
|
||||
{
|
||||
// Calculate the buffer head after we push this byte
|
||||
int next_buffer_head = next_block_index(block_buffer_head);
|
||||
|
||||
// If the buffer is full: good! That means we are well ahead of the robot.
|
||||
// Rest here until there is room in the buffer.
|
||||
waiting_inside_plan_buffer_line_print_aborted = false;
|
||||
if (block_buffer_tail == next_buffer_head) {
|
||||
waiting_inside_plan_buffer_line_print_aborted = false;
|
||||
do {
|
||||
manage_heater();
|
||||
// Vojtech: Don't disable motors inside the planner!
|
||||
|
@ -687,6 +687,29 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
|
|||
planner_update_queue_min_counter();
|
||||
#endif /* PLANNER_DIAGNOSTICS */
|
||||
|
||||
// Prepare to set up new block
|
||||
block_t *block = &block_buffer[block_buffer_head];
|
||||
|
||||
// Mark block as not busy (Not executed by the stepper interrupt, could be still tinkered with.)
|
||||
block->busy = false;
|
||||
|
||||
// Set sdlen for calculating sd position
|
||||
block->sdlen = 0;
|
||||
|
||||
// Save original destination of the move
|
||||
if (gcode_target)
|
||||
memcpy(block->gcode_target, gcode_target, sizeof(block_t::gcode_target));
|
||||
else
|
||||
{
|
||||
block->gcode_target[X_AXIS] = x;
|
||||
block->gcode_target[Y_AXIS] = y;
|
||||
block->gcode_target[Z_AXIS] = z;
|
||||
block->gcode_target[E_AXIS] = e;
|
||||
}
|
||||
|
||||
// Save the global feedrate at scheduling time
|
||||
block->gcode_feedrate = feedrate;
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
|
@ -786,15 +809,6 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
|
|||
}
|
||||
#endif
|
||||
|
||||
// Prepare to set up new block
|
||||
block_t *block = &block_buffer[block_buffer_head];
|
||||
|
||||
// Set sdlen for calculating sd position
|
||||
block->sdlen = 0;
|
||||
|
||||
// Mark block as not busy (Not executed by the stepper interrupt, could be still tinkered with.)
|
||||
block->busy = false;
|
||||
|
||||
// Number of steps for each axis
|
||||
#ifndef COREXY
|
||||
// default non-h-bot planning
|
||||
|
|
|
@ -116,7 +116,10 @@ typedef struct {
|
|||
unsigned long abs_adv_steps_multiplier8; // Factorised by 2^8 to avoid float
|
||||
#endif
|
||||
|
||||
uint16_t sdlen;
|
||||
// Save/recovery state data
|
||||
float gcode_target[NUM_AXIS]; // Target (abs mm) of the original Gcode instruction
|
||||
uint16_t gcode_feedrate; // Default and/or move feedrate
|
||||
uint16_t sdlen; // Length of the Gcode instruction
|
||||
} block_t;
|
||||
|
||||
#ifdef LIN_ADVANCE
|
||||
|
@ -147,7 +150,7 @@ vector_3 plan_get_position();
|
|||
/// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
|
||||
void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder);
|
||||
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder);
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target = NULL);
|
||||
//void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
|
||||
|
@ -238,6 +241,7 @@ FORCE_INLINE bool planner_queue_full() {
|
|||
// wait for the steppers to stop,
|
||||
// update planner's current position and the current_position of the front end.
|
||||
extern void planner_abort_hard();
|
||||
extern bool waiting_inside_plan_buffer_line_print_aborted;
|
||||
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
void set_extrude_min_temp(float temp);
|
||||
|
|
|
@ -879,7 +879,7 @@ static float analog2temp(int raw, uint8_t e) {
|
|||
SERIAL_ERROR_START;
|
||||
SERIAL_ERROR((int)e);
|
||||
SERIAL_ERRORLNPGM(" - Invalid extruder number !");
|
||||
kill(PSTR(""), 6);
|
||||
kill(NULL, 6);
|
||||
return 0.0;
|
||||
}
|
||||
#ifdef HEATER_0_USES_MAX6675
|
||||
|
|
|
@ -24,7 +24,7 @@ uint8_t tmc2130_current_h[4] = TMC2130_CURRENTS_H;
|
|||
uint8_t tmc2130_current_r[4] = TMC2130_CURRENTS_R;
|
||||
|
||||
//running currents for homing
|
||||
uint8_t tmc2130_current_r_home[4] = {8, 10, 20, 18};
|
||||
uint8_t tmc2130_current_r_home[4] = TMC2130_CURRENTS_R_HOME;
|
||||
|
||||
|
||||
//pwm_ampl
|
||||
|
@ -40,7 +40,7 @@ uint8_t tmc2130_mres[4] = {0, 0, 0, 0}; //will be filed at begin of init
|
|||
|
||||
|
||||
uint8_t tmc2130_sg_thr[4] = {TMC2130_SG_THRS_X, TMC2130_SG_THRS_Y, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E};
|
||||
uint8_t tmc2130_sg_thr_home[4] = {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E};
|
||||
uint8_t tmc2130_sg_thr_home[4] = TMC2130_SG_THRS_HOME;
|
||||
|
||||
|
||||
uint8_t tmc2130_sg_homing_axes_mask = 0x00;
|
||||
|
|
|
@ -1103,6 +1103,7 @@ void lcd_commands()
|
|||
lcd_setstatuspgm(_i("Print paused"));////MSG_PRINT_PAUSED c=20 r=1
|
||||
lcd_commands_type = LcdCommands::Idle;
|
||||
lcd_commands_step = 0;
|
||||
long_pause();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1659,9 +1660,8 @@ void lcd_return_to_status()
|
|||
//! @brief Pause print, disable nozzle heater, move to park position
|
||||
void lcd_pause_print()
|
||||
{
|
||||
lcd_return_to_status();
|
||||
stop_and_save_print_to_ram(0.0,0.0);
|
||||
long_pause();
|
||||
lcd_return_to_status();
|
||||
isPrintPaused = true;
|
||||
if (LcdCommands::Idle == lcd_commands_type)
|
||||
{
|
||||
|
@ -2285,6 +2285,9 @@ static void lcd_support_menu()
|
|||
void lcd_set_fan_check() {
|
||||
fans_check_enabled = !fans_check_enabled;
|
||||
eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED, fans_check_enabled);
|
||||
#ifdef FANCHECK
|
||||
if (fans_check_enabled == false) fan_check_error = EFCE_OK; //reset error if fanCheck is disabled during error. Allows resuming print.
|
||||
#endif //FANCHECK
|
||||
}
|
||||
|
||||
#ifdef MMU_HAS_CUTTER
|
||||
|
@ -4111,7 +4114,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||
{
|
||||
prusa_statistics_case0(15);
|
||||
}
|
||||
else if (isPrintPaused || card.paused)
|
||||
else if (isPrintPaused)
|
||||
{
|
||||
prusa_statistics_case0(14);
|
||||
}
|
||||
|
@ -6716,6 +6719,7 @@ static void lcd_test_menu()
|
|||
static bool fan_error_selftest()
|
||||
{
|
||||
#ifdef FANCHECK
|
||||
if (!fans_check_enabled) return 0;
|
||||
|
||||
fanSpeed = 255;
|
||||
#ifdef FAN_SOFT_PWM
|
||||
|
@ -6746,9 +6750,8 @@ static bool fan_error_selftest()
|
|||
return 1;
|
||||
}
|
||||
#endif
|
||||
#endif //FANCHECK
|
||||
return 0;
|
||||
|
||||
#endif //FANCHECK
|
||||
}
|
||||
|
||||
//! @brief Resume paused print
|
||||
|
|
|
@ -260,11 +260,13 @@
|
|||
#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis
|
||||
#define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis
|
||||
#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis
|
||||
#define TMC2130_SG_THRS_HOME {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E}
|
||||
|
||||
//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
|
||||
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
||||
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
||||
#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor
|
||||
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
||||
// #define TMC2130_UNLOAD_CURRENT_R 12 // lower current for M600 to protect filament sensor - Unused
|
||||
|
||||
#define TMC2130_STEALTH_Z
|
||||
|
||||
|
|
|
@ -262,11 +262,13 @@
|
|||
#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis
|
||||
#define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis
|
||||
#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis
|
||||
#define TMC2130_SG_THRS_HOME {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E}
|
||||
|
||||
//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
|
||||
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
|
||||
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
|
||||
#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor
|
||||
#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
|
||||
// #define TMC2130_UNLOAD_CURRENT_R 12 // lower current for M600 to protect filament sensor - Unused
|
||||
|
||||
#define TMC2130_STEALTH_Z
|
||||
|
||||
|
|
117
PF-build.sh
117
PF-build.sh
|
@ -56,7 +56,7 @@
|
|||
# Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
|
||||
# it will use the default Arduino IDE folders and so can corrupt the build environment.
|
||||
#
|
||||
# Version: 1.0.6-Build_9
|
||||
# Version: 1.0.6-Build_10
|
||||
# Change log:
|
||||
# 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
|
||||
# 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
|
||||
|
@ -112,7 +112,9 @@
|
|||
# Changed Hex-files folder to PF-build-hex as requested in PR
|
||||
# 23 Jul 2019, 3d-gussner, Added Finding OS version routine so supporting new OS should get easier
|
||||
# 26 Jul 2019, 3d-gussner, Change JSON repository to prusa3d after PR https://github.com/prusa3d/Arduino_Boards/pull/1 was merged
|
||||
|
||||
# 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for comming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
|
||||
# 17 Oct 2019, 3d-gussner, Changed folder and check file names to have seperated build enviroments depening on Arduino IDE version and
|
||||
# board-versions.
|
||||
#### Start check if OSTYPE is supported
|
||||
OS_FOUND=$( command -v uname)
|
||||
|
||||
|
@ -211,7 +213,8 @@ fi
|
|||
#### Set build environment
|
||||
ARDUINO_ENV="1.8.5"
|
||||
BUILD_ENV="1.0.6"
|
||||
BOARD="PrusaResearchRambo"
|
||||
BOARD="rambo"
|
||||
BOARD_PACKAGE_NAME="PrusaResearchRambo"
|
||||
BOARD_VERSION="1.0.1"
|
||||
BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json"
|
||||
BOARD_FILENAME="prusa3drambo"
|
||||
|
@ -229,6 +232,7 @@ echo ""
|
|||
echo "Ardunio IDE :" $ARDUINO_ENV
|
||||
echo "Build env :" $BUILD_ENV
|
||||
echo "Board :" $BOARD
|
||||
echo "Package name:" $BOARD_PACKAGE_NAME
|
||||
echo "Specific Lib:" $LIB
|
||||
echo ""
|
||||
|
||||
|
@ -259,12 +263,12 @@ if [ $TARGET_OS == "windows" ]; then
|
|||
wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" ]; then
|
||||
if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
|
||||
echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)"
|
||||
sleep 2
|
||||
unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7
|
||||
mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor
|
||||
echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor
|
||||
mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor
|
||||
echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
fi
|
||||
|
@ -277,55 +281,55 @@ if [ $TARGET_OS == "linux" ]; then
|
|||
wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor.txt" ]]; then
|
||||
if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
|
||||
echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)"
|
||||
sleep 2
|
||||
tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8
|
||||
mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor
|
||||
echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor.txt
|
||||
mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor
|
||||
echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
fi
|
||||
# Make Arduino IDE portable
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/
|
||||
fi
|
||||
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging
|
||||
fi
|
||||
|
||||
# Change Arduino IDE preferences
|
||||
if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt ]; then
|
||||
echo "$(tput setaf 6)Setting $TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)"
|
||||
if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then
|
||||
echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)"
|
||||
sleep 2
|
||||
echo "update.check"
|
||||
sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "board"
|
||||
sed -i 's/board = uno/board = rambo/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
sed -i 's/board = uno/board = $BOARD/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "editor.linenumbers"
|
||||
sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "boardsmanager.additional.urls"
|
||||
echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "# Preferences-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt
|
||||
echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
|
||||
echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
|
||||
|
@ -336,25 +340,26 @@ if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then
|
|||
sleep 2
|
||||
wget $BOARD_FILE_URL || exit 9
|
||||
fi
|
||||
if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
|
||||
echo "$(tput setaf 6)Unzipping $BOARD Arduino IDE portable...$(tput setaf 2)"
|
||||
if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then
|
||||
echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)"
|
||||
sleep 2
|
||||
tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware
|
||||
fi
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr
|
||||
if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then
|
||||
mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr
|
||||
fi
|
||||
|
||||
mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION
|
||||
echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION
|
||||
echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
|
||||
|
@ -365,30 +370,30 @@ if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then
|
|||
wget $PF_BUILD_FILE_URL || exit 11
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$TARGET_OS-$Processor.txt" ]; then
|
||||
if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then
|
||||
echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)"
|
||||
sleep 2
|
||||
unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 12
|
||||
echo "# PF-build-env-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$TARGET_OS-$Processor.txt
|
||||
unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12
|
||||
echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
|
||||
# Check if User updated Arduino IDE 1.8.5 boardsmanager and tools
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then
|
||||
echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$"
|
||||
echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)"
|
||||
sleep 2
|
||||
fi
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then
|
||||
echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)"
|
||||
sleep 2
|
||||
echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)"
|
||||
sleep 2
|
||||
cp -f ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn
|
||||
echo "# PF-build-env-portable-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$TARGET_OS-$Processor.txt
|
||||
cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn
|
||||
echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then
|
||||
if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then
|
||||
echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!"
|
||||
echo "Delete ../PF-build-env-$BUILD_ENV and start the script again"
|
||||
echo "Script will not continue until this have been fixed $(tput setaf 2)"
|
||||
|
@ -489,7 +494,7 @@ if [ ! -z "$3" ] ; then
|
|||
fi
|
||||
|
||||
#Set BUILD_ENV_PATH
|
||||
cd ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 24
|
||||
cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 24
|
||||
BUILD_ENV_PATH="$( pwd -P )"
|
||||
|
||||
cd ../..
|
||||
|
@ -634,8 +639,8 @@ do
|
|||
echo "Start to build Prusa Firmware ..."
|
||||
echo "Using variant $VARIANT$(tput setaf 3)"
|
||||
sleep 2
|
||||
#$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||
$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||
#$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||
$BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||
echo "$(tput sgr 0)"
|
||||
|
||||
if [ $LANGUAGES == "ALL" ]; then
|
||||
|
|
|
@ -198,7 +198,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||
SERIAL_ECHOLN("}");
|
||||
status_number = 15;
|
||||
}
|
||||
else if (isPrintPaused || card.paused)
|
||||
else if (isPrintPaused)
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(14);
|
||||
|
@ -490,7 +490,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||
{
|
||||
prusa_statistics_case0(15);
|
||||
}
|
||||
else if (isPrintPaused || card.paused)
|
||||
else if (isPrintPaused)
|
||||
{
|
||||
prusa_statistics_case0(14);
|
||||
}
|
||||
|
@ -753,7 +753,6 @@ TEST_CASE("Prusa_statistics test", "[prusa_stats]")
|
|||
SERIALS_RESET();
|
||||
|
||||
isPrintPaused = 0;
|
||||
card.paused = 0;
|
||||
IS_SD_PRINTING = 1;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
|
|
|
@ -1188,7 +1188,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
|
@ -1188,7 +1188,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
|
@ -1188,7 +1188,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
|
@ -1185,7 +1185,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
|
@ -1187,7 +1187,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
|
@ -1187,7 +1187,7 @@
|
|||
|
||||
#
|
||||
"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
|
||||
"\x00"
|
||||
"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
|
||||
|
||||
#
|
||||
"Y-correct:"
|
||||
|
|
Loading…
Reference in a new issue