diff --git a/Marlin/src/feature/power.cpp b/Marlin/src/feature/power.cpp index 74850122c296..5be554e5e472 100644 --- a/Marlin/src/feature/power.cpp +++ b/Marlin/src/feature/power.cpp @@ -59,7 +59,6 @@ bool Power::is_power_needed() { // If any of the drivers or the bed are enabled... if (X_ENABLE_READ() == X_ENABLE_ON || Y_ENABLE_READ() == Y_ENABLE_ON || Z_ENABLE_READ() == Z_ENABLE_ON - || TERN0(HAS_HEATED_BED, thermalManager.temp_bed.soft_pwm_amount > 0) #if HAS_X2_ENABLE || X2_ENABLE_READ() == X_ENABLE_ON #endif @@ -75,8 +74,8 @@ bool Power::is_power_needed() { #endif ) return true; - HOTEND_LOOP() if (thermalManager.degTargetHotend(e) > 0) return true; - if (TERN0(HAS_HEATED_BED, thermalManager.degTargetBed() > 0)) return true; + HOTEND_LOOP() if (thermalManager.degTargetHotend(e) > 0 || thermalManager.temp_hotend[e].soft_pwm_amount > 0) return true; + if (TERN0(HAS_HEATED_BED, thermalManager.degTargetBed() > 0 || thermalManager.temp_bed.soft_pwm_amount > 0)) return true; #if HAS_HOTEND && AUTO_POWER_E_TEMP HOTEND_LOOP() if (thermalManager.degHotend(e) >= AUTO_POWER_E_TEMP) return true; diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 7ae190fa9926..9e9e5f3c7eae 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2020-08-17" + #define STRING_DISTRIBUTION_DATE "2020-08-19" #endif /** diff --git a/Marlin/src/lcd/dwin/dwin.cpp b/Marlin/src/lcd/dwin/dwin.cpp index 8cd7af15747d..e527c8dba024 100644 --- a/Marlin/src/lcd/dwin/dwin.cpp +++ b/Marlin/src/lcd/dwin/dwin.cpp @@ -65,8 +65,6 @@ #include "../../module/probe.h" #endif -#include "../../libs/buzzer.h" - #ifndef MACHINE_SIZE #define MACHINE_SIZE "220x220x250" #endif @@ -1065,36 +1063,40 @@ void HMI_Move_Z(void) { } } -void HMI_Move_E(void) { - ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze(); - if (encoder_diffState != ENCODER_DIFF_NO) { - if (encoder_diffState == ENCODER_DIFF_CW) { - HMI_ValueStruct.Move_E_scale += EncoderRate.encoderMoveValue; - } - else if (encoder_diffState == ENCODER_DIFF_CCW) { - HMI_ValueStruct.Move_E_scale -= EncoderRate.encoderMoveValue; - } - else if (encoder_diffState == ENCODER_DIFF_ENTER) { - checkkey = AxisMove; - EncoderRate.encoderRateEnabled = 0; - last_E_scale = HMI_ValueStruct.Move_E_scale; - show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); - if (!planner.is_full()) { - planner.synchronize(); // Wait for planner moves to finish! - planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder); +#if EXTRUDERS + + void HMI_Move_E(void) { + ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze(); + if (encoder_diffState != ENCODER_DIFF_NO) { + if (encoder_diffState == ENCODER_DIFF_CW) { + HMI_ValueStruct.Move_E_scale += EncoderRate.encoderMoveValue; + } + else if (encoder_diffState == ENCODER_DIFF_CCW) { + HMI_ValueStruct.Move_E_scale -= EncoderRate.encoderMoveValue; } + else if (encoder_diffState == ENCODER_DIFF_ENTER) { + checkkey = AxisMove; + EncoderRate.encoderRateEnabled = 0; + last_E_scale = HMI_ValueStruct.Move_E_scale; + show_plus_or_minus(font8x16, Background_black, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); + if (!planner.is_full()) { + planner.synchronize(); // Wait for planner moves to finish! + planner.buffer_line(current_position, MMM_TO_MMS(FEEDRATE_E), active_extruder); + } + DWIN_UpdateLCD(); + return; + } + if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) + HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT; + else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) + HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT; + current_position.e = HMI_ValueStruct.Move_E_scale / 10; + show_plus_or_minus(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); DWIN_UpdateLCD(); - return; } - if ((HMI_ValueStruct.Move_E_scale - last_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) - HMI_ValueStruct.Move_E_scale = last_E_scale + (EXTRUDE_MAXLENGTH) * MINUNITMULT; - else if ((last_E_scale - HMI_ValueStruct.Move_E_scale) > (EXTRUDE_MAXLENGTH) * MINUNITMULT) - HMI_ValueStruct.Move_E_scale = last_E_scale - (EXTRUDE_MAXLENGTH) * MINUNITMULT; - current_position.e = HMI_ValueStruct.Move_E_scale / 10; - show_plus_or_minus(font8x16, Select_Color, 3, 1, 216, MBASE(4), HMI_ValueStruct.Move_E_scale); - DWIN_UpdateLCD(); } -} + +#endif void HMI_Zoffset(void) { ENCODER_DiffState encoder_diffState = Encoder_ReceiveAnalyze(); @@ -2096,7 +2098,9 @@ inline void Draw_Move_Menu() { DWIN_Frame_AreaCopy(1, 58, 118, 271 - 165, 479 - 347, LBLX, MBASE(1)); DWIN_Frame_AreaCopy(1, 109, 118, 271 - 114, 479 - 347, LBLX, MBASE(2)); DWIN_Frame_AreaCopy(1, 160, 118, 271 - 62, 479 - 347, LBLX, MBASE(3)); - DWIN_Frame_AreaCopy(1, 212, 118, 271 - 18, 479 - 348, LBLX, MBASE(4)); + #if HAS_HOTEND + DWIN_Frame_AreaCopy(1, 212, 118, 271 - 18, 479 - 348, LBLX, MBASE(4)); + #endif } else { #ifdef USE_STRING_HEADINGS @@ -2107,7 +2111,9 @@ inline void Draw_Move_Menu() { draw_move_en(MBASE(1)); say_x(33 + 3, MBASE(1)); // "Move X" draw_move_en(MBASE(2)); say_y(33 + 3, MBASE(2)); // "Move Y" draw_move_en(MBASE(3)); say_z(33 + 3, MBASE(3)); // "Move Z" - DWIN_Frame_AreaCopy(1, 123, 192, 271 - 95, 479 - 277, LBLX, MBASE(4)); // "Extruder" + #if HAS_HOTEND + DWIN_Frame_AreaCopy(1, 123, 192, 271 - 95, 479 - 277, LBLX, MBASE(4)); // "Extruder" + #endif } Draw_Back_First(select_axis.now == 0); @@ -2116,6 +2122,18 @@ inline void Draw_Move_Menu() { LOOP_L_N(i, MROWS) Draw_Menu_Line(i + 1, ICON_MoveX + i); } +#include "../../libs/buzzer.h" + +void HMI_AudioFeedback(const bool success=true) { + if (success) { + buzzer.tone(100, 659); + buzzer.tone(10, 0); + buzzer.tone(100, 698); + } + else + buzzer.tone(40, 440); +} + /* Prepare */ void HMI_Prepare(void) { ENCODER_DiffState encoder_diffState = get_encoder_state(); @@ -2202,8 +2220,7 @@ void HMI_Prepare(void) { #else // Apply workspace offset, making the current position 0,0,0 queue.inject_P(PSTR("G92 X0 Y0 Z0")); - buzzer.tone(100, 659); - buzzer.tone(100, 698); + HMI_AudioFeedback(); #endif break; case 5: // PLA preheat @@ -2347,27 +2364,17 @@ void HMI_Control(void) { select_motion.reset(); Draw_Motion_Menu(); break; - case 3: // write EEPROM - if (settings.save()) { - buzzer.tone(100, 659); - buzzer.tone(100, 698); - } - else - buzzer.tone(20, 440); - break; - case 4: // read EEPROM - if (settings.load()) { - buzzer.tone(100, 659); - buzzer.tone(100, 698); - } - else {buzzer.tone(20, 440);} - break; + case 3: { // write EEPROM + const bool success = settings.save(); + HMI_AudioFeedback(success); + } break; + case 4: { // read EEPROM + const bool success = settings.load(); + HMI_AudioFeedback(success); + } break; case 5: // resume EEPROM settings.reset(); - #if HAS_BUZZER - buzzer.tone(100, 659); - buzzer.tone(100, 698); - #endif + HMI_AudioFeedback(); break; case 6: // info checkkey = Info; @@ -3006,14 +3013,10 @@ void HMI_PLAPreheatSetting(void) { EncoderRate.encoderRateEnabled = 1; break; #endif - case 4: // save PLA configuration - if (settings.save()) { - buzzer.tone(100, 659); - buzzer.tone(100, 698); - } - else - buzzer.tone(20, 440); - break; + case 4: { // save PLA configuration + const bool success = settings.save(); + HMI_AudioFeedback(success); + } break; default: break; } } @@ -3064,14 +3067,10 @@ void HMI_ABSPreheatSetting(void) { EncoderRate.encoderRateEnabled = 1; break; #endif - case 4: // save PLA configuration - if (settings.save()) { - buzzer.tone(100, 659); - buzzer.tone(100, 698); - } - else - buzzer.tone(20, 440); - break; + case 4: { // save ABS configuration + const bool success = settings.save(); + HMI_AudioFeedback(success); + } break; default: break; } @@ -3496,11 +3495,11 @@ void DWIN_HandleScreen(void) { case Move_X: HMI_Move_X(); break; case Move_Y: HMI_Move_Y(); break; case Move_Z: HMI_Move_Z(); break; - case Extruder: HMI_Move_E(); break; - case Homeoffset: HMI_Zoffset(); break; #if HAS_HOTEND + case Extruder: HMI_Move_E(); break; case ETemp: HMI_ETemp(); break; #endif + case Homeoffset: HMI_Zoffset(); break; #if HAS_HEATED_BED case BedTemp: HMI_BedTemp(); break; #endif diff --git a/Marlin/src/lcd/dwin/dwin.h b/Marlin/src/lcd/dwin/dwin.h index 2d24d2504e7e..cddc582fc2ba 100644 --- a/Marlin/src/lcd/dwin/dwin.h +++ b/Marlin/src/lcd/dwin/dwin.h @@ -68,11 +68,11 @@ enum processID { Move_X, Move_Y, Move_Z, - Extruder, - Homeoffset, #if HAS_HOTEND + Extruder, ETemp, #endif + Homeoffset, #if HAS_HEATED_BED BedTemp, #endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index c9d87486f87d..e5f65a3cdd97 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1264,7 +1264,7 @@ void Stepper::set_directions() { } FORCE_INLINE int32_t Stepper::_eval_bezier_curve(const uint32_t curr_step) { - #if defined(__ARM__) || defined(__thumb__) + #if defined(__arm__) || defined(__thumb__) // For ARM Cortex M3/M4 CPUs, we have the optimized assembler version, that takes 43 cycles to execute uint32_t flo = 0; diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 1dc480a9279a..a217fc9ab81b 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -444,6 +444,7 @@ volatile bool Temperature::raw_temps_ready = false; LEDColor color = ONHEATINGSTART(); #endif + TERN_(AUTO_POWER_CONTROL, powerManager.power_on()); TERN_(NO_FAN_SLOWING_IN_PID_TUNING, adaptive_fan_slowing = false); // PID Tuning loop diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h index c36b4561b02b..5aab757129da 100644 --- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h +++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h @@ -170,7 +170,10 @@ #define BTN_EN2 PB12 //#define LCD_LED_PIN PB2 - #define BEEPER_PIN PB13 + #ifndef BEEPER_PIN + #define BEEPER_PIN PB13 + #undef SPEAKER + #endif #elif ENABLED(DWIN_VET6_CREALITY_LCD)