diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index ddbb7ed7a6..c327ea5624 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -283,6 +283,9 @@ public: * @see stepper.cpp */ + idleRpmPid.iTermMin = engineConfiguration->idlerpmpid_iTermMin; + idleRpmPid.iTermMax = engineConfiguration->idlerpmpid_iTermMax; + engine->engineState.isAutomaticIdle = engineConfiguration->idleMode == IM_AUTO; if (engineConfiguration->isVerboseIAC && engine->engineState.isAutomaticIdle) { @@ -416,6 +419,9 @@ void setDefaultIdleParameters(DECLARE_CONFIG_PARAMETER_SIGNATURE) { engineConfiguration->idleRpmPid.iFactor = 0.05f; engineConfiguration->idleRpmPid.dFactor = 0.0f; engineConfiguration->idleRpmPid.periodMs = 10; + + engineConfiguration->idlerpmpid_iTermMin = -200; + engineConfiguration->idlerpmpid_iTermMax = 200; } #if ! EFI_UNIT_TEST diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 4df1eacdaf..5a84d019c3 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -816,6 +816,6 @@ int getRusEfiVersion(void) { if (initBootloader() != 0) return 123; #endif /* EFI_BOOTLOADER_INCLUDE_CODE */ - return 20190901; + return 20190902; } #endif /* EFI_UNIT_TEST */ diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index c3284344df..2336c1fb3d 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:47:54 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:32 EDT 2019 // by class com.rusefi.output.CHeaderConsumer // begin #ifndef CONTROLLERS_GENERATED_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -2508,9 +2508,10 @@ struct engine_configuration_s { */ spi_device_e mc33816spiDevice; /** + * iTerm min value * offset 4002 */ - uint8_t unusedSpiPadding6[2]; + int16_t idlerpmpid_iTermMin; /** * offset 4004 */ @@ -2518,7 +2519,12 @@ struct engine_configuration_s { /** * offset 4005 */ - uint8_t unusedSpiPadding7[3]; + uint8_t unusedSpiPadding7; + /** + * iTerm max value + * offset 4006 + */ + int16_t idlerpmpid_iTermMax; /** * offset 4008 */ @@ -2814,4 +2820,4 @@ typedef struct persistent_config_s persistent_config_s; #endif // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:47:54 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:32 EDT 2019 diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index e166452bff..2960d0ae8b 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1063,6 +1063,10 @@ #define idleRpmPid_dFactor_offset_hex 704 #define idleRpmPid_iFactor_offset 1792 #define idleRpmPid_iFactor_offset_hex 700 +#define idlerpmpid_iTermMax_offset 4006 +#define idlerpmpid_iTermMax_offset_hex fa6 +#define idlerpmpid_iTermMin_offset 4002 +#define idlerpmpid_iTermMin_offset_hex fa2 #define idleRpmPid_maxValue_offset 1806 #define idleRpmPid_maxValue_offset_hex 70e #define idleRpmPid_minValue_offset 1804 @@ -1878,8 +1882,6 @@ #define unusedSpiPadding4_offset_hex a21 #define unusedSpiPadding5_offset 2713 #define unusedSpiPadding5_offset_hex a99 -#define unusedSpiPadding6_offset 4002 -#define unusedSpiPadding6_offset_hex fa2 #define unusedSpiPadding7_offset 4005 #define unusedSpiPadding7_offset_hex fa5 #define unusedSpiPadding8_offset 4009 diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index bb212a6cf3..6e86f0de2d 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1040,9 +1040,12 @@ tChargeMode_e tChargeMode; spi_device_e tle8888spiDevice; spi_device_e mc33816spiDevice; - uint8_t[2] unusedSpiPadding6; + int16_t idlerpmpid_iTermMin;iTerm min value;"", 1, 0, -30000, 30000.0, 0 + spi_device_e tle6240spiDevice; - uint8_t[3] unusedSpiPadding7; + uint8_t[1] unusedSpiPadding7; + int16_t idlerpmpid_iTermMax;iTerm max value;"", 1, 0, -30000, 30000.0, 0 + spi_device_e mc33972spiDevice; uint8_t[3] unusedSpiPadding8; diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 78c7bb2f57..d8fd751c69 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:47:54 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:32 EDT 2019 pageSize = 20000 page = 1 @@ -870,9 +870,10 @@ page = 1 tpsAccelFractionDivisor = scalar, F32, 3996, "coef", 1, 0, 0, 100, 2 tle8888spiDevice = bits,U32, 4000, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" mc33816spiDevice = bits,U32, 4001, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" -;no TS info - skipping unusedSpiPadding6 offset 4002 + idlerpmpid_iTermMin = scalar, S16, 4002, "", 1, 0, -30000, 30000.0, 0 tle6240spiDevice = bits,U32, 4004, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding7 offset 4005 + idlerpmpid_iTermMax = scalar, S16, 4006, "", 1, 0, -30000, 30000.0, 0 mc33972spiDevice = bits,U32, 4008, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding8 offset 4009 etbIdleThrottleRange = scalar, F32, 4012, "%", 1, 0, 0, 15, 0 @@ -2899,6 +2900,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue + field = "iTerm Min", idlerpmpid_iTermMin + field = "iTerm Max", idlerpmpid_iTermMax field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 29d04a30eb..5f6b3929e8 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1920,6 +1920,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue + field = "iTerm Min", idlerpmpid_iTermMin + field = "iTerm Max", idlerpmpid_iTermMax field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index 279f213af1..fe70dd45a5 100644 --- a/firmware/tunerstudio/rusefi_frankenso.ini +++ b/firmware/tunerstudio/rusefi_frankenso.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:48:24 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:37 EDT 2019 pageSize = 20000 page = 1 @@ -870,9 +870,10 @@ page = 1 tpsAccelFractionDivisor = scalar, F32, 3996, "coef", 1, 0, 0, 100, 2 tle8888spiDevice = bits,U32, 4000, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" mc33816spiDevice = bits,U32, 4001, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" -;no TS info - skipping unusedSpiPadding6 offset 4002 + idlerpmpid_iTermMin = scalar, S16, 4002, "", 1, 0, -30000, 30000.0, 0 tle6240spiDevice = bits,U32, 4004, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding7 offset 4005 + idlerpmpid_iTermMax = scalar, S16, 4006, "", 1, 0, -30000, 30000.0, 0 mc33972spiDevice = bits,U32, 4008, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding8 offset 4009 etbIdleThrottleRange = scalar, F32, 4012, "%", 1, 0, 0, 15, 0 @@ -2899,6 +2900,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue + field = "iTerm Min", idlerpmpid_iTermMin + field = "iTerm Max", idlerpmpid_iTermMax field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index 69f61cc506..702a9b610c 100644 --- a/firmware/tunerstudio/rusefi_microrusefi.ini +++ b/firmware/tunerstudio/rusefi_microrusefi.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:48:10 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:35 EDT 2019 pageSize = 20000 page = 1 @@ -870,9 +870,10 @@ page = 1 tpsAccelFractionDivisor = scalar, F32, 3996, "coef", 1, 0, 0, 100, 2 tle8888spiDevice = bits,U32, 4000, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" mc33816spiDevice = bits,U32, 4001, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" -;no TS info - skipping unusedSpiPadding6 offset 4002 + idlerpmpid_iTermMin = scalar, S16, 4002, "", 1, 0, -30000, 30000.0, 0 tle6240spiDevice = bits,U32, 4004, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding7 offset 4005 + idlerpmpid_iTermMax = scalar, S16, 4006, "", 1, 0, -30000, 30000.0, 0 mc33972spiDevice = bits,U32, 4008, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding8 offset 4009 etbIdleThrottleRange = scalar, F32, 4012, "%", 1, 0, 0, 15, 0 @@ -2884,6 +2885,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue + field = "iTerm Min", idlerpmpid_iTermMin + field = "iTerm Max", idlerpmpid_iTermMax field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index 736fbcb8a7..eff68f92e0 100644 --- a/firmware/tunerstudio/rusefi_prometheus.ini +++ b/firmware/tunerstudio/rusefi_prometheus.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sat Aug 31 17:48:37 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:40 EDT 2019 pageSize = 20000 page = 1 @@ -870,9 +870,10 @@ page = 1 tpsAccelFractionDivisor = scalar, F32, 3996, "coef", 1, 0, 0, 100, 2 tle8888spiDevice = bits,U32, 4000, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" mc33816spiDevice = bits,U32, 4001, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" -;no TS info - skipping unusedSpiPadding6 offset 4002 + idlerpmpid_iTermMin = scalar, S16, 4002, "", 1, 0, -30000, 30000.0, 0 tle6240spiDevice = bits,U32, 4004, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding7 offset 4005 + idlerpmpid_iTermMax = scalar, S16, 4006, "", 1, 0, -30000, 30000.0, 0 mc33972spiDevice = bits,U32, 4008, [0:2], "Off", "SPI1", "SPI2", "SPI3", "SPI4" ;no TS info - skipping unusedSpiPadding8 offset 4009 etbIdleThrottleRange = scalar, F32, 4012, "%", 1, 0, 0, 15, 0 @@ -2895,6 +2896,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Offset", idleRpmPid_offset field = "Min", idleRpmPid_minValue field = "Max", idleRpmPid_maxValue + field = "iTerm Min", idlerpmpid_iTermMin + field = "iTerm Max", idlerpmpid_iTermMax field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit diff --git a/java_console/models/src/com/rusefi/config/generated/Fields.java b/java_console/models/src/com/rusefi/config/generated/Fields.java index a8b4f25834..4e32669b8a 100644 --- a/java_console/models/src/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/com/rusefi/config/generated/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Sun Sep 01 17:24:09 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Mon Sep 02 00:13:32 EDT 2019 // by class com.rusefi.output.JavaFieldsConsumer import com.rusefi.config.*; @@ -712,6 +712,8 @@ public class Fields { public static final int idleRpmPid_dFactor_offset_hex = 704; public static final int idleRpmPid_iFactor_offset = 1792; public static final int idleRpmPid_iFactor_offset_hex = 700; + public static final int idlerpmpid_iTermMax_offset = 4006; + public static final int idlerpmpid_iTermMin_offset = 4002; public static final int idleRpmPid_maxValue_offset = 1806; public static final int idleRpmPid_minValue_offset = 1804; public static final int idleRpmPid_offset = 1788; @@ -1218,7 +1220,6 @@ public class Fields { public static final int unusedSpiPadding3_offset = 4036; public static final int unusedSpiPadding4_offset = 2593; public static final int unusedSpiPadding5_offset = 2713; - public static final int unusedSpiPadding6_offset = 4002; public static final int unusedSpiPadding7_offset = 4005; public static final int unusedSpiPadding8_offset = 4009; public static final int unuseduartPadding1_offset = 808; @@ -2027,7 +2028,10 @@ public class Fields { public static final Field TPSACCELFRACTIONDIVISOR = Field.create("TPSACCELFRACTIONDIVISOR", 3996, FieldType.FLOAT); public static final Field TLE8888SPIDEVICE = Field.create("TLE8888SPIDEVICE", 4000, FieldType.INT8); public static final Field MC33816SPIDEVICE = Field.create("MC33816SPIDEVICE", 4001, FieldType.INT8); + public static final Field IDLERPMPID_ITERMMIN = Field.create("IDLERPMPID_ITERMMIN", 4002, FieldType.INT16); public static final Field TLE6240SPIDEVICE = Field.create("TLE6240SPIDEVICE", 4004, FieldType.INT8); + public static final Field UNUSEDSPIPADDING7 = Field.create("UNUSEDSPIPADDING7", 4005, FieldType.INT8); + public static final Field IDLERPMPID_ITERMMAX = Field.create("IDLERPMPID_ITERMMAX", 4006, FieldType.INT16); public static final Field MC33972SPIDEVICE = Field.create("MC33972SPIDEVICE", 4008, FieldType.INT8); public static final Field ETBIDLETHROTTLERANGE = Field.create("ETBIDLETHROTTLERANGE", 4012, FieldType.FLOAT); public static final Field PEDALTOTPSTABLE = Field.create("PEDALTOTPSTABLE", 6400, FieldType.INT); @@ -2791,7 +2795,10 @@ public class Fields { TPSACCELFRACTIONDIVISOR, TLE8888SPIDEVICE, MC33816SPIDEVICE, + IDLERPMPID_ITERMMIN, TLE6240SPIDEVICE, + UNUSEDSPIPADDING7, + IDLERPMPID_ITERMMAX, MC33972SPIDEVICE, ETBIDLETHROTTLERANGE, PEDALTOTPSTABLE,