From cc011ee081d51e066b222d6b5ae9253caa6c4fbe Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 10 Sep 2019 23:03:55 -0400 Subject: [PATCH] instant RPM for idle control #925 --- firmware/controllers/actuators/idle_thread.cpp | 9 +++++++-- .../engine_configuration_generated_structures.h | 6 +++--- firmware/controllers/generated/rusefi_generated.h | 4 ++-- firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/rusefi.ini | 5 +++-- firmware/tunerstudio/rusefi.input | 1 + firmware/tunerstudio/rusefi_frankenso.ini | 5 +++-- firmware/tunerstudio/rusefi_microrusefi.ini | 5 +++-- firmware/tunerstudio/rusefi_prometheus.ini | 5 +++-- .../models/src/com/rusefi/config/generated/Fields.java | 8 ++++---- 10 files changed, 30 insertions(+), 20 deletions(-) diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index c5a837583a..1ecddcc18e 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -222,8 +222,13 @@ static percent_t automaticIdleController(DECLARE_ENGINE_PARAMETER_SIGNATURE) { efitick_t nowNt = getTimeNowNt(); // check if within the dead zone - //float rpm = engine->triggerCentral.triggerState.calculateInstantRpm(NULL, nowNt PASS_ENGINE_PARAMETER_SUFFIX); - float rpm = GET_RPM(); + + float rpm; + if (CONFIG(useInstantRpmForIdle)) { + rpm = engine->triggerCentral.triggerState.calculateInstantRpm(NULL, nowNt PASS_ENGINE_PARAMETER_SUFFIX); + } else { + rpm = GET_RPM(); + } if (absI(rpm - targetRpm) <= CONFIG(idlePidRpmDeadZone)) { engine->engineState.idle.idleState = RPM_DEAD_ZONE; // current RPM is close enough, no need to change anything diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index ffef4a7ff9..ef501fb1b5 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 Mon Sep 09 21:25:07 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 // by class com.rusefi.output.CHeaderConsumer // begin #ifndef CONTROLLERS_GENERATED_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -1095,7 +1095,7 @@ struct engine_configuration_s { bool useTLE8888_cranking_hack : 1; /** offset 76 bit 18 */ - bool issue_294_18 : 1; + bool useInstantRpmForIdle : 1; /** offset 76 bit 19 */ bool issue_294_19 : 1; @@ -2820,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 Mon Sep 09 21:25:07 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 9204fe0d55..21fc851a41 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1260,8 +1260,6 @@ #define isMapAveragingEnabled_offset_hex 5c4 #define isSdCardEnabled_offset 744 #define isSdCardEnabled_offset_hex 2e8 -#define issue_294_18_offset 76 -#define issue_294_18_offset_hex 4c #define issue_294_19_offset 76 #define issue_294_19_offset_hex 4c #define issue_294_21_offset 76 @@ -1925,6 +1923,8 @@ #define useIacTableForCoasting_offset_hex 2e8 #define useIdleTimingPidControl_offset 744 #define useIdleTimingPidControl_offset_hex 2e8 +#define useInstantRpmForIdle_offset 76 +#define useInstantRpmForIdle_offset_hex 4c #define useLcdScreen_offset 744 #define useLcdScreen_offset_hex 2e8 #define useLinearCltSensor_offset 1464 diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 2dbff183a6..0f86019e7f 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -300,7 +300,7 @@ bit showSdCardWarning; bit cj125isUrDivided;looks like 3v range should be enough, divider not needed bit useTLE8888_hall_mode; bit useTLE8888_cranking_hack; -bit issue_294_18; +bit useInstantRpmForIdle; bit issue_294_19; bit issue_294_21; bit issue_294_22; diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 238203cbb8..e44581d130 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 Mon Sep 09 21:25:46 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 pageSize = 20000 page = 1 @@ -109,7 +109,7 @@ page = 1 cj125isUrDivided = bits, U32, 76, [15:15], "false", "true" useTLE8888_hall_mode = bits, U32, 76, [16:16], "false", "true" useTLE8888_cranking_hack= bits, U32, 76, [17:17], "false", "true" - issue_294_18 = bits, U32, 76, [18:18], "false", "true" + useInstantRpmForIdle = bits, U32, 76, [18:18], "false", "true" issue_294_19 = bits, U32, 76, [19:19], "false", "true" issue_294_21 = bits, U32, 76, [20:20], "false", "true" issue_294_22 = bits, U32, 76, [21:21], "false", "true" @@ -2911,6 +2911,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = idleSettings, "", yAxis field = "Idle IAC control mode", idleMode + field = useInstantRpmForIdle, useInstantRpmForIdle field = "use ETB for idle", useETBforIdleControl field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index fadfe4f02e..a6c07a8e19 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1931,6 +1931,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = idleSettings, "", yAxis field = "Idle IAC control mode", idleMode + field = useInstantRpmForIdle, useInstantRpmForIdle field = "use ETB for idle", useETBforIdleControl field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index 0a85a07d59..0029814305 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 Mon Sep 09 21:25:51 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:03 EDT 2019 pageSize = 20000 page = 1 @@ -109,7 +109,7 @@ page = 1 cj125isUrDivided = bits, U32, 76, [15:15], "false", "true" useTLE8888_hall_mode = bits, U32, 76, [16:16], "false", "true" useTLE8888_cranking_hack= bits, U32, 76, [17:17], "false", "true" - issue_294_18 = bits, U32, 76, [18:18], "false", "true" + useInstantRpmForIdle = bits, U32, 76, [18:18], "false", "true" issue_294_19 = bits, U32, 76, [19:19], "false", "true" issue_294_21 = bits, U32, 76, [20:20], "false", "true" issue_294_22 = bits, U32, 76, [21:21], "false", "true" @@ -2911,6 +2911,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = idleSettings, "", yAxis field = "Idle IAC control mode", idleMode + field = useInstantRpmForIdle, useInstantRpmForIdle field = "use ETB for idle", useETBforIdleControl field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index a155bf26cb..eec0ca7204 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 Mon Sep 09 21:25:49 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:01 EDT 2019 pageSize = 20000 page = 1 @@ -109,7 +109,7 @@ page = 1 cj125isUrDivided = bits, U32, 76, [15:15], "false", "true" useTLE8888_hall_mode = bits, U32, 76, [16:16], "false", "true" useTLE8888_cranking_hack= bits, U32, 76, [17:17], "false", "true" - issue_294_18 = bits, U32, 76, [18:18], "false", "true" + useInstantRpmForIdle = bits, U32, 76, [18:18], "false", "true" issue_294_19 = bits, U32, 76, [19:19], "false", "true" issue_294_21 = bits, U32, 76, [20:20], "false", "true" issue_294_22 = bits, U32, 76, [21:21], "false", "true" @@ -2896,6 +2896,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = idleSettings, "", yAxis field = "Idle IAC control mode", idleMode + field = useInstantRpmForIdle, useInstantRpmForIdle field = "use ETB for idle", useETBforIdleControl field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index fa6f19f5df..b0ee5558c3 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 Mon Sep 09 21:25:53 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:05 EDT 2019 pageSize = 20000 page = 1 @@ -109,7 +109,7 @@ page = 1 cj125isUrDivided = bits, U32, 76, [15:15], "false", "true" useTLE8888_hall_mode = bits, U32, 76, [16:16], "false", "true" useTLE8888_cranking_hack= bits, U32, 76, [17:17], "false", "true" - issue_294_18 = bits, U32, 76, [18:18], "false", "true" + useInstantRpmForIdle = bits, U32, 76, [18:18], "false", "true" issue_294_19 = bits, U32, 76, [19:19], "false", "true" issue_294_21 = bits, U32, 76, [20:20], "false", "true" issue_294_22 = bits, U32, 76, [21:21], "false", "true" @@ -2907,6 +2907,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" dialog = idleSettings, "", yAxis field = "Idle IAC control mode", idleMode + field = useInstantRpmForIdle, useInstantRpmForIdle field = "use ETB for idle", useETBforIdleControl field = "ETB Idle range", etbIdleThrottleRange, {useETBforIdleControl == 1} field = "Use separate Ignition Table for idle", useSeparateAdvanceForIdle 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 f72cf7cc28..84a563bbd0 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 Tue Sep 10 22:45:42 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -837,7 +837,6 @@ public class Fields { public static final int isManualSpinningMode_offset = 1476; public static final int isMapAveragingEnabled_offset = 1476; public static final int isSdCardEnabled_offset = 744; - public static final int issue_294_18_offset = 76; public static final int issue_294_19_offset = 76; public static final int issue_294_21_offset = 76; public static final int issue_294_22_offset = 76; @@ -1245,6 +1244,7 @@ public class Fields { public static final int useFSIO9ForServo2_offset = 1464; public static final int useIacTableForCoasting_offset = 744; public static final int useIdleTimingPidControl_offset = 744; + public static final int useInstantRpmForIdle_offset = 76; public static final int useLcdScreen_offset = 744; public static final int useLinearCltSensor_offset = 1464; public static final int useLinearIatSensor_offset = 1464; @@ -1307,7 +1307,7 @@ public class Fields { public static final Field CJ125ISURDIVIDED = Field.create("CJ125ISURDIVIDED", 76, FieldType.BIT, 15); public static final Field USETLE8888_HALL_MODE = Field.create("USETLE8888_HALL_MODE", 76, FieldType.BIT, 16); public static final Field USETLE8888_CRANKING_HACK = Field.create("USETLE8888_CRANKING_HACK", 76, FieldType.BIT, 17); - public static final Field ISSUE_294_18 = Field.create("ISSUE_294_18", 76, FieldType.BIT, 18); + public static final Field USEINSTANTRPMFORIDLE = Field.create("USEINSTANTRPMFORIDLE", 76, FieldType.BIT, 18); public static final Field ISSUE_294_19 = Field.create("ISSUE_294_19", 76, FieldType.BIT, 19); public static final Field ISSUE_294_21 = Field.create("ISSUE_294_21", 76, FieldType.BIT, 20); public static final Field ISSUE_294_22 = Field.create("ISSUE_294_22", 76, FieldType.BIT, 21); @@ -2091,7 +2091,7 @@ public class Fields { CJ125ISURDIVIDED, USETLE8888_HALL_MODE, USETLE8888_CRANKING_HACK, - ISSUE_294_18, + USEINSTANTRPMFORIDLE, ISSUE_294_19, ISSUE_294_21, ISSUE_294_22,