🎨 MKS Hardware Test followup (#22414)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
ellensp 2021-07-22 09:31:11 +12:00 committed by Scott Lahteine
parent 7773504afa
commit f8f68f9259
9 changed files with 170 additions and 54 deletions

View File

@ -39,7 +39,7 @@ enum {
}; };
#if ENABLED(MKS_TEST) #if ENABLED(MKS_TEST)
extern uint8_t curent_disp_ui; extern uint8_t current_disp_ui;
#endif #endif
static void event_handler(lv_obj_t *obj, lv_event_t event) { static void event_handler(lv_obj_t *obj, lv_event_t event) {
@ -49,7 +49,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
case ID_T_USB_DISK: card.changeMedia(&card.media_driver_usbFlash); break; case ID_T_USB_DISK: card.changeMedia(&card.media_driver_usbFlash); break;
case ID_T_SD_DISK: card.changeMedia(&card.media_driver_sdcard); break; case ID_T_SD_DISK: card.changeMedia(&card.media_driver_sdcard); break;
case ID_T_RETURN: case ID_T_RETURN:
TERN_(MKS_TEST, curent_disp_ui = 1); TERN_(MKS_TEST, current_disp_ui = 1);
lv_draw_ready_print(); lv_draw_ready_print();
return; return;
} }

View File

