Merge branch 'MK3-Hyperfine' into MK3-private_build

Fixed merging
This commit is contained in:
3d-gussner 2018-02-03 07:33:34 +01:00
commit e3b4015ddc
9 changed files with 295 additions and 14554 deletions

View File

@ -120,6 +120,13 @@
#define EEPROM_FSENS_AUTOLOAD_ENABLED (EEPROM_SECOND_SERIAL_ACTIVE - 1)
// Hyperfine Bed Tuning
#define EEPROM_BED_CORRECTION_FRONT_LEFT (EEPROM_FSENS_AUTOLOAD_ENABLED - 1)
#define EEPROM_BED_CORRECTION_FRONT_RIGHT (EEPROM_BED_CORRECTION_FRONT_LEFT - 1)
#define EEPROM_BED_CORRECTION_REAR_RIGHT (EEPROM_BED_CORRECTION_FRONT_RIGHT - 1)
#define EEPROM_BED_CORRECTION_REAR_LEFT (EEPROM_BED_CORRECTION_REAR_RIGHT - 1)
// End Hyperfine Bed Tuning
//TMC2130 configuration
#define EEPROM_TMC_AXIS_SIZE //axis configuration block size
#define EEPROM_TMC_X (EEPROM_TMC + 0 * EEPROM_TMC_AXIS_SIZE) //X axis configuration blok
@ -166,7 +173,8 @@
//#define STRING_VERSION "1.0.2"
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_CONFIG_H_AUTHOR "(3d-gussner,HP)" // Who made the changes.
// H = Hyperfine ; P = P.I.N.D.A.v2 fix by TheZeroBeast
// SERIAL_PORT selects which serial port should be used for communication with the host.
// This allows the connection of wireless adapters (for instance) to non-default port pins.

View File

@ -371,10 +371,10 @@ void dcode_8()
if (code_seen('P')) // Pinda temperature [C]
temp_pinda = code_value();
offset_z = temp_compensation_pinda_thermistor_offset(temp_pinda);
/*if (code_seen('Z')) // Z Offset [mm]
if (code_seen('Z')) // Z Offset [mm]
{
offset_z = code_value();
}*/
}
}
printf_P(PSTR("temp_pinda=%d offset_z=%d.%03d\n"), (int)temp_pinda, (int)offset_z, ((int)(1000 * offset_z) % 1000));
}

File diff suppressed because it is too large Load Diff

View File

@ -3649,55 +3649,135 @@ void process_commands()
}
#endif // SUPPORT_VERBOSITY
for (uint8_t i = 0; i < 4; ++i) {
unsigned char codes[4] = { 'L', 'R', 'F', 'B' };
// Hyperfine Bed Tuning
for (uint8_t i = 0; i < 8; ++i) {
unsigned char codes[8] = { 'a', 'b', 'c', 'd' , 'e' , 'f', 'g', 'h'};
long correction = 0;
if (code_seen(codes[i]))
correction = code_value_long();
else if (eeprom_bed_correction_valid) {
unsigned char *addr = (i < 2) ?
((i == 0) ? (unsigned char*)EEPROM_BED_CORRECTION_LEFT : (unsigned char*)EEPROM_BED_CORRECTION_RIGHT) :
((i == 2) ? (unsigned char*)EEPROM_BED_CORRECTION_FRONT : (unsigned char*)EEPROM_BED_CORRECTION_REAR);
correction = eeprom_read_int8(addr);
switch (i) {
case 0:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_FRONT_LEFT;
correction = eeprom_read_int8(addr);
}
break;
case 1:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_FRONT;
correction = eeprom_read_int8(addr);
}
break;
case 2:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_FRONT_RIGHT;
correction = eeprom_read_int8(addr);
}
break;
case 3:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_RIGHT;
correction = eeprom_read_int8(addr);
}
break;
case 4:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_REAR_RIGHT;
correction = eeprom_read_int8(addr);
}
break;
case 5:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_REAR;
correction = eeprom_read_int8(addr);
}
break;
case 6:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_REAR_LEFT;
correction = eeprom_read_int8(addr);
}
break;
case 7:
{unsigned char *addr = (unsigned char*)EEPROM_BED_CORRECTION_LEFT;
correction = eeprom_read_int8(addr);
}
break;
}
if (correction == 0)
continue;
}
if (correction == 0)
continue;
float offset = float(correction) * 0.001f;
if (fabs(offset) > 0.101f) {
if (fabs(offset) > 0.201f) {
SERIAL_ERROR_START;
SERIAL_ECHOPGM("Excessive bed leveling correction: ");
SERIAL_ECHO(offset);
SERIAL_ECHOLNPGM(" microns");
}
else {
switch (i) {
case 0:
for (uint8_t row = 0; row < 3; ++row) {
mbl.z_values[row][1] += 0.5f * offset;
mbl.z_values[row][0] += offset;
}
break;
case 1:
for (uint8_t row = 0; row < 3; ++row) {
mbl.z_values[row][1] += 0.5f * offset;
mbl.z_values[row][2] += offset;
}
break;
case 2:
for (uint8_t col = 0; col < 3; ++col) {
mbl.z_values[1][col] += 0.5f * offset;
mbl.z_values[0][col] += offset;
}
break;
case 3:
for (uint8_t col = 0; col < 3; ++col) {
mbl.z_values[1][col] += 0.5f * offset;
mbl.z_values[2][col] += offset;
}
break;
switch (i) {
case 0:
{
mbl.z_values[0][0] += offset;
SERIAL_ECHOPGM("FrontLeft a =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 1:
{
mbl.z_values[0][1] += offset;
SERIAL_ECHOPGM("FrontCentr b =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 2:
{
mbl.z_values[0][2] += offset;
SERIAL_ECHOPGM("FrontRight c =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 3:
{
mbl.z_values[1][2] += offset;
SERIAL_ECHOPGM("MidRight d =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 4:
{
mbl.z_values[2][2] += offset;
SERIAL_ECHOPGM("RearRight e =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 5:
{
mbl.z_values[2][1] += offset;
SERIAL_ECHOPGM("RearCentr f =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 6:
{
mbl.z_values[2][0] += offset;
SERIAL_ECHOPGM("RearLeft g =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
case 7:
{
mbl.z_values[1][0] += offset;
SERIAL_ECHOPGM("MidLeft h =");
SERIAL_ECHO(correction+0);
SERIAL_ECHOLNPGM(" microns.");
}
break;
}
}
}
// End Hyperfine Bed Tuning
// 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)
// SERIAL_ECHOLNPGM("Upsample finished");
@ -7319,6 +7399,7 @@ float temp_comp_interpolation(float inp_temperature) {
shift[0] = 0;
for (i = 0; i < n; i++) {
if (i>0) EEPROM_read_B(EEPROM_PROBE_TEMP_SHIFT + (i-1) * 2, &shift[i]); //read shift in steps from EEPROM
temp_C[i] = 50 + i * 10; //temperature in C
#ifdef PINDA_THERMISTOR
temp_C[i] = 35 + i * 7; //temperature in C
#else

View File

@ -199,7 +199,7 @@ print $fh <<END
#define LANG_ID_UNDEFINED 255
// Default language ID, if no language is selected.
#define LANG_ID_DEFAULT LANG_ID_CZ
#define LANG_ID_DEFAULT LANG_ID_EN
// Number of languages available in the language table.
#define LANG_NUM ${num_languages}

View File

@ -116,6 +116,21 @@ const char * const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_BED_CORRECTION_FRONT_CZ
};
const char MSG_BED_CORRECTION_FRONT_CENTR_EN[] PROGMEM = "Fr.Centr b[um]";
const char * const MSG_BED_CORRECTION_FRONT_CENTR_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_FRONT_CENTR_EN
};
const char MSG_BED_CORRECTION_FRONT_LEFT_EN[] PROGMEM = "Fr.Left a[um]";
const char * const MSG_BED_CORRECTION_FRONT_LEFT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_FRONT_LEFT_EN
};
const char MSG_BED_CORRECTION_FRONT_RIGHT_EN[] PROGMEM = "Fr.Right c[um]";
const char * const MSG_BED_CORRECTION_FRONT_RIGHT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_FRONT_RIGHT_EN
};
const char MSG_BED_CORRECTION_LEFT_EN[] PROGMEM = "Left side [um]";
const char MSG_BED_CORRECTION_LEFT_CZ[] PROGMEM = "Vlevo [um]";
const char * const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -130,6 +145,16 @@ const char * const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_BED_CORRECTION_MENU_CZ
};
const char MSG_BED_CORRECTION_MID_LEFT_EN[] PROGMEM = "Mi.Left h[um]";
const char * const MSG_BED_CORRECTION_MID_LEFT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_MID_LEFT_EN
};
const char MSG_BED_CORRECTION_MID_RIGHT_EN[] PROGMEM = "Mi.Right d[um]";
const char * const MSG_BED_CORRECTION_MID_RIGHT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_MID_RIGHT_EN
};
const char MSG_BED_CORRECTION_REAR_EN[] PROGMEM = "Rear side [um]";
const char MSG_BED_CORRECTION_REAR_CZ[] PROGMEM = "Vzadu [um]";
const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = {
@ -137,6 +162,21 @@ const char * const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_BED_CORRECTION_REAR_CZ
};
const char MSG_BED_CORRECTION_REAR_CENTR_EN[] PROGMEM = "Re.Centr f[um]";
const char * const MSG_BED_CORRECTION_REAR_CENTR_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_REAR_CENTR_EN
};
const char MSG_BED_CORRECTION_REAR_LEFT_EN[] PROGMEM = "Re.Left g[um]";
const char * const MSG_BED_CORRECTION_REAR_LEFT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_REAR_LEFT_EN
};
const char MSG_BED_CORRECTION_REAR_RIGHT_EN[] PROGMEM = "Re.Right e[um]";
const char * const MSG_BED_CORRECTION_REAR_RIGHT_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_REAR_RIGHT_EN
};
const char MSG_BED_CORRECTION_RESET_EN[] PROGMEM = "Reset";
const char * const MSG_BED_CORRECTION_RESET_LANG_TABLE[1] PROGMEM = {
MSG_BED_CORRECTION_RESET_EN

View File

@ -11,7 +11,7 @@
#define LANG_ID_UNDEFINED 255
// Default language ID, if no language is selected.
#define LANG_ID_DEFAULT LANG_ID_CZ
#define LANG_ID_DEFAULT LANG_ID_EN
// Number of languages available in the language table.
#define LANG_NUM 2
@ -60,12 +60,28 @@ extern const char* const MSG_BED_LANG_TABLE[1];
#define MSG_BED LANG_TABLE_SELECT_EXPLICIT(MSG_BED_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_FRONT_LANG_TABLE[LANG_NUM];
#define MSG_BED_CORRECTION_FRONT LANG_TABLE_SELECT(MSG_BED_CORRECTION_FRONT_LANG_TABLE)
extern const char* const MSG_BED_CORRECTION_FRONT_CENTR_LANG_TABLE[1];
#define MSG_BED_CORRECTION_FRONT_CENTR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_FRONT_CENTR_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_FRONT_LEFT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_FRONT_LEFT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_FRONT_LEFT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_FRONT_RIGHT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_FRONT_RIGHT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_FRONT_RIGHT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_LEFT_LANG_TABLE[LANG_NUM];
#define MSG_BED_CORRECTION_LEFT LANG_TABLE_SELECT(MSG_BED_CORRECTION_LEFT_LANG_TABLE)
extern const char* const MSG_BED_CORRECTION_MENU_LANG_TABLE[LANG_NUM];
#define MSG_BED_CORRECTION_MENU LANG_TABLE_SELECT(MSG_BED_CORRECTION_MENU_LANG_TABLE)
extern const char* const MSG_BED_CORRECTION_MID_LEFT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_MID_LEFT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_MID_LEFT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_MID_RIGHT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_MID_RIGHT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_MID_RIGHT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_REAR_LANG_TABLE[LANG_NUM];
#define MSG_BED_CORRECTION_REAR LANG_TABLE_SELECT(MSG_BED_CORRECTION_REAR_LANG_TABLE)
extern const char* const MSG_BED_CORRECTION_REAR_CENTR_LANG_TABLE[1];
#define MSG_BED_CORRECTION_REAR_CENTR LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_REAR_CENTR_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_REAR_LEFT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_REAR_LEFT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_REAR_LEFT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_REAR_RIGHT_LANG_TABLE[1];
#define MSG_BED_CORRECTION_REAR_RIGHT LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_REAR_RIGHT_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_RESET_LANG_TABLE[1];
#define MSG_BED_CORRECTION_RESET LANG_TABLE_SELECT_EXPLICIT(MSG_BED_CORRECTION_RESET_LANG_TABLE, 0)
extern const char* const MSG_BED_CORRECTION_RIGHT_LANG_TABLE[LANG_NUM];

View File

@ -275,10 +275,23 @@
#define(length=20, lines=8) MSG_PAPER "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
#define MSG_BED_CORRECTION_MENU "Bed level correct"
/* Stock Bed correction
#define(length=14,lines=1) MSG_BED_CORRECTION_LEFT "Left side [um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_RIGHT "Right side[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT "Front side[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_REAR "Rear side [um]"
*/
// Hyperfine Bed Tuning
#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT_LEFT "Fr.Left a[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT_CENTR "Fr.Centr b[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_FRONT_RIGHT "Fr.Right c[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_MID_RIGHT "Mi.Right d[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_REAR_RIGHT "Re.Right e[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_REAR_CENTR "Re.Centr f[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_REAR_LEFT "Re.Left g[um]"
#define(length=14,lines=1) MSG_BED_CORRECTION_MID_LEFT "Mi.Left h[um]"
// end Hyperfine Bed Tuning
#define MSG_BED_CORRECTION_RESET "Reset"
#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling"

View File

@ -73,6 +73,7 @@ union MenuData
char ip_str[3*4+3+1];
} supportMenu;
// Hyperfine Bed Tuning
struct AdjustBed
{
// 6+13+16=35B
@ -80,16 +81,25 @@ union MenuData
// the return menu and encoder state.
struct EditMenuParentState editMenuParentState;
int8_t status;
int8_t left;
int8_t right;
int8_t front;
int8_t rear;
int left2;
int right2;
int front2;
int rear2;
int8_t front_left;
int8_t front_centr;
int8_t front_right;
int8_t mid_right;
int8_t rear_right;
int8_t rear_centr;
int8_t rear_left;
int8_t mid_left;
int front_left2;
int front_centr2;
int front_right2;
int mid_right2;
int rear_right2;
int rear_centr2;
int rear_left2;
int mid_left2;
} adjustBed;
// End Hyperfine bed Tuning
// editMenuParentState is used when an edit menu is entered, so it knows
// the return menu and encoder state.
struct EditMenuParentState editMenuParentState;
@ -1703,7 +1713,10 @@ static void lcd_support_menu()
MENU_ITEM(back, PSTR("------------"), lcd_main_menu);
MENU_ITEM(back, MSG_DATE, lcd_main_menu);
MENU_ITEM(back, PSTR(__DATE__), lcd_main_menu);
MENU_ITEM(back, PSTR(__TIME__), lcd_main_menu);
MENU_ITEM(back, PSTR(STRING_CONFIG_H_AUTHOR), lcd_main_menu);
// Show the FlashAir IP address, if the card is available.
if (menuData.supportMenu.is_flash_air) {
MENU_ITEM(back, PSTR("------------"), lcd_main_menu);
@ -2301,13 +2314,18 @@ static void lcd_babystep_z() {
static void lcd_adjust_bed();
// Hyperfine Bed Tuning
static void lcd_adjust_bed_reset()
{
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_LEFT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT, 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT_LEFT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR_LEFT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_LEFT , 0);
lcd_goto_menu(lcd_adjust_bed, 0, false);
// Because we did not leave the menu, the menuData did not reset.
// Force refresh of the bed leveling data.
@ -2315,17 +2333,24 @@ static void lcd_adjust_bed_reset()
}
void adjust_bed_reset() {
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_LEFT, 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT, 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR, 0);
menuData.adjustBed.left = menuData.adjustBed.left2 = 0;
menuData.adjustBed.right = menuData.adjustBed.right2 = 0;
menuData.adjustBed.front = menuData.adjustBed.front2 = 0;
menuData.adjustBed.rear = menuData.adjustBed.rear2 = 0;
}
#define BED_ADJUSTMENT_UM_MAX 50
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT_LEFT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_FRONT_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR_RIGHT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_REAR_LEFT , 0);
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_LEFT , 0);
menuData.adjustBed.front_left = menuData.adjustBed.front_left2 = 0;
menuData.adjustBed.front_centr = menuData.adjustBed.front_centr2 = 0;
menuData.adjustBed.front_right = menuData.adjustBed.front_right2 = 0;
menuData.adjustBed.mid_right = menuData.adjustBed.mid_right2 = 0;
menuData.adjustBed.rear_right = menuData.adjustBed.rear_right2 = 0;
menuData.adjustBed.rear_centr = menuData.adjustBed.rear_centr2 = 0;
menuData.adjustBed.rear_left = menuData.adjustBed.rear_left2 = 0;
menuData.adjustBed.mid_left = menuData.adjustBed.mid_left2 = 0;}
#define BED_ADJUSTMENT_UM_MAX 99
static void lcd_adjust_bed()
{
@ -2334,45 +2359,69 @@ static void lcd_adjust_bed()
// Initialize its status.
menuData.adjustBed.status = 1;
bool valid = false;
menuData.adjustBed.left = menuData.adjustBed.left2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT);
menuData.adjustBed.right = menuData.adjustBed.right2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT);
menuData.adjustBed.front = menuData.adjustBed.front2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT);
menuData.adjustBed.rear = menuData.adjustBed.rear2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR);
menuData.adjustBed.front_left = menuData.adjustBed.front_left2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT_LEFT);
menuData.adjustBed.front_centr = menuData.adjustBed.front_centr2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT);
menuData.adjustBed.front_right = menuData.adjustBed.front_right2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT_RIGHT);
menuData.adjustBed.mid_right = menuData.adjustBed.mid_right2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT);
menuData.adjustBed.rear_right = menuData.adjustBed.rear_right2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR_RIGHT);
menuData.adjustBed.rear_centr = menuData.adjustBed.rear_centr2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR);
menuData.adjustBed.rear_left = menuData.adjustBed.rear_left2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR_LEFT);
menuData.adjustBed.mid_left = menuData.adjustBed.mid_left2 = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT);
if (eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1 &&
menuData.adjustBed.left >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.left <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.right >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.right <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.front >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.front <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.rear >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.rear <= BED_ADJUSTMENT_UM_MAX)
menuData.adjustBed.front_left >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.front_left <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.front_centr >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.front_centr <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.front_right >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.front_right <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.mid_right >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.mid_right <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.rear_right >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.rear_right <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.rear_centr >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.rear_centr <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.rear_left >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.rear_left <= BED_ADJUSTMENT_UM_MAX &&
menuData.adjustBed.mid_left >= -BED_ADJUSTMENT_UM_MAX && menuData.adjustBed.mid_left <= BED_ADJUSTMENT_UM_MAX)
valid = true;
if (! valid) {
// Reset the values: simulate an edit.
menuData.adjustBed.left2 = 0;
menuData.adjustBed.right2 = 0;
menuData.adjustBed.front2 = 0;
menuData.adjustBed.rear2 = 0;
menuData.adjustBed.front_left2 = 0;
menuData.adjustBed.front_centr2 = 0;
menuData.adjustBed.front_right2 = 0;
menuData.adjustBed.mid_right2 = 0;
menuData.adjustBed.rear_right2 = 0;
menuData.adjustBed.rear_centr2 = 0;
menuData.adjustBed.rear_left2 = 0;
menuData.adjustBed.mid_left2 = 0;
}
lcdDrawUpdate = 1;
eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1);
}
if (menuData.adjustBed.left != menuData.adjustBed.left2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT, menuData.adjustBed.left = menuData.adjustBed.left2);
if (menuData.adjustBed.right != menuData.adjustBed.right2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, menuData.adjustBed.right = menuData.adjustBed.right2);
if (menuData.adjustBed.front != menuData.adjustBed.front2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT, menuData.adjustBed.front = menuData.adjustBed.front2);
if (menuData.adjustBed.rear != menuData.adjustBed.rear2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, menuData.adjustBed.rear = menuData.adjustBed.rear2);
if (menuData.adjustBed.front_left != menuData.adjustBed.front_left2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT_LEFT, menuData.adjustBed.front_left = menuData.adjustBed.front_left2);
if (menuData.adjustBed.front_centr != menuData.adjustBed.front_centr2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT, menuData.adjustBed.front_centr = menuData.adjustBed.front_centr2);
if (menuData.adjustBed.front_right != menuData.adjustBed.front_right2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT_RIGHT, menuData.adjustBed.front_right = menuData.adjustBed.front_right2);
if (menuData.adjustBed.mid_right != menuData.adjustBed.mid_right2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, menuData.adjustBed.mid_right = menuData.adjustBed.mid_right2);
if (menuData.adjustBed.rear_right != menuData.adjustBed.rear_right2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR_RIGHT, menuData.adjustBed.rear_right = menuData.adjustBed.rear_right2);
if (menuData.adjustBed.rear_centr != menuData.adjustBed.rear_centr2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, menuData.adjustBed.rear_centr = menuData.adjustBed.rear_centr2);
if (menuData.adjustBed.rear_left != menuData.adjustBed.rear_left2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR_LEFT, menuData.adjustBed.rear_left = menuData.adjustBed.rear_left2);
if (menuData.adjustBed.mid_left != menuData.adjustBed.mid_left2)
eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT, menuData.adjustBed.mid_left = menuData.adjustBed.mid_left2);
START_MENU();
MENU_ITEM(back, MSG_SETTINGS, lcd_calibration_menu);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_LEFT, &menuData.adjustBed.left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_RIGHT, &menuData.adjustBed.right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_FRONT, &menuData.adjustBed.front2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_REAR, &menuData.adjustBed.rear2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM(function, MSG_BED_CORRECTION_RESET, lcd_adjust_bed_reset);
MENU_ITEM(back, MSG_SETTINGS, lcd_calibration_menu);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_FRONT_LEFT, &menuData.adjustBed.front_left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_FRONT_CENTR, &menuData.adjustBed.front_centr2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_FRONT_RIGHT, &menuData.adjustBed.front_right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_MID_RIGHT, &menuData.adjustBed.mid_right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_REAR_RIGHT, &menuData.adjustBed.rear_right2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_REAR_CENTR, &menuData.adjustBed.rear_centr2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_REAR_LEFT, &menuData.adjustBed.rear_left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
MENU_ITEM_EDIT(int3, MSG_BED_CORRECTION_MID_LEFT, &menuData.adjustBed.mid_left2, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);
END_MENU();
}
// End Hyperfine Bed Tuning
void pid_extruder() {