diff --git a/source/Core/BSP/MHP30/configuration.h b/source/Core/BSP/MHP30/configuration.h index c99afc649b..17b803f5fe 100644 --- a/source/Core/BSP/MHP30/configuration.h +++ b/source/Core/BSP/MHP30/configuration.h @@ -29,8 +29,8 @@ * How many seconds/minutes we wait until going to sleep/shutdown. * Values -> SLEEP_TIME * 10; i.e. 5*10 = 50 Seconds! */ -#define SLEEP_TIME 5 // x10 Seconds -#define SHUTDOWN_TIME 10 // Minutes +#define SLEEP_TIME 5 // x10 Seconds +#define SHUTDOWN_TIME 0 // Minutes -- Default shutdown to being off /** * Auto start off for safety. diff --git a/source/Core/Threads/MOVThread.cpp b/source/Core/Threads/MOVThread.cpp index 456266bd25..2b01883767 100644 --- a/source/Core/Threads/MOVThread.cpp +++ b/source/Core/Threads/MOVThread.cpp @@ -159,6 +159,9 @@ void startMOVTask(void const *argument __unused) { int16_t tx = 0, ty = 0, tz = 0; int32_t avgx, avgy, avgz; Orientation rotation = ORIENTATION_FLAT; +#ifdef ACCEL_EXITS_ON_MOVEMENT + uint16_t tripCounter = 0; +#endif for (;;) { int32_t threshold = 1500 + (9 * 200); threshold -= getSettingValue(SettingsOptions::Sensitivity) * 200; // 200 is the step size @@ -197,10 +200,23 @@ void startMOVTask(void const *argument __unused) { // than the threshold // If movement has occurred then we update the tick timer - if (error > threshold) { + bool overThreshold = error > threshold; +#ifdef ACCEL_EXITS_ON_MOVEMENT + if (overThreshold) { + tripCounter++; + if (tripCounter > 2) { + lastMovementTime = xTaskGetTickCount(); + } + } else if (tripCounter > 0) { + tripCounter = 0; + } +#else + if (overThreshold) { lastMovementTime = xTaskGetTickCount(); } +#endif + vTaskDelay(TICKS_100MS); // Slow down update rate } } diff --git a/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp b/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp index 3db87daca5..e8e457fad6 100644 --- a/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp +++ b/source/Core/Threads/OperatingModes/utils/SolderingCommon.cpp @@ -94,8 +94,10 @@ bool checkExitSoldering(void) { // If we have moved recently; in the last second // Then exit soldering mode - if (((TickType_t)(xTaskGetTickCount() - lastMovementTime)) < (TickType_t)(TICKS_SECOND)) { + // Movement occurred in last update + if (((TickType_t)(xTaskGetTickCount() - lastMovementTime)) < (TickType_t)(TICKS_SECOND / 5)) { currentTempTargetDegC = 0; + lastMovementTime = 0; return true; } } @@ -108,6 +110,8 @@ bool checkExitSoldering(void) { if (shouldShutdown()) { // shutdown currentTempTargetDegC = 0; + lastMovementTime = xTaskGetTickCount(); // We manually move the movement time to now such that shutdown timer is reset + return true; // we want to exit soldering mode } #endif