From 5a5be7e287183e633ee3235ee1bcd79a72a1a1f5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Apr 2020 21:29:52 -0500 Subject: [PATCH] Reorder setup, with serial early --- Marlin/src/HAL/STM32/HAL.cpp | 18 ++++---- Marlin/src/MarlinCore.cpp | 83 ++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 55 deletions(-) diff --git a/Marlin/src/HAL/STM32/HAL.cpp b/Marlin/src/HAL/STM32/HAL.cpp index 77f8d2764..602c1b502 100644 --- a/Marlin/src/HAL/STM32/HAL.cpp +++ b/Marlin/src/HAL/STM32/HAL.cpp @@ -76,16 +76,16 @@ void HAL_init() { #endif #if ENABLED(SRAM_EEPROM_EMULATION) - // Enable access to backup SRAM - __HAL_RCC_PWR_CLK_ENABLE(); - HAL_PWR_EnableBkUpAccess(); - __HAL_RCC_BKPSRAM_CLK_ENABLE(); + // Enable access to backup SRAM + __HAL_RCC_PWR_CLK_ENABLE(); + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_BKPSRAM_CLK_ENABLE(); - // Enable backup regulator - LL_PWR_EnableBkUpRegulator(); - // Wait until backup regulator is initialized - while (!LL_PWR_IsActiveFlag_BRR()); - #endif // EEPROM_EMULATED_SRAM + // Enable backup regulator + LL_PWR_EnableBkUpRegulator(); + // Wait until backup regulator is initialized + while (!LL_PWR_IsActiveFlag_BRR()); + #endif #if HAS_TMC_SW_SERIAL SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0); diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 853911448..7aff3b575 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -889,52 +889,15 @@ void setup() { #endif #define SETUP_RUN(C) do{ SETUP_LOG(STRINGIFY(C)); C; }while(0) - HAL_init(); - - #if HAS_L64XX - L64xxManager.init(); // Set up SPI, init drivers - #endif - - #if ENABLED(SMART_EFFECTOR) && PIN_EXISTS(SMART_EFFECTOR_MOD) - OUT_WRITE(SMART_EFFECTOR_MOD_PIN, LOW); // Put Smart Effector into NORMAL mode - #endif - - #if ENABLED(DISABLE_DEBUG) + #if EITHER(DISABLE_DEBUG, DISABLE_JTAG) // Disable any hardware debug to free up pins for IO - #ifdef JTAGSWD_DISABLE + #if ENABLED(DISABLE_DEBUG) && defined(JTAGSWD_DISABLE) JTAGSWD_DISABLE(); #elif defined(JTAG_DISABLE) JTAG_DISABLE(); #else - #error "DISABLE_DEBUG is not supported for the selected MCU/Board" + #error "DISABLE_(DEBUG|JTAG) is not supported for the selected MCU/Board." #endif - #elif ENABLED(DISABLE_JTAG) - // Disable JTAG to free up pins for IO - #ifdef JTAG_DISABLE - JTAG_DISABLE(); - #else - #error "DISABLE_JTAG is not supported for the selected MCU/Board" - #endif - #endif - - #if HAS_FILAMENT_SENSOR - runout.setup(); - #endif - - #if ENABLED(POWER_LOSS_RECOVERY) - recovery.setup(); - #endif - - setup_killpin(); - - #if HAS_TMC220x - tmc_serial_begin(); - #endif - - setup_powerhold(); - - #if HAS_STEPPER_RESET - disableStepperDrivers(); #endif #if NUM_SERIAL > 0 @@ -946,10 +909,38 @@ void setup() { serial_connect_timeout = millis() + 1000UL; while (!MYSERIAL1 && PENDING(millis(), serial_connect_timeout)) { /*nada*/ } #endif + SERIAL_ECHO_MSG("start"); #endif - SERIAL_ECHOLNPGM("start"); - SERIAL_ECHO_START(); + SETUP_RUN(HAL_init()); + + #if HAS_L64XX + SETUP_RUN(L64xxManager.init()); // Set up SPI, init drivers + #endif + + #if ENABLED(SMART_EFFECTOR) && PIN_EXISTS(SMART_EFFECTOR_MOD) + OUT_WRITE(SMART_EFFECTOR_MOD_PIN, LOW); // Put Smart Effector into NORMAL mode + #endif + + #if HAS_FILAMENT_SENSOR + SETUP_RUN(runout.setup()); + #endif + + #if ENABLED(POWER_LOSS_RECOVERY) + SETUP_RUN(recovery.setup()); + #endif + + SETUP_RUN(setup_killpin()); + + #if HAS_TMC220x + SETUP_RUN(tmc_serial_begin()); + #endif + + SETUP_RUN(setup_powerhold()); + + #if HAS_STEPPER_RESET + SETUP_RUN(disableStepperDrivers()); + #endif #if HAS_TMC_SPI #if DISABLED(TMC_USE_SW_SPI) @@ -966,7 +957,7 @@ void setup() { SETUP_RUN(esp_wifi_init()); // Check startup - does nothing if bootloader sets MCUSR to 0 - byte mcu = HAL_get_reset_source(); + const byte mcu = HAL_get_reset_source(); if (mcu & 1) SERIAL_ECHOLNPGM(STR_POWERUP); if (mcu & 2) SERIAL_ECHOLNPGM(STR_EXTERNAL_RESET); if (mcu & 4) SERIAL_ECHOLNPGM(STR_BROWNOUT_RESET); @@ -991,9 +982,6 @@ void setup() { SERIAL_ECHO_START(); SERIAL_ECHOLNPAIR(STR_FREE_MEMORY, freeMemory(), STR_PLANNER_BUFFER_BYTES, (int)sizeof(block_t) * (BLOCK_BUFFER_SIZE)); - // UI must be initialized before EEPROM - // (because EEPROM code calls the UI). - // Set up LEDs early #if HAS_COLOR_LEDS SETUP_RUN(leds.setup()); @@ -1003,6 +991,9 @@ void setup() { SETUP_RUN(controllerFan.setup()); #endif + // UI must be initialized before EEPROM + // (because EEPROM code calls the UI). + SETUP_RUN(ui.init()); SETUP_RUN(ui.reset_status()); // Load welcome message early. (Retained if no errors exist.)