Merge pull request #6201 from thinkyhead/rc_fix_broken_ubl

Fix broken auto#.g, some other regressions
This commit is contained in:
Scott Lahteine 2017-04-01 22:14:04 -05:00 committed by GitHub
commit a7aa70e79a
24 changed files with 48 additions and 75 deletions

View file

@ -36,24 +36,27 @@
#include "UBL.h" #include "UBL.h"
#include "ultralcd.h" #include "ultralcd.h"
#define EXTRUSION_MULTIPLIER 1.0 // This is too much clutter for the main Configuration.h file But #define EXTRUSION_MULTIPLIER 1.0
#define RETRACTION_MULTIPLIER 1.0 // some user have expressed an interest in being able to customize #define RETRACTION_MULTIPLIER 1.0
#define NOZZLE 0.3 // these numbers for their printer so they don't need to type all #define NOZZLE 0.3
#define FILAMENT 1.75 // the options every time they do a Mesh Validation Print. #define FILAMENT 1.75
#define LAYER_HEIGHT 0.2 #define LAYER_HEIGHT 0.2
#define PRIME_LENGTH 10.0 // So, we put these number in an easy to find and change place. #define PRIME_LENGTH 10.0
#define BED_TEMP 60.0 #define BED_TEMP 60.0
#define HOTEND_TEMP 205.0 #define HOTEND_TEMP 205.0
#define OOZE_AMOUNT 0.3 #define OOZE_AMOUNT 0.3
#define SIZE_OF_INTERSECTION_CIRCLES 5 #define SIZE_OF_INTERSECTION_CIRCLES 5
#define SIZE_OF_CROSSHAIRS 3 // crosshairs inside the circle. This number should be #define SIZE_OF_CROSSHAIRS 3
// less than SIZE_OR_INTERSECTION_CIRCLES
#if SIZE_OF_CROSSHAIRS >= SIZE_OF_INTERSECTION_CIRCLES
#error "SIZE_OF_CROSSHAIRS must be less than SIZE_OF_INTERSECTION_CIRCLES."
#endif
/** /**
* Roxy's G26 Mesh Validation Tool * G26 Mesh Validation Tool
* *
* G26 Is a Mesh Validation Tool intended to provide support for the Marlin Unified Bed Leveling System. * G26 is a Mesh Validation Tool intended to provide support for the Marlin Unified Bed Leveling System.
* In order to fully utilize and benefit from the Marlin Unified Bed Leveling System an accurate Mesh must * In order to fully utilize and benefit from the Marlin Unified Bed Leveling System an accurate Mesh must
* be defined. G29 is designed to allow the user to quickly validate the correctness of her Mesh. It will * be defined. G29 is designed to allow the user to quickly validate the correctness of her Mesh. It will
* first heat the bed and nozzle. It will then print lines and circles along the Mesh Cell boundaries and * first heat the bed and nozzle. It will then print lines and circles along the Mesh Cell boundaries and
@ -118,7 +121,7 @@
//#if ENABLED(ULTRA_LCD) //#if ENABLED(ULTRA_LCD)
extern char lcd_status_message[]; extern char lcd_status_message[];
//#endif //#endif
extern float destination[]; extern float destination[XYZE];
extern void set_destination_to_current(); extern void set_destination_to_current();
extern void set_current_to_destination(); extern void set_current_to_destination();
extern float code_value_float(); extern float code_value_float();

View file

@ -243,8 +243,8 @@ extern bool Running;
inline bool IsRunning() { return Running; } inline bool IsRunning() { return Running; }
inline bool IsStopped() { return !Running; } inline bool IsStopped() { return !Running; }
bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); //put a single ASCII command at the end of the current buffer or return false when it is full bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); // Add a single command to the end of the buffer. Return false on failure.
void enqueue_and_echo_commands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash void enqueue_and_echo_commands_P(const char * const cmd); // Set one or more commands to be prioritized over the next Serial/SD command.
void clear_command_queue(); void clear_command_queue();
extern millis_t previous_cmd_ms; extern millis_t previous_cmd_ms;

View file

@ -795,39 +795,6 @@ inline void echo_command(const char* cmd) {
SERIAL_EOL; SERIAL_EOL;
} }
/**
* Shove a command in RAM to the front of the main command queue.
* Return true if the command is successfully added.
*/
inline bool _shovecommand(const char* cmd, bool say_ok=false) {
if (*cmd == ';' || commands_in_queue >= BUFSIZE) return false;
cmd_queue_index_r = (cmd_queue_index_r + BUFSIZE - 1) % BUFSIZE; // Index of the previous slot
commands_in_queue++;
strcpy(command_queue[cmd_queue_index_r], cmd);
send_ok[cmd_queue_index_r] = say_ok;
return true;
}
/**
* Shove a command to the front of the queue with Serial Echo
* Return true if the command is successfully added.
*/
bool shove_and_echo_command(const char* cmd, bool say_ok=false) {
if (_shovecommand(cmd, say_ok)) {
echo_command(cmd);
return true;
}
return false;
}
/**
* Shove a command onto the front of the queue,
* and don't return until successful.
*/
void shove_and_echo_command_now(const char* cmd) {
while (!shove_and_echo_command(cmd)) idle();
}
/** /**
* Inject the next "immediate" command, when possible, onto the front of the queue. * Inject the next "immediate" command, when possible, onto the front of the queue.
* Return true if any immediate commands remain to inject. * Return true if any immediate commands remain to inject.
@ -840,7 +807,7 @@ static bool drain_injected_commands_P() {
cmd[sizeof(cmd) - 1] = '\0'; cmd[sizeof(cmd) - 1] = '\0';
while ((c = cmd[i]) && c != '\n') i++; // find the end of this gcode command while ((c = cmd[i]) && c != '\n') i++; // find the end of this gcode command
cmd[i] = '\0'; cmd[i] = '\0';
if (shove_and_echo_command(cmd)) // success? if (enqueue_and_echo_command(cmd)) // success?
injected_commands_P = c ? injected_commands_P + i + 1 : NULL; // next command or done injected_commands_P = c ? injected_commands_P + i + 1 : NULL; // next command or done
} }
return (injected_commands_P != NULL); // return whether any more remain return (injected_commands_P != NULL); // return whether any more remain

View file

@ -150,6 +150,8 @@
#error "ABL_GRID_POINTS is now ABL_GRID_MAX_POINTS_X and ABL_GRID_MAX_POINTS_Y. Please update your configuration." #error "ABL_GRID_POINTS is now ABL_GRID_MAX_POINTS_X and ABL_GRID_MAX_POINTS_Y. Please update your configuration."
#elif defined(ABL_GRID_POINTS_X) || defined(ABL_GRID_POINTS_Y) #elif defined(ABL_GRID_POINTS_X) || defined(ABL_GRID_POINTS_Y)
#error "ABL_GRID_POINTS_[XY] is now ABL_GRID_MAX_POINTS_[XY]. Please update your configuration." #error "ABL_GRID_POINTS_[XY] is now ABL_GRID_MAX_POINTS_[XY]. Please update your configuration."
#elif defined(UBL_MESH_EDIT_ENABLED)
#error "UBL_MESH_EDIT_ENABLED is now UBL_G26_MESH_EDITING. Please update your configuration."
#elif defined(BEEPER) #elif defined(BEEPER)
#error "BEEPER is now BEEPER_PIN. Please update your pins definitions." #error "BEEPER is now BEEPER_PIN. Please update your pins definitions."
#elif defined(SDCARDDETECT) #elif defined(SDCARDDETECT)

View file

@ -22,7 +22,7 @@
#include "MarlinConfig.h" #include "MarlinConfig.h"
#if ENABLED(AUTO_BED_LEVELING_UBL) && ENABLED(UBL_G26_MESH_EDITING) #if ENABLED(AUTO_BED_LEVELING_UBL)
//#include "vector_3.h" //#include "vector_3.h"
//#include "qr_solve.h" //#include "qr_solve.h"
@ -1048,7 +1048,7 @@
/* /*
if (code_seen('M')) { // Check if a map type was specified if (code_seen('M')) { // Check if a map type was specified
map_type = code_has_value() ? code_value_int() : 0; map_type = code_has_value() ? code_value_int() : 0;
if (!WITHIN(map_type, 0, 1)) { if (!WITHIN(map_type, 0, 1)) {
SERIAL_PROTOCOLLNPGM("Invalid map type.\n"); SERIAL_PROTOCOLLNPGM("Invalid map type.\n");
return UBL_ERR; return UBL_ERR;
@ -1371,7 +1371,7 @@
do_blocking_move_to_xy(LOGICAL_X_POSITION(rawx), LOGICAL_Y_POSITION(rawy)); do_blocking_move_to_xy(LOGICAL_X_POSITION(rawx), LOGICAL_Y_POSITION(rawy));
float new_z = ubl.z_values[location.x_index][location.y_index]; float new_z = ubl.z_values[location.x_index][location.y_index];
round_off = (int32_t)(new_z * 1000.0); // we chop off the last digits just to be clean. We are rounding to the round_off = (int32_t)(new_z * 1000.0); // we chop off the last digits just to be clean. We are rounding to the
new_z = float(round_off) / 1000.0; new_z = float(round_off) / 1000.0;

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1017,7 +1017,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1047,7 +1047,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1042,7 +1042,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -918,7 +918,7 @@
#define UBL_PROBE_PT_2_Y 20 #define UBL_PROBE_PT_2_Y 20
#define UBL_PROBE_PT_3_X 180 #define UBL_PROBE_PT_3_X 180
#define UBL_PROBE_PT_3_Y 20 #define UBL_PROBE_PT_3_Y 20
#define UBL_MESH_EDIT_ENABLED // Enable G26 mesh editing #define UBL_G26_MESH_EDITING // Enable G26 mesh editing
#elif ENABLED(MESH_BED_LEVELING) #elif ENABLED(MESH_BED_LEVELING)

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1039,7 +1039,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1036,7 +1036,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1036,7 +1036,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1041,7 +1041,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1036,7 +1036,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1034,7 +1034,7 @@
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
/** /**
* Add M43 command for pins info and testing * Add M43, M44 and M45 commands for pins info and testing
*/ */
//#define PINS_DEBUGGING //#define PINS_DEBUGGING

View file

@ -1141,16 +1141,16 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
// Limit acceleration per axis // Limit acceleration per axis
if (block->step_event_count <= cutoff_long) { if (block->step_event_count <= cutoff_long) {
LIMIT_ACCEL_LONG(X_AXIS,0); LIMIT_ACCEL_LONG(X_AXIS, 0);
LIMIT_ACCEL_LONG(Y_AXIS,0); LIMIT_ACCEL_LONG(Y_AXIS, 0);
LIMIT_ACCEL_LONG(Z_AXIS,0); LIMIT_ACCEL_LONG(Z_AXIS, 0);
LIMIT_ACCEL_LONG(E_AXIS,ACCEL_IDX); LIMIT_ACCEL_LONG(E_AXIS, ACCEL_IDX);
} }
else { else {
LIMIT_ACCEL_FLOAT(X_AXIS,0); LIMIT_ACCEL_FLOAT(X_AXIS, 0);
LIMIT_ACCEL_FLOAT(Y_AXIS,0); LIMIT_ACCEL_FLOAT(Y_AXIS, 0);
LIMIT_ACCEL_FLOAT(Z_AXIS,0); LIMIT_ACCEL_FLOAT(Z_AXIS, 0);
LIMIT_ACCEL_FLOAT(E_AXIS,ACCEL_IDX); LIMIT_ACCEL_FLOAT(E_AXIS, ACCEL_IDX);
} }
} }
block->acceleration_steps_per_s2 = accel; block->acceleration_steps_per_s2 = accel;
@ -1256,6 +1256,7 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
v_exit *= v_factor; v_exit *= v_factor;
v_entry *= v_factor; v_entry *= v_factor;
} }
// Calculate jerk depending on whether the axis is coasting in the same direction or reversing. // Calculate jerk depending on whether the axis is coasting in the same direction or reversing.
const float jerk = (v_exit > v_entry) const float jerk = (v_exit > v_entry)
? // coasting axis reversal ? // coasting axis reversal