From 58e54f6746f3ed4fe10f7fd36bda8fb22785758c Mon Sep 17 00:00:00 2001 From: InsanityAutomation Date: Thu, 4 Nov 2021 17:25:36 -0400 Subject: [PATCH] Ender 7 tuning, sermoon fixes, jyersui fixes, finish jerk/accel dwin --- Marlin/Configuration.h | 9 +- Marlin/Configuration_adv.h | 13 ++- Marlin/src/feature/pause.cpp | 2 +- Marlin/src/lcd/e3v2/jyersui/dwin.cpp | 8 +- .../src/lcd/extui/Creality/Creality_DWIN.cpp | 91 +++++++++++++------ 5 files changed, 80 insertions(+), 43 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f511523b82..aa5ee5a4e3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2166,7 +2166,7 @@ #define NOZZLE_TO_PROBE_OFFSET { -27.625, 0.0, 0 } #endif #endif -#elif EITHER(MachineCRXPro, MachineEnder3Max) && ALL(HotendStock, ABL_BLTOUCH) +#elif ANY(MachineCRXPro, MachineEnder3Max, MachineSermoonD1, MachineEnder7) && ALL(HotendStock, ABL_BLTOUCH) #define NOZZLE_TO_PROBE_OFFSET { 48, 3, 0 } #elif ANY(MachineCR6, MachineCR6Max) #define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0.2 } @@ -2589,8 +2589,8 @@ #define X_BED_SIZE 250 #define Y_BED_SIZE 250 #define Z_MAX_POS 350 - #define X_MAX_POS 260 - #define Y_MAX_POS 260 + #define X_MAX_POS 255 + #define Y_MAX_POS 255 #define ClipClearance 10 #elif ENABLED(MachineCR30) #define X_BED_SIZE 220 @@ -2679,9 +2679,6 @@ #elif ENABLED(MachineCR6) #define X_MIN_POS -5 #define Y_MIN_POS -2 -#elif ANY(MachineSermoonD1, MachineEnder7) - #define X_MIN_POS -10 - #define Y_MIN_POS -10 #elif ENABLED(MachineCR6Max) #define X_MIN_POS -10 #define Y_MIN_POS -3 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index bf9414fc5d..111f67d963 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1048,7 +1048,7 @@ #define SLOWDOWN #if ENABLED(SLOWDOWN) #if ENABLED(MachineLargeROM) - #define SLOWDOWN_DIVISOR 4 + #define SLOWDOWN_DIVISOR 8 #else #define SLOWDOWN_DIVISOR 2 #endif @@ -2210,9 +2210,12 @@ * * Override the default value based on the driver type set in Configuration.h. */ -//#define MINIMUM_STEPPER_POST_DIR_DELAY 650 -//#define MINIMUM_STEPPER_PRE_DIR_DELAY 650 - +#if ENABLED(MachineEnder7) + #define MINIMUM_STEPPER_POST_DIR_DELAY 10 + #define MINIMUM_STEPPER_PRE_DIR_DELAY 10 + #define MINIMUM_STEPPER_PULSE 0 + #define MAXIMUM_STEPPER_RATE 5000000 +#endif /** * Minimum stepper driver pulse width (in µs) * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers @@ -2254,7 +2257,7 @@ // The number of linear moves that can be in the planner at once. // The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g. 8, 16, 32) #if ENABLED(MachineLargeROM) || DISABLED(EXTENSIBLE_UI) - #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_SIZE 32 #else #define BLOCK_BUFFER_SIZE 8 #endif diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp index d18c1d20c0..b6c370a876 100644 --- a/Marlin/src/feature/pause.cpp +++ b/Marlin/src/feature/pause.cpp @@ -278,7 +278,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load // Show "Purge More" / "Resume" menu and wait for reply KEEPALIVE_STATE(PAUSED_FOR_USER); wait_for_user = false; - #if EITHER(HAS_LCD_MENU, DWIN_CREALITY_LCD_ENHANCED) + #if ANY(HAS_LCD_MENU, DWIN_CREALITY_LCD_ENHANCED, DWIN_CREALITY_LCD_JYERSUI) ui.pause_show_message(PAUSE_MESSAGE_OPTION); // Also sets PAUSE_RESPONSE_WAIT_FOR #else pause_menu_response = PAUSE_RESPONSE_WAIT_FOR; diff --git a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp index 6d0e73bafc..a0cd3f30a4 100644 --- a/Marlin/src/lcd/e3v2/jyersui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/jyersui/dwin.cpp @@ -4629,7 +4629,7 @@ void CrealityDWINClass::Popup_Control() { case PurgeMore: if (selection == 0) { pause_menu_response = PAUSE_RESPONSE_EXTRUDE_MORE; - Popup_Handler(FilChange); + Popup_Handler(FilInsert); } else { pause_menu_response = PAUSE_RESPONSE_RESUME_PRINT; @@ -5043,7 +5043,7 @@ void MarlinUI::init() { Encoder_Configuration(); for (uint16_t t = 0; t <= 100; t += 2) { DWIN_ICON_Show(ICON, ICON_Bar, 15, 450); - DWIN_Draw_Rectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 260, 257, 280); + DWIN_Draw_Rectangle(1, Color_Bg_Black, 15 + t * 242 / 100, 450, 257, 470); DWIN_UpdateLCD(); delay(20); } @@ -5059,7 +5059,9 @@ void MarlinUI::init() { case PAUSE_MESSAGE_PURGE: CrealityDWIN.Popup_Handler(PurgeMore); break; case PAUSE_MESSAGE_HEAT: CrealityDWIN.Confirm_Handler(HeaterTime); break; case PAUSE_MESSAGE_WAITING: CrealityDWIN.Draw_Print_Screen(); break; - default: break; + default: + SERIAL_ECHOLNPGM("PauseState: ", PAUSE_MESSAGE_WAITING); + break; } } #endif diff --git a/Marlin/src/lcd/extui/Creality/Creality_DWIN.cpp b/Marlin/src/lcd/extui/Creality/Creality_DWIN.cpp index fccce8a12d..ad167ab59b 100644 --- a/Marlin/src/lcd/extui/Creality/Creality_DWIN.cpp +++ b/Marlin/src/lcd/extui/Creality/Creality_DWIN.cpp @@ -66,6 +66,8 @@ namespace ExtUI bool AutohomeKey = false; unsigned char AutoHomeIconNum; + uint8_t lastPauseMsgState = 0; + creality_dwin_settings_t Settings; uint8_t dwin_settings_version = 1; @@ -155,6 +157,10 @@ void onIdle() { if (reEntryPrevent) return; + + if (rtscheck.RTS_RecData() > 0 && (rtscheck.recdat.data[0]!=0 || rtscheck.recdat.addr!=0)) + rtscheck.RTS_HandleData(); + if(idleThrottling++ < 750){ return; } @@ -165,7 +171,7 @@ void onIdle() rtscheck.RTS_SndData(getTargetTemp_celsius(H0), NozzlePreheat); rtscheck.RTS_SndData(getTargetTemp_celsius(BED), BedPreheat); - if(awaitingUserConfirm()) + if(awaitingUserConfirm() && lastPauseMsgState!=ExtUI::pauseModeStatus) { switch(ExtUI::pauseModeStatus) { @@ -233,7 +239,7 @@ void onIdle() if (AutohomeKey && isPositionKnown() && !commandsInQueue()) { //Manual Move Home Done SERIAL_ECHOLNPGM_P(PSTR("==waitway 4==")); - rtscheck.RTS_SndData(ExchangePageBase + 71 + AxisPagenum, ExchangepageAddr); + //rtscheck.RTS_SndData(ExchangePageBase + 21 + AxisPagenum, ExchangepageAddr); AutohomeKey = false; waitway = 0; } @@ -353,6 +359,22 @@ void onIdle() rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(Z) * 10), StepMM_Z); rtscheck.RTS_SndData((unsigned int)(getAxisSteps_per_mm(E0) * 10), StepMM_E); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(X)/100), Accel_X); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Y)/100), Accel_Y); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(Z)/100), Accel_Z); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxAcceleration_mm_s2(E0)/100), Accel_E); + + rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(X)), Feed_X); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Y)), Feed_Y); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(Z)), Feed_Z); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxFeedrate_mm_s(E0)), Feed_E); + + rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(X)*100), Jerk_X); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Y)*100), Jerk_Y); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(Z)*100), Jerk_Z); + rtscheck.RTS_SndData(((unsigned int)getAxisMaxJerk_mm_s(E0)*100), Jerk_E); + + #if HAS_BED_PROBE rtscheck.RTS_SndData(getProbeOffset_mm(X) * 100, ProbeOffset_X); rtscheck.RTS_SndData(getProbeOffset_mm(Y) * 100, ProbeOffset_Y); @@ -432,8 +454,6 @@ void onIdle() } void yield(); - if (rtscheck.RTS_RecData() > 0 && (rtscheck.recdat.data[0]!=0 || rtscheck.recdat.addr!=0)) - rtscheck.RTS_HandleData(); if(rtscheck.recdat.addr != DisplayZaxis && rtscheck.recdat.addr != DisplayYaxis && rtscheck.recdat.addr != DisplayZaxis) { rtscheck.RTS_SndData(10 * getAxisPosition_mm((axis_t)X), DisplayXaxis); @@ -755,6 +775,18 @@ void RTSSHOW::RTS_HandleData() case BedPID_P : case BedPID_I : case BedPID_D : + case Accel_X: + case Accel_Y: + case Accel_Z: + case Accel_E: + case Feed_X: + case Feed_Y: + case Feed_Z: + case Feed_E: + case Jerk_X: + case Jerk_Y: + case Jerk_Z: + case Jerk_E: Checkkey = ManualSetTemp; break; } @@ -1079,19 +1111,34 @@ void RTSSHOW::RTS_HandleData() #endif else if (recdat.addr == Accel_X) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], X); + setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0]*100, X); } else if (recdat.addr == Accel_Y) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], Y); + setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0]*100, Y); } else if (recdat.addr == Accel_Z) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], Z); + setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0]*100, Z); } else if (recdat.addr == Accel_E) { - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], E0); - setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0], E1); + setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0]*100, E0); + setAxisMaxAcceleration_mm_s2((uint16_t)recdat.data[0]*100, E1); } + else if (recdat.addr == Feed_X) { + setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], X); + } + else if (recdat.addr == Feed_Y) { + setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], Y); + } + else if (recdat.addr == Feed_Z) { + setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], Z); + } + else if (recdat.addr == Feed_E) { + setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], E0); + setAxisMaxFeedrate_mm_s((uint16_t)recdat.data[0], E1); + } + + else { float tmp_float_handling; if (recdat.data[0] >= 32768) @@ -1143,20 +1190,6 @@ void RTSSHOW::RTS_HandleData() } #endif - else if (recdat.addr == Feed_X) { - setAxisMaxFeedrate_mm_s(tmp_float_handling, X); - } - else if (recdat.addr == Feed_Y) { - setAxisMaxFeedrate_mm_s(tmp_float_handling, Y); - } - else if (recdat.addr == Feed_Z) { - setAxisMaxFeedrate_mm_s(tmp_float_handling, Z); - } - else if (recdat.addr == Feed_E) { - setAxisMaxFeedrate_mm_s(tmp_float_handling, E0); - setAxisMaxFeedrate_mm_s(tmp_float_handling, E1); - } - #if HAS_PID_HEATING else if (recdat.addr == HotendPID_P) { setPIDValues(tmp_float_handling*10, getPIDValues_Ki(getActiveTool()), getPIDValues_Kd(getActiveTool()), getActiveTool()); @@ -1238,7 +1271,7 @@ void RTSSHOW::RTS_HandleData() else if (recdat.data[0] == 3) //Move { AxisPagenum = 0; - RTS_SndData(ExchangePageBase + 71, ExchangepageAddr); + RTS_SndData(ExchangePageBase + 21, ExchangepageAddr); } else if (recdat.data[0] == 4) //Language { @@ -1293,7 +1326,6 @@ void RTSSHOW::RTS_HandleData() RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); char zOffs[20], tmp1[11]; sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - injectCommands_P(PSTR("M500")); onStatusChanged(zOffs); } break; @@ -1309,7 +1341,6 @@ void RTSSHOW::RTS_HandleData() RTS_SndData(getZOffset_mm() * 100, ProbeOffset_Z); char zOffs[20], tmp1[11]; sprintf_P(zOffs, PSTR("Z Offset : %s"), dtostrf(getZOffset_mm(), 1, 3, tmp1)); - injectCommands_P(PSTR("M500")); onStatusChanged(zOffs); } break; @@ -1521,7 +1552,7 @@ void RTSSHOW::RTS_HandleData() injectCommands_P((PSTR("G28\nG1 F1000 Z10"))); InforShowStatus = AutohomeKey = true; AutoHomeIconNum = 0; - RTS_SndData(ExchangePageBase + 74, ExchangepageAddr); + //RTS_SndData(ExchangePageBase + 74, ExchangepageAddr); RTS_SndData(10, FilenameIcon); } else @@ -1697,7 +1728,7 @@ void RTSSHOW::RTS_HandleData() #elif NUM_RUNOUT_SENSORS > 1 (getActiveTool() == E0 && READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE) || (getActiveTool() == E1 && READ(FIL_RUNOUT2_PIN) != FIL_RUNOUT2_STATE) #else - getActiveTool() == E0 && READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE + (getActiveTool() == E0 && READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE) #endif || (ExtUI::pauseModeStatus != PAUSE_MESSAGE_PURGE && ExtUI::pauseModeStatus != PAUSE_MESSAGE_OPTION) ) { @@ -2176,6 +2207,9 @@ void onUserConfirmRequired(const char *const msg) { PrinterStatusKey[1] = 4; TPShowStatus = false; + if(lastPauseMsgState==ExtUI::pauseModeStatus && msg == (const char*)GET_TEXT_F(MSG_FILAMENT_CHANGE_LOAD)) + return; + switch(ExtUI::pauseModeStatus) { case PAUSE_MESSAGE_WAITING: @@ -2269,6 +2303,7 @@ void onUserConfirmRequired(const char *const msg) break; } } + lastPauseMsgState = ExtUI::pauseModeStatus; SERIAL_ECHOLNPGM_P(PSTR("==onUserConfirmRequired=="), pauseModeStatus); }