|
80 | 80 | #include "../../../feature/powerloss.h" |
81 | 81 | #endif |
82 | 82 |
|
| 83 | +#if HAS_TRINAMIC_CONFIG |
| 84 | + #include "../../../module/stepper/trinamic.h" |
| 85 | + |
| 86 | + #define TMC_MIN_CURRENT 400 |
| 87 | + #define TMC_MAX_CURRENT 1500 |
| 88 | +#endif |
| 89 | + |
83 | 90 | #define MACHINE_SIZE STRINGIFY(X_BED_SIZE) "x" STRINGIFY(Y_BED_SIZE) "x" STRINGIFY(Z_MAX_POS) |
84 | 91 |
|
85 | 92 | #define DWIN_FONT_MENU font8x16 |
@@ -2295,7 +2302,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ |
2295 | 2302 | Draw_Float(planner.flow_percentage[0], row, false, 1); |
2296 | 2303 | } |
2297 | 2304 | else |
2298 | | - Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1); |
| 2305 | + Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); |
2299 | 2306 | break; |
2300 | 2307 | #endif |
2301 | 2308 | } |
@@ -2720,7 +2727,8 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ |
2720 | 2727 | #define ADVANCED_BACK 0 |
2721 | 2728 | #define ADVANCED_BEEPER (ADVANCED_BACK + ENABLED(SOUND_MENU_ITEM)) |
2722 | 2729 | #define ADVANCED_PROBE (ADVANCED_BEEPER + ENABLED(HAS_BED_PROBE)) |
2723 | | - #define ADVANCED_CORNER (ADVANCED_PROBE + 1) |
| 2730 | + #define ADVANCED_TMC (ADVANCED_PROBE + ENABLED(HAS_TRINAMIC_CONFIG)) |
| 2731 | + #define ADVANCED_CORNER (ADVANCED_TMC + 1) |
2724 | 2732 | #define ADVANCED_LA (ADVANCED_CORNER + ENABLED(LIN_ADVANCE)) |
2725 | 2733 | #define ADVANCED_LOAD (ADVANCED_LA + ENABLED(ADVANCED_PAUSE_FEATURE)) |
2726 | 2734 | #define ADVANCED_UNLOAD (ADVANCED_LOAD + ENABLED(ADVANCED_PAUSE_FEATURE)) |
@@ -2760,6 +2768,15 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ |
2760 | 2768 | break; |
2761 | 2769 | #endif |
2762 | 2770 |
|
| 2771 | + #if HAS_TRINAMIC_CONFIG |
| 2772 | + case ADVANCED_TMC: |
| 2773 | + if (draw) |
| 2774 | + Draw_Menu_Item(row, ICON_Motion, F("TMC Drivers"), nullptr, true); |
| 2775 | + else |
| 2776 | + Draw_Menu(TMCMenu); |
| 2777 | + break; |
| 2778 | + #endif |
| 2779 | + |
2763 | 2780 | case ADVANCED_CORNER: |
2764 | 2781 | if (draw) { |
2765 | 2782 | Draw_Menu_Item(row, ICON_MaxAccelerated, F("Bed Screw Inset")); |
@@ -2905,7 +2922,93 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ |
2905 | 2922 | break; |
2906 | 2923 | } |
2907 | 2924 | break; |
2908 | | - #endif |
| 2925 | + #endif // HAS_PROBE_MENU |
| 2926 | + |
| 2927 | + #if HAS_TRINAMIC_CONFIG |
| 2928 | + case TMCMenu: |
| 2929 | + |
| 2930 | + #define TMC_BACK 0 |
| 2931 | + #define TMC_STEPPER_CURRENT_X (TMC_BACK + AXIS_IS_TMC(X)) |
| 2932 | + #define TMC_STEPPER_CURRENT_Y (TMC_STEPPER_CURRENT_X + AXIS_IS_TMC(Y)) |
| 2933 | + #define TMC_STEPPER_CURRENT_Z (TMC_STEPPER_CURRENT_Y + AXIS_IS_TMC(Z)) |
| 2934 | + #define TMC_STEPPER_CURRENT_E (TMC_STEPPER_CURRENT_Z + AXIS_IS_TMC(E0)) |
| 2935 | + #define TMC_TOTAL TMC_STEPPER_CURRENT_E |
| 2936 | + |
| 2937 | + switch (item) { |
| 2938 | + |
| 2939 | + case TMC_BACK: |
| 2940 | + if (draw) |
| 2941 | + Draw_Menu_Item(row, ICON_Back, F("Back")); |
| 2942 | + else |
| 2943 | + Draw_Menu(Advanced, ADVANCED_TMC); |
| 2944 | + break; |
| 2945 | + |
| 2946 | + #if AXIS_IS_TMC(X) |
| 2947 | + case TMC_STEPPER_CURRENT_X: |
| 2948 | + |
| 2949 | + static float stepper_current_x; |
| 2950 | + |
| 2951 | + if (draw) { |
| 2952 | + Draw_Menu_Item(row, ICON_StepX, F("Stepper X current")); |
| 2953 | + stepper_current_x = stepperX.getMilliamps(); |
| 2954 | + Draw_Float(stepper_current_x, row, false, 1); |
| 2955 | + } |
| 2956 | + else { |
| 2957 | + Modify_Value(stepper_current_x, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperX.rms_current(stepper_current_x); }); |
| 2958 | + } |
| 2959 | + break; |
| 2960 | + #endif |
| 2961 | + |
| 2962 | + #if AXIS_IS_TMC(Y) |
| 2963 | + case TMC_STEPPER_CURRENT_Y: |
| 2964 | + |
| 2965 | + static float stepper_current_y; |
| 2966 | + |
| 2967 | + if (draw) { |
| 2968 | + Draw_Menu_Item(row, ICON_StepY, F("Stepper Y current")); |
| 2969 | + stepper_current_y = stepperY.getMilliamps(); |
| 2970 | + Draw_Float(stepper_current_y, row, false, 1); |
| 2971 | + } |
| 2972 | + else { |
| 2973 | + Modify_Value(stepper_current_y, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperY.rms_current(stepper_current_y); }); |
| 2974 | + } |
| 2975 | + break; |
| 2976 | + #endif |
| 2977 | + |
| 2978 | + #if AXIS_IS_TMC(Z) |
| 2979 | + case TMC_STEPPER_CURRENT_Z: |
| 2980 | + |
| 2981 | + static float stepper_current_z; |
| 2982 | + |
| 2983 | + if (draw) { |
| 2984 | + Draw_Menu_Item(row, ICON_StepZ, F("Stepper Z current")); |
| 2985 | + stepper_current_z = stepperZ.getMilliamps(); |
| 2986 | + Draw_Float(stepper_current_z, row, false, 1); |
| 2987 | + } |
| 2988 | + else { |
| 2989 | + Modify_Value(stepper_current_z, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperZ.rms_current(stepper_current_z); }); |
| 2990 | + } |
| 2991 | + break; |
| 2992 | + #endif |
| 2993 | + |
| 2994 | + #if AXIS_IS_TMC(E0) |
| 2995 | + case TMC_STEPPER_CURRENT_E: |
| 2996 | + |
| 2997 | + static float stepper_current_e; |
| 2998 | + |
| 2999 | + if (draw) { |
| 3000 | + Draw_Menu_Item(row, ICON_StepE, F("Stepper E current")); |
| 3001 | + stepper_current_e = stepperE0.getMilliamps(); |
| 3002 | + Draw_Float(stepper_current_e, row, false, 1); |
| 3003 | + } |
| 3004 | + else { |
| 3005 | + Modify_Value(stepper_current_e, TMC_MIN_CURRENT, TMC_MAX_CURRENT, 1, []{ stepperE0.rms_current(stepper_current_e); }); |
| 3006 | + } |
| 3007 | + break; |
| 3008 | + #endif |
| 3009 | + }; |
| 3010 | + break; |
| 3011 | + #endif // HAS_TRINAMIC_CONFIG |
2909 | 3012 |
|
2910 | 3013 | case InfoMain: |
2911 | 3014 | case Info: |
@@ -3637,7 +3740,7 @@ void CrealityDWINClass::Menu_Item_Handler(uint8_t menu, uint8_t item, bool draw/ |
3637 | 3740 | Draw_Float(planner.flow_percentage[0], row, false, 1); |
3638 | 3741 | } |
3639 | 3742 | else |
3640 | | - Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1); |
| 3743 | + Modify_Value(planner.flow_percentage[0], MIN_FLOW_RATE, MAX_FLOW_RATE, 1, []{ planner.refresh_e_factor(0); }); |
3641 | 3744 | break; |
3642 | 3745 | case TUNE_HOTEND: |
3643 | 3746 | if (draw) { |
@@ -3879,7 +3982,10 @@ FSTR_P CrealityDWINClass::Get_Menu_Title(uint8_t menu) { |
3879 | 3982 | case Visual: return F("Visual Settings"); |
3880 | 3983 | case Advanced: return F("Advanced Settings"); |
3881 | 3984 | #if HAS_BED_PROBE |
3882 | | - case ProbeMenu: return F("Probe Menu"); |
| 3985 | + case ProbeMenu: return F("Bed Probe"); |
| 3986 | + #endif |
| 3987 | + #if HAS_TRINAMIC_CONFIG |
| 3988 | + case TMCMenu: return F("TMC Drivers"); |
3883 | 3989 | #endif |
3884 | 3990 | case ColorSettings: return F("UI Color Settings"); |
3885 | 3991 | case Info: return F("Info"); |
@@ -3949,6 +4055,9 @@ uint8_t CrealityDWINClass::Get_Menu_Size(uint8_t menu) { |
3949 | 4055 | #if HAS_BED_PROBE |
3950 | 4056 | case ProbeMenu: return PROBE_TOTAL; |
3951 | 4057 | #endif |
| 4058 | + #if HAS_TRINAMIC_CONFIG |
| 4059 | + case TMCMenu: return TMC_TOTAL; |
| 4060 | + #endif |
3952 | 4061 | case Info: return INFO_TOTAL; |
3953 | 4062 | case InfoMain: return INFO_TOTAL; |
3954 | 4063 | #if ENABLED(AUTO_BED_LEVELING_UBL) && !HAS_BED_PROBE |
@@ -4117,8 +4226,6 @@ void CrealityDWINClass::Value_Control() { |
4117 | 4226 | case LevelManual: mesh_conf.manual_mesh_move(selection == LEVELING_M_OFFSET); break; |
4118 | 4227 | #endif |
4119 | 4228 | } |
4120 | | - if (valuepointer == &planner.flow_percentage[0]) |
4121 | | - planner.refresh_e_factor(0); |
4122 | 4229 | if (funcpointer) funcpointer(); |
4123 | 4230 | return; |
4124 | 4231 | } |
|
0 commit comments