@ -61,7 +61,7 @@ static lv_obj_t *buttonExt1, *labelExt1, *buttonFanstate, *labelFan;
#endif #endif
#if ENABLED(MKS_TEST) #if ENABLED(MKS_TEST)
uint8_t curent_disp_ui = 0; uint8_t current_disp_ui = 0;
#endif #endif
enum { ID_TOOL = 1, ID_SET, ID_PRINT, ID_INFO_EXT, ID_INFO_BED, ID_INFO_FAN }; enum { ID_TOOL = 1, ID_SET, ID_PRINT, ID_INFO_EXT, ID_INFO_BED, ID_INFO_FAN };
@ -106,8 +106,10 @@ void disp_det_error() {
lv_obj_t *e1, *e2, *e3, *bed; lv_obj_t *e1, *e2, *e3, *bed;
void mks_disp_test() { void mks_disp_test() {
char buf[30] = {0}; char buf[30] = {0};
sprintf_P(buf, PSTR("e1:%d"), thermalManager.wholeDegHotend(0)); #if HAS_HOTEND
lv_label_set_text(e1, buf); sprintf_P(buf, PSTR("e1:%d"), thermalManager.wholeDegHotend(0));
lv_label_set_text(e1, buf);
#endif
#if HAS_MULTI_HOTEND #if HAS_MULTI_HOTEND
sprintf_P(buf, PSTR("e2:%d"), thermalManager.wholeDegHotend(1)); sprintf_P(buf, PSTR("e2:%d"), thermalManager.wholeDegHotend(1));
lv_label_set_text(e2, buf); lv_label_set_text(e2, buf);
@ -126,7 +128,7 @@ void lv_draw_ready_print() {
ZERO(disp_state_stack._disp_state); ZERO(disp_state_stack._disp_state);
scr = lv_screen_create(PRINT_READY_UI, ""); scr = lv_screen_create(PRINT_READY_UI, "");
if (TERN0(SDSUPPORT, mks_test_flag == 0x1E)) { if (mks_test_flag == 0x1E) {
// Create image buttons // Create image buttons
buttonTool = lv_imgbtn_create(scr, "F:/bmp_tool.bin", event_handler, ID_TOOL); buttonTool = lv_imgbtn_create(scr, "F:/bmp_tool.bin", event_handler, ID_TOOL);
@ -147,7 +149,7 @@ void lv_draw_ready_print() {
#if HAS_MULTI_HOTEND #if HAS_MULTI_HOTEND
e2 = lv_label_create_empty(scr); e2 = lv_label_create_empty(scr);
lv_obj_set_pos(e2, 20, 45); lv_obj_set_pos(e2, 20, 45);
sprintf_P(buf, PSTR("e1: %d"), thermalManager.wholeDegHotend(1)); sprintf_P(buf, PSTR("e2: %d"), thermalManager.wholeDegHotend(1));
lv_label_set_text(e2, buf); lv_label_set_text(e2, buf);
#endif #endif
#if HAS_HEATED_BED #if HAS_HEATED_BED

View File

@ -45,7 +45,7 @@ enum {
}; };
#if ENABLED(MKS_TEST) #if ENABLED(MKS_TEST)
extern uint8_t curent_disp_ui; extern uint8_t current_disp_ui;
#endif #endif
static void event_handler(lv_obj_t *obj, lv_event_t event) { static void event_handler(lv_obj_t *obj, lv_event_t event) {
@ -75,7 +75,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
lv_draw_more(); lv_draw_more();
break; break;
case ID_T_RETURN: case ID_T_RETURN:
TERN_(MKS_TEST, curent_disp_ui = 1); TERN_(MKS_TEST, current_disp_ui = 1);
lv_draw_ready_print(); lv_draw_ready_print();
break; break;
} }

View File

@ -34,6 +34,10 @@
static lv_obj_t *scr; static lv_obj_t *scr;
static lv_obj_t *status_label; static lv_obj_t *status_label;
#if ENABLED(MKS_TEST)
extern uint8_t current_disp_ui;
#endif
static void event_handler(lv_obj_t *obj, lv_event_t event); static void event_handler(lv_obj_t *obj, lv_event_t event);
enum { enum {
@ -93,7 +97,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
if (event != LV_EVENT_RELEASED) return; if (event != LV_EVENT_RELEASED) return;
switch (obj->mks_obj_id) { switch (obj->mks_obj_id) {
case ID_TC_RETURN: case ID_TC_RETURN:
TERN_(MKS_TEST, curent_disp_ui = 1); TERN_(MKS_TEST, current_disp_ui = 1);
lv_clear_touch_calibration_screen(); lv_clear_touch_calibration_screen();
draw_return_ui(); draw_return_ui();
break; break;

View File

@ -38,12 +38,44 @@
#if ENABLED(MKS_TEST) #if ENABLED(MKS_TEST)
#include "mks_hardware.h" #include "mks_hardware.h"
#include "../../../module/endstops.h"
bool pw_det_sta, pw_off_sta, mt_det_sta; bool pw_det_sta, pw_off_sta, mt_det_sta;
#if PIN_EXISTS(MT_DET_2) #if PIN_EXISTS(MT_DET_2)
bool mt_det2_sta; bool mt_det2_sta;
#endif #endif
bool endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta; #if HAS_X_MIN || HAS_X_MAX
bool endstopx1_sta;
#else
constexpr static bool endstopx1_sta = true;
#endif
#if HAS_X2_MIN || HAS_X2_MAX
bool endstopx2_sta;
#else
constexpr static bool endstopx2_sta = true;
#endif
#if HAS_Y_MIN || HAS_Y_MAX
bool endstopy1_sta;
#else
constexpr static bool endstopy1_sta = true;
#endif
#if HAS_Y2_MIN || HAS_Y2_MAX
bool endstopy2_sta;
#else
constexpr static bool endstopy2_sta = true;
#endif
#if HAS_Z_MIN || HAS_Z_MAX
bool endstopz1_sta;
#else
constexpr static bool endstopz1_sta = true;
#endif
#if HAS_Z2_MIN || HAS_Z2_MAX
bool endstopz2_sta;
#else
constexpr static bool endstopz2_sta = true;
#endif
#define ESTATE(S) (READ(S##_PIN) != S##_ENDSTOP_INVERTING)
void test_gpio_readlevel_L() { void test_gpio_readlevel_L() {
WRITE(WIFI_IO0_PIN, HIGH); WRITE(WIFI_IO0_PIN, HIGH);
@ -54,10 +86,36 @@
#if PIN_EXISTS(MT_DET_2) #if PIN_EXISTS(MT_DET_2)
mt_det2_sta = (READ(MT_DET_2_PIN) == LOW); mt_det2_sta = (READ(MT_DET_2_PIN) == LOW);
#endif #endif
endstopx1_sta = (READ(X_MIN_PIN) == LOW); #if HAS_X_MIN
endstopy1_sta = (READ(Y_MIN_PIN) == LOW); endstopx1_sta = ESTATE(X_MIN);
endstopz1_sta = (READ(Z_MIN_PIN) == LOW); #elif HAS_X_MAX
endstopz2_sta = (READ(Z_MAX_PIN) == LOW); endstopx1_sta = ESTATE(X_MAX);
#endif
#if HAS_X2_MIN
endstopx2_sta = ESTATE(X2_MIN);
#elif HAS_X2_MAX
endstopx2_sta = ESTATE(X2_MAX);
#endif
#if HAS_Y_MIN
endstopy1_sta = ESTATE(Y_MIN);
#elif HAS_Y_MAX
endstopy1_sta = ESTATE(Y_MAX);
#endif
#if HAS_Y2_MIN
endstopy2_sta = ESTATE(Y2_MIN);
#elif HAS_Y2_MAX
endstopy2_sta = ESTATE(Y2_MAX);
#endif
#if HAS_Z_MIN
endstopz1_sta = ESTATE(Z_MIN);
#elif HAS_Z_MAX
endstopz1_sta = ESTATE(Z_MAX);
#endif
#if HAS_Z2_MIN
endstopz2_sta = ESTATE(Z2_MIN);
#elif HAS_Z2_MAX
endstopz2_sta = ESTATE(Z2_MAX);
#endif
} }
void test_gpio_readlevel_H() { void test_gpio_readlevel_H() {
@ -69,44 +127,66 @@
#if PIN_EXISTS(MT_DET_2) #if PIN_EXISTS(MT_DET_2)
mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH); mt_det2_sta = (READ(MT_DET_2_PIN) == HIGH);
#endif #endif
endstopx1_sta = (READ(X_MIN_PIN) == HIGH); #if HAS_X_MIN
endstopy1_sta = (READ(Y_MIN_PIN) == HIGH); endstopx1_sta = !ESTATE(X_MIN);
endstopz1_sta = (READ(Z_MIN_PIN) == HIGH); #elif HAS_X_MAX
endstopz2_sta = (READ(Z_MAX_PIN) == HIGH); endstopx1_sta = !ESTATE(X_MAX);
#endif
#if HAS_X2_MIN
endstopx2_sta = !ESTATE(X2_MIN);
#elif HAS_X2_MAX
endstopx2_sta = !ESTATE(X2_MAX);
#endif
#if HAS_Y_MIN
endstopy1_sta = !ESTATE(Y_MIN);
#elif HAS_Y_MAX
endstopy1_sta = !ESTATE(Y_MAX);
#endif
#if HAS_Y2_MIN
endstopy2_sta = !ESTATE(Y2_MIN);
#elif HAS_Y2_MAX
endstopy2_sta = !ESTATE(Y2_MAX);
#endif
#if HAS_Z_MIN
endstopz1_sta = !ESTATE(Z_MIN);
#elif HAS_Z_MAX
endstopz1_sta = !ESTATE(Z_MAX);
#endif
#if HAS_Z2_MIN
endstopz2_sta = !ESTATE(Z2_MIN);
#elif HAS_Z2_MAX
endstopz2_sta = !ESTATE(Z2_MAX);
#endif
} }
void init_test_gpio() { void init_test_gpio() {
SET_INPUT_PULLUP(X_MIN_PIN); endstops.init();
SET_INPUT_PULLUP(Y_MIN_PIN);
SET_INPUT_PULLUP(Z_MIN_PIN);
SET_INPUT_PULLUP(Z_MAX_PIN);
SET_OUTPUT(WIFI_IO0_PIN); SET_OUTPUT(WIFI_IO0_PIN);
SET_INPUT_PULLUP(MT_DET_1_PIN); #if PIN_EXISTS(MT_DET_1)
SET_INPUT_PULLUP(MT_DET_1_PIN);
#endif
#if PIN_EXISTS(MT_DET_2) #if PIN_EXISTS(MT_DET_2)
SET_INPUT_PULLUP(MT_DET_2_PIN); SET_INPUT_PULLUP(MT_DET_2_PIN);
#endif #endif
SET_INPUT_PULLUP(MKS_TEST_POWER_LOSS_PIN); SET_INPUT_PULLUP(MKS_TEST_POWER_LOSS_PIN);
SET_INPUT_PULLUP(MKS_TEST_PS_ON_PIN); SET_INPUT_PULLUP(MKS_TEST_PS_ON_PIN);
SET_INPUT_PULLUP(SERVO0_PIN); SET_INPUT_PULLUP(SERVO0_PIN);
SET_OUTPUT(X_ENABLE_PIN); OUT_WRITE(X_ENABLE_PIN, LOW);
SET_OUTPUT(Y_ENABLE_PIN); #if HAS_Y_AXIS
SET_OUTPUT(Z_ENABLE_PIN); OUT_WRITE(Y_ENABLE_PIN, LOW);
SET_OUTPUT(E0_ENABLE_PIN);
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
SET_OUTPUT(E1_ENABLE_PIN);
#endif #endif
#if HAS_Z_AXIS
WRITE(X_ENABLE_PIN, LOW); OUT_WRITE(Z_ENABLE_PIN, LOW);
WRITE(Y_ENABLE_PIN, LOW); #endif
WRITE(Z_ENABLE_PIN, LOW); #if HAS_EXTRUDERS
WRITE(E0_ENABLE_PIN, LOW); OUT_WRITE(E0_ENABLE_PIN, LOW);
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0) #endif
WRITE(E1_ENABLE_PIN, LOW); #if HAS_MULTI_EXTRUDER && DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
OUT_WRITE(E1_ENABLE_PIN, LOW);
#endif #endif
#if ENABLED(MKS_HARDWARE_TEST_ONLY_E0) #if ENABLED(MKS_HARDWARE_TEST_ONLY_E0)
@ -161,34 +241,54 @@
void mks_hardware_test() { void mks_hardware_test() {
if (millis() % 2000 < 1000) { if (millis() % 2000 < 1000) {
thermalManager.fan_speed[0] = 255;
WRITE(X_DIR_PIN, LOW); WRITE(X_DIR_PIN, LOW);
WRITE(Y_DIR_PIN, LOW); #if HAS_Y_AXIS
WRITE(Z_DIR_PIN, LOW); WRITE(Y_DIR_PIN, LOW);
WRITE(E0_DIR_PIN, LOW); #endif
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0) #if HAS_Z_AXIS
WRITE(Z_DIR_PIN, LOW);
#endif
#if HAS_EXTRUDERS
WRITE(E0_DIR_PIN, LOW);
#endif
#if HAS_MULTI_EXTRUDER && DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
WRITE(E1_DIR_PIN, LOW); WRITE(E1_DIR_PIN, LOW);
#endif #endif
thermalManager.fan_speed[0] = 255; #if HAS_MULTI_HOTEND && DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
WRITE(HEATER_1_PIN, HIGH); // HE1 WRITE(HEATER_1_PIN, HIGH); // HE1
#endif #endif
WRITE(HEATER_0_PIN, HIGH); // HE0 #if HAS_HOTEND
WRITE(HEATER_BED_PIN, HIGH); // HOT-BED WRITE(HEATER_0_PIN, HIGH); // HE0
#endif
#if HAS_HEATED_BED
WRITE(HEATER_BED_PIN, HIGH); // HOT-BED
#endif
} }
else { else {
thermalManager.fan_speed[0] = 0;
WRITE(X_DIR_PIN, HIGH); WRITE(X_DIR_PIN, HIGH);
WRITE(Y_DIR_PIN, HIGH); #if HAS_Y_AXIS
WRITE(Z_DIR_PIN, HIGH); WRITE(Y_DIR_PIN, HIGH);
WRITE(E0_DIR_PIN, HIGH); #endif
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0) #if HAS_Y_AXIS
WRITE(Z_DIR_PIN, HIGH);
#endif
#if HAS_EXTRUDERS
WRITE(E0_DIR_PIN, HIGH);
#endif
#if HAS_MULTI_EXTRUDER && DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
WRITE(E1_DIR_PIN, HIGH); WRITE(E1_DIR_PIN, HIGH);
#endif #endif
thermalManager.fan_speed[0] = 0; #if HAS_MULTI_HOTEND && DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
#if DISABLED(MKS_HARDWARE_TEST_ONLY_E0)
WRITE(HEATER_1_PIN, LOW); // HE1 WRITE(HEATER_1_PIN, LOW); // HE1
#endif #endif
WRITE(HEATER_0_PIN, LOW); // HE0 #if HAS_HOTEND
WRITE(HEATER_BED_PIN, LOW); // HOT-BED WRITE(HEATER_0_PIN, LOW); // HE0
#endif
#if HAS_HEATED_BED
WRITE(HEATER_BED_PIN, LOW); // HOT-BED
#endif
} }
if (endstopx1_sta && endstopx2_sta && endstopy1_sta && endstopy2_sta && endstopz1_sta && endstopz2_sta) { if (endstopx1_sta && endstopx2_sta && endstopy1_sta && endstopy2_sta && endstopz1_sta && endstopz2_sta) {

View File

@ -31,6 +31,8 @@
void mks_test_get(); void mks_test_get();
void mks_gpio_test(); void mks_gpio_test();
extern uint8_t mks_test_flag; extern uint8_t mks_test_flag;
#else
#define mks_test_flag 0
#endif #endif
// String display and assets // String display and assets

View File

@ -220,6 +220,12 @@
#define WIFI_RESET_PIN PE9 // MKS ESP WIFI RESET PIN #define WIFI_RESET_PIN PE9 // MKS ESP WIFI RESET PIN
#endif #endif
// MKS TEST
#if ENABLED(MKS_TEST)
#define MKS_TEST_POWER_LOSS_PIN PA13 // PW_DET
#define MKS_TEST_PS_ON_PIN PB2 // PW_OFF
#endif
// //
// Onboard SD card // Onboard SD card
// //

View File

@ -22,6 +22,7 @@ use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC opt_disable TFT_INTERFACE_FSMC
opt_enable TFT_INTERFACE_SPI MKS_WIFI_MODULE opt_enable TFT_INTERFACE_SPI MKS_WIFI_MODULE
opt_add MKS_TEST
exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI, MKS_WIFI_MODULE" "$3" exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI, MKS_WIFI_MODULE" "$3"
# #

View File

@ -32,6 +32,7 @@ use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240 SERIAL_PORT_2 opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240 SERIAL_PORT_2
opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320 MKS_WIFI_MODULE opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320 MKS_WIFI_MODULE
opt_add MKS_TEST
exec_test $1 $2 "MKS Robin v2 nano LVGL SPI w/ WiFi" "$3" exec_test $1 $2 "MKS Robin v2 nano LVGL SPI w/ WiFi" "$3"
# #