From 7fa38d99a7f3c96d9a15dcc091cc6bded6483303 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 25 Apr 2020 18:07:37 -0400 Subject: [PATCH] Fresh generated - auto --- ...ngine_configuration_generated_structures.h | 65 +++++- .../controllers/algo/rusefi_generated.h | 95 ++++++++- ...ngine_configuration_generated_structures.h | 65 +++++- .../controllers/generated/rusefi_generated.h | 95 ++++++++- firmware/tunerstudio/rusefi.ini | 192 +++++++++++++++++- firmware/tunerstudio/rusefi_frankenso.ini | 192 +++++++++++++++++- firmware/tunerstudio/rusefi_kinetis.ini | 192 +++++++++++++++++- firmware/tunerstudio/rusefi_microrusefi.ini | 192 +++++++++++++++++- firmware/tunerstudio/rusefi_prometheus.ini | 192 +++++++++++++++++- firmware/tunerstudio/rusefi_proteus.ini | 192 +++++++++++++++++- .../com/rusefi/config/generated/Fields.java | 139 ++++++++++++- 11 files changed, 1574 insertions(+), 37 deletions(-) diff --git a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h index c0327cac37..c614176551 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Fri Apr 24 23:25:53 EDT 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Sat Apr 25 18:06:47 EDT 2020 // by class com.rusefi.output.CHeaderConsumer // begin #ifndef CONFIG_BOARDS_KINETIS_CONFIG_CONTROLLERS_ALGO_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -160,6 +160,61 @@ struct spi_pins { typedef struct spi_pins spi_pins; +// start of gppwm_channel +struct gppwm_channel { + /** + * Select a pin to use for PWM or on-off output. + * offset 0 + */ + brain_pin_e pin; + /** + * If an error (with a sensor, etc) is detected, this value is used instead of reading from the table. + * This should be a safe value for whatever hardware is connected to prevent damage. + * offset 1 + */ + uint8_t dutyIfError; + /** + * Select a frequency to run PWM at. + * Set this to 0hz to enable on-off mode. + * offset 2 + */ + uint16_t pwmFrequency; + /** + * In on-off mode, turn the output on when the table value is above this duty. + * offset 4 + */ + uint8_t onAboveDuty; + /** + * In on-off mode, turn the output off when the table value is below this duty. + * offset 5 + */ + uint8_t offBelowDuty; + /** + * Selects the load axis to use for the table. + * offset 6 + */ + gppwm_channel_e loadAxis; + /** + * offset 7 + */ + uint8_t pad; + /** + * offset 8 + */ + uint8_t loadBins[GPPWM_LOAD_COUNT]; + /** + * offset 16 + */ + uint8_t rpmBins[GPPWM_RPM_COUNT]; + /** + * offset 24 + */ + gppwm_table_t table; + /** total size 88*/ +}; + +typedef struct gppwm_channel gppwm_channel; + // start of air_pressure_sensor_config_s struct air_pressure_sensor_config_s { /** @@ -3049,7 +3104,11 @@ struct engine_configuration_s { /** * offset 4144 */ - int mainUnusedEnd[464]; + gppwm_channel gppwm[4]; + /** + * offset 4496 + */ + int mainUnusedEnd[376]; /** total size 6000*/ }; @@ -3352,4 +3411,4 @@ typedef struct persistent_config_s persistent_config_s; #endif // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Fri Apr 24 23:25:53 EDT 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Sat Apr 25 18:06:47 EDT 2020 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h index ea54967fef..44bd6b4f8e 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -1046,6 +1046,97 @@ #define gpioPinModes8_offset_hex 303 #define gpioPinModes9_offset 772 #define gpioPinModes9_offset_hex 304 +#define gppwm1_dutyIfError_offset 4145 +#define gppwm1_dutyIfError_offset_hex 1031 +#define gppwm1_loadAxis_offset 4150 +#define gppwm1_loadAxis_offset_hex 1036 +#define gppwm1_loadBins_offset 4152 +#define gppwm1_loadBins_offset_hex 1038 +#define gppwm1_offBelowDuty_offset 4149 +#define gppwm1_offBelowDuty_offset_hex 1035 +#define gppwm1_offset 4144 +#define gppwm1_offset_hex 1030 +#define gppwm1_onAboveDuty_offset 4148 +#define gppwm1_onAboveDuty_offset_hex 1034 +#define gppwm1_pad_offset 4151 +#define gppwm1_pad_offset_hex 1037 +#define gppwm1_pin_offset 4144 +#define gppwm1_pin_offset_hex 1030 +#define gppwm1_pwmFrequency_offset 4146 +#define gppwm1_pwmFrequency_offset_hex 1032 +#define gppwm1_rpmBins_offset 4160 +#define gppwm1_rpmBins_offset_hex 1040 +#define gppwm1_table_offset 4168 +#define gppwm1_table_offset_hex 1048 +#define gppwm2_dutyIfError_offset 4233 +#define gppwm2_dutyIfError_offset_hex 1089 +#define gppwm2_loadAxis_offset 4238 +#define gppwm2_loadAxis_offset_hex 108e +#define gppwm2_loadBins_offset 4240 +#define gppwm2_loadBins_offset_hex 1090 +#define gppwm2_offBelowDuty_offset 4237 +#define gppwm2_offBelowDuty_offset_hex 108d +#define gppwm2_offset 4232 +#define gppwm2_offset_hex 1088 +#define gppwm2_onAboveDuty_offset 4236 +#define gppwm2_onAboveDuty_offset_hex 108c +#define gppwm2_pad_offset 4239 +#define gppwm2_pad_offset_hex 108f +#define gppwm2_pin_offset 4232 +#define gppwm2_pin_offset_hex 1088 +#define gppwm2_pwmFrequency_offset 4234 +#define gppwm2_pwmFrequency_offset_hex 108a +#define gppwm2_rpmBins_offset 4248 +#define gppwm2_rpmBins_offset_hex 1098 +#define gppwm2_table_offset 4256 +#define gppwm2_table_offset_hex 10a0 +#define gppwm3_dutyIfError_offset 4321 +#define gppwm3_dutyIfError_offset_hex 10e1 +#define gppwm3_loadAxis_offset 4326 +#define gppwm3_loadAxis_offset_hex 10e6 +#define gppwm3_loadBins_offset 4328 +#define gppwm3_loadBins_offset_hex 10e8 +#define gppwm3_offBelowDuty_offset 4325 +#define gppwm3_offBelowDuty_offset_hex 10e5 +#define gppwm3_offset 4320 +#define gppwm3_offset_hex 10e0 +#define gppwm3_onAboveDuty_offset 4324 +#define gppwm3_onAboveDuty_offset_hex 10e4 +#define gppwm3_pad_offset 4327 +#define gppwm3_pad_offset_hex 10e7 +#define gppwm3_pin_offset 4320 +#define gppwm3_pin_offset_hex 10e0 +#define gppwm3_pwmFrequency_offset 4322 +#define gppwm3_pwmFrequency_offset_hex 10e2 +#define gppwm3_rpmBins_offset 4336 +#define gppwm3_rpmBins_offset_hex 10f0 +#define gppwm3_table_offset 4344 +#define gppwm3_table_offset_hex 10f8 +#define gppwm4_dutyIfError_offset 4409 +#define gppwm4_dutyIfError_offset_hex 1139 +#define gppwm4_loadAxis_offset 4414 +#define gppwm4_loadAxis_offset_hex 113e +#define gppwm4_loadBins_offset 4416 +#define gppwm4_loadBins_offset_hex 1140 +#define gppwm4_offBelowDuty_offset 4413 +#define gppwm4_offBelowDuty_offset_hex 113d +#define gppwm4_offset 4408 +#define gppwm4_offset_hex 1138 +#define gppwm4_onAboveDuty_offset 4412 +#define gppwm4_onAboveDuty_offset_hex 113c +#define gppwm4_pad_offset 4415 +#define gppwm4_pad_offset_hex 113f +#define gppwm4_pin_offset 4408 +#define gppwm4_pin_offset_hex 1138 +#define gppwm4_pwmFrequency_offset 4410 +#define gppwm4_pwmFrequency_offset_hex 113a +#define gppwm4_rpmBins_offset 4424 +#define gppwm4_rpmBins_offset_hex 1148 +#define gppwm4_table_offset 4432 +#define gppwm4_table_offset_hex 1150 +#define gppwm_channel_e_enum "TPS", "MAP", "CLT", "IAT" +#define GPPWM_LOAD_COUNT 8 +#define GPPWM_RPM_COUNT 8 #define gps_rx_pin_offset 656 #define gps_rx_pin_offset_hex 290 #define gps_tx_pin_offset 657 @@ -1517,8 +1608,8 @@ #define mainRelayPin_offset_hex 2c2 #define mainRelayPinMode_offset 752 #define mainRelayPinMode_offset_hex 2f0 -#define mainUnusedEnd_offset 4144 -#define mainUnusedEnd_offset_hex 1030 +#define mainUnusedEnd_offset 4496 +#define mainUnusedEnd_offset_hex 1190 #define malfunctionIndicatorPin_offset 660 #define malfunctionIndicatorPin_offset_hex 294 #define malfunctionIndicatorPinMode_offset 661 diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index cdd28f0757..8c08cf35e1 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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:22:49 EDT 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:03:45 EDT 2020 // by class com.rusefi.output.CHeaderConsumer // begin #ifndef CONTROLLERS_GENERATED_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -160,6 +160,61 @@ struct spi_pins { typedef struct spi_pins spi_pins; +// start of gppwm_channel +struct gppwm_channel { + /** + * Select a pin to use for PWM or on-off output. + * offset 0 + */ + brain_pin_e pin; + /** + * If an error (with a sensor, etc) is detected, this value is used instead of reading from the table. + * This should be a safe value for whatever hardware is connected to prevent damage. + * offset 1 + */ + uint8_t dutyIfError; + /** + * Select a frequency to run PWM at. + * Set this to 0hz to enable on-off mode. + * offset 2 + */ + uint16_t pwmFrequency; + /** + * In on-off mode, turn the output on when the table value is above this duty. + * offset 4 + */ + uint8_t onAboveDuty; + /** + * In on-off mode, turn the output off when the table value is below this duty. + * offset 5 + */ + uint8_t offBelowDuty; + /** + * Selects the load axis to use for the table. + * offset 6 + */ + gppwm_channel_e loadAxis; + /** + * offset 7 + */ + uint8_t pad; + /** + * offset 8 + */ + uint8_t loadBins[GPPWM_LOAD_COUNT]; + /** + * offset 16 + */ + uint8_t rpmBins[GPPWM_RPM_COUNT]; + /** + * offset 24 + */ + gppwm_table_t table; + /** total size 88*/ +}; + +typedef struct gppwm_channel gppwm_channel; + // start of air_pressure_sensor_config_s struct air_pressure_sensor_config_s { /** @@ -3049,7 +3104,11 @@ struct engine_configuration_s { /** * offset 4144 */ - int mainUnusedEnd[464]; + gppwm_channel gppwm[4]; + /** + * offset 4496 + */ + int mainUnusedEnd[376]; /** total size 6000*/ }; @@ -3352,4 +3411,4 @@ typedef struct persistent_config_s persistent_config_s; #endif // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:22:49 EDT 2020 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:03:45 EDT 2020 diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index d4ba6c4b5e..323d69c57a 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1046,6 +1046,97 @@ #define gpioPinModes8_offset_hex 303 #define gpioPinModes9_offset 772 #define gpioPinModes9_offset_hex 304 +#define gppwm1_dutyIfError_offset 4145 +#define gppwm1_dutyIfError_offset_hex 1031 +#define gppwm1_loadAxis_offset 4150 +#define gppwm1_loadAxis_offset_hex 1036 +#define gppwm1_loadBins_offset 4152 +#define gppwm1_loadBins_offset_hex 1038 +#define gppwm1_offBelowDuty_offset 4149 +#define gppwm1_offBelowDuty_offset_hex 1035 +#define gppwm1_offset 4144 +#define gppwm1_offset_hex 1030 +#define gppwm1_onAboveDuty_offset 4148 +#define gppwm1_onAboveDuty_offset_hex 1034 +#define gppwm1_pad_offset 4151 +#define gppwm1_pad_offset_hex 1037 +#define gppwm1_pin_offset 4144 +#define gppwm1_pin_offset_hex 1030 +#define gppwm1_pwmFrequency_offset 4146 +#define gppwm1_pwmFrequency_offset_hex 1032 +#define gppwm1_rpmBins_offset 4160 +#define gppwm1_rpmBins_offset_hex 1040 +#define gppwm1_table_offset 4168 +#define gppwm1_table_offset_hex 1048 +#define gppwm2_dutyIfError_offset 4233 +#define gppwm2_dutyIfError_offset_hex 1089 +#define gppwm2_loadAxis_offset 4238 +#define gppwm2_loadAxis_offset_hex 108e +#define gppwm2_loadBins_offset 4240 +#define gppwm2_loadBins_offset_hex 1090 +#define gppwm2_offBelowDuty_offset 4237 +#define gppwm2_offBelowDuty_offset_hex 108d +#define gppwm2_offset 4232 +#define gppwm2_offset_hex 1088 +#define gppwm2_onAboveDuty_offset 4236 +#define gppwm2_onAboveDuty_offset_hex 108c +#define gppwm2_pad_offset 4239 +#define gppwm2_pad_offset_hex 108f +#define gppwm2_pin_offset 4232 +#define gppwm2_pin_offset_hex 1088 +#define gppwm2_pwmFrequency_offset 4234 +#define gppwm2_pwmFrequency_offset_hex 108a +#define gppwm2_rpmBins_offset 4248 +#define gppwm2_rpmBins_offset_hex 1098 +#define gppwm2_table_offset 4256 +#define gppwm2_table_offset_hex 10a0 +#define gppwm3_dutyIfError_offset 4321 +#define gppwm3_dutyIfError_offset_hex 10e1 +#define gppwm3_loadAxis_offset 4326 +#define gppwm3_loadAxis_offset_hex 10e6 +#define gppwm3_loadBins_offset 4328 +#define gppwm3_loadBins_offset_hex 10e8 +#define gppwm3_offBelowDuty_offset 4325 +#define gppwm3_offBelowDuty_offset_hex 10e5 +#define gppwm3_offset 4320 +#define gppwm3_offset_hex 10e0 +#define gppwm3_onAboveDuty_offset 4324 +#define gppwm3_onAboveDuty_offset_hex 10e4 +#define gppwm3_pad_offset 4327 +#define gppwm3_pad_offset_hex 10e7 +#define gppwm3_pin_offset 4320 +#define gppwm3_pin_offset_hex 10e0 +#define gppwm3_pwmFrequency_offset 4322 +#define gppwm3_pwmFrequency_offset_hex 10e2 +#define gppwm3_rpmBins_offset 4336 +#define gppwm3_rpmBins_offset_hex 10f0 +#define gppwm3_table_offset 4344 +#define gppwm3_table_offset_hex 10f8 +#define gppwm4_dutyIfError_offset 4409 +#define gppwm4_dutyIfError_offset_hex 1139 +#define gppwm4_loadAxis_offset 4414 +#define gppwm4_loadAxis_offset_hex 113e +#define gppwm4_loadBins_offset 4416 +#define gppwm4_loadBins_offset_hex 1140 +#define gppwm4_offBelowDuty_offset 4413 +#define gppwm4_offBelowDuty_offset_hex 113d +#define gppwm4_offset 4408 +#define gppwm4_offset_hex 1138 +#define gppwm4_onAboveDuty_offset 4412 +#define gppwm4_onAboveDuty_offset_hex 113c +#define gppwm4_pad_offset 4415 +#define gppwm4_pad_offset_hex 113f +#define gppwm4_pin_offset 4408 +#define gppwm4_pin_offset_hex 1138 +#define gppwm4_pwmFrequency_offset 4410 +#define gppwm4_pwmFrequency_offset_hex 113a +#define gppwm4_rpmBins_offset 4424 +#define gppwm4_rpmBins_offset_hex 1148 +#define gppwm4_table_offset 4432 +#define gppwm4_table_offset_hex 1150 +#define gppwm_channel_e_enum "TPS", "MAP", "CLT", "IAT" +#define GPPWM_LOAD_COUNT 8 +#define GPPWM_RPM_COUNT 8 #define gps_rx_pin_offset 656 #define gps_rx_pin_offset_hex 290 #define gps_tx_pin_offset 657 @@ -1517,8 +1608,8 @@ #define mainRelayPin_offset_hex 2c2 #define mainRelayPinMode_offset 752 #define mainRelayPinMode_offset_hex 2f0 -#define mainUnusedEnd_offset 4144 -#define mainUnusedEnd_offset_hex 1030 +#define mainUnusedEnd_offset 4496 +#define mainUnusedEnd_offset_hex 1190 #define malfunctionIndicatorPin_offset 660 #define malfunctionIndicatorPin_offset_hex 294 #define malfunctionIndicatorPinMode_offset 661 diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index fc24a927ce..b4e15044b2 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -89,7 +89,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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:22:49 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:03:45 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2543,6 +2643,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@ -4080,6 +4181,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index 445720db0d..ecc3ecf6d9 100644 --- a/firmware/tunerstudio/rusefi_frankenso.ini +++ b/firmware/tunerstudio/rusefi_frankenso.ini @@ -89,7 +89,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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:25:23 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:05:20 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2543,6 +2643,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@ -4080,6 +4181,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName diff --git a/firmware/tunerstudio/rusefi_kinetis.ini b/firmware/tunerstudio/rusefi_kinetis.ini index 19cfae6186..3cd67ef635 100644 --- a/firmware/tunerstudio/rusefi_kinetis.ini +++ b/firmware/tunerstudio/rusefi_kinetis.ini @@ -89,7 +89,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 kineris_gen_config.bat integration/rusefi_config.txt Fri Apr 24 23:25:53 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Sat Apr 25 18:06:47 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PA16", "PA17", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PB16", "PB17", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC17", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PA16", "PA17", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PB16", "PB17", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC17", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PA16", "PA17", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PB16", "PB17", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC17", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PA16", "PA17", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PB16", "PB17", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PC16", "PC17", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", "TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2543,6 +2643,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@ -4081,6 +4182,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index 859e71b13b..554be8c139 100644 --- a/firmware/tunerstudio/rusefi_microrusefi.ini +++ b/firmware/tunerstudio/rusefi_microrusefi.ini @@ -89,7 +89,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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:24:18 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:04:38 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2536,6 +2636,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = std_separator @@ -4040,6 +4141,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index 088a612f6c..34a69a5345 100644 --- a/firmware/tunerstudio/rusefi_prometheus.ini +++ b/firmware/tunerstudio/rusefi_prometheus.ini @@ -89,7 +89,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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:25:43 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:06:03 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2543,6 +2643,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = std_separator @@ -4076,6 +4177,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName diff --git a/firmware/tunerstudio/rusefi_proteus.ini b/firmware/tunerstudio/rusefi_proteus.ini index 2e48dbfced..667750a6b2 100644 --- a/firmware/tunerstudio/rusefi_proteus.ini +++ b/firmware/tunerstudio/rusefi_proteus.ini @@ -89,7 +89,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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:25:50 EDT 2020 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:06:19 EDT 2020 pageSize = 20000 page = 1 @@ -1038,7 +1038,47 @@ page = 1 iacPidMultLoadBins = array, U08, 4124, [8], "Load", 1, 0.0, 0, 500.0, 2 iacPidMultRpmBins = array, U08, 4132, [8], "RPM", 50, 0, 0.0, 12000.0, 0 canVssNbcType = bits, U32, 4140, [0:7], "BMW_e46", "W202" -;no TS info - skipping mainUnusedEnd offset 4144 + gppwm1_pin = bits, U08, 4144, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm1_dutyIfError = scalar, U08, 4145, "%", 1, 0, 0, 100, 0 + gppwm1_pwmFrequency = scalar, U16, 4146, "hz", 1, 0, 0, 500, 0 + gppwm1_onAboveDuty = scalar, U08, 4148, "%", 1, 0, 0, 100, 0 + gppwm1_offBelowDuty = scalar, U08, 4149, "%", 1, 0, 0, 100, 0 + gppwm1_loadAxis = bits, U08, 4150, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm1_pad offset 4151 + gppwm1_loadBins = array, U08, 4152, [8], "load", 1, 0, 0.0, 250, 0 + gppwm1_rpmBins = array, U08, 4160, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm1_table = array, U08, 4168, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm2_pin = bits, U08, 4232, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm2_dutyIfError = scalar, U08, 4233, "%", 1, 0, 0, 100, 0 + gppwm2_pwmFrequency = scalar, U16, 4234, "hz", 1, 0, 0, 500, 0 + gppwm2_onAboveDuty = scalar, U08, 4236, "%", 1, 0, 0, 100, 0 + gppwm2_offBelowDuty = scalar, U08, 4237, "%", 1, 0, 0, 100, 0 + gppwm2_loadAxis = bits, U08, 4238, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm2_pad offset 4239 + gppwm2_loadBins = array, U08, 4240, [8], "load", 1, 0, 0.0, 250, 0 + gppwm2_rpmBins = array, U08, 4248, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm2_table = array, U08, 4256, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm3_pin = bits, U08, 4320, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm3_dutyIfError = scalar, U08, 4321, "%", 1, 0, 0, 100, 0 + gppwm3_pwmFrequency = scalar, U16, 4322, "hz", 1, 0, 0, 500, 0 + gppwm3_onAboveDuty = scalar, U08, 4324, "%", 1, 0, 0, 100, 0 + gppwm3_offBelowDuty = scalar, U08, 4325, "%", 1, 0, 0, 100, 0 + gppwm3_loadAxis = bits, U08, 4326, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm3_pad offset 4327 + gppwm3_loadBins = array, U08, 4328, [8], "load", 1, 0, 0.0, 250, 0 + gppwm3_rpmBins = array, U08, 4336, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm3_table = array, U08, 4344, [8x8], "duty", 1, 0, 0, 100, 0 + gppwm4_pin = bits, U08, 4408, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + gppwm4_dutyIfError = scalar, U08, 4409, "%", 1, 0, 0, 100, 0 + gppwm4_pwmFrequency = scalar, U16, 4410, "hz", 1, 0, 0, 500, 0 + gppwm4_onAboveDuty = scalar, U08, 4412, "%", 1, 0, 0, 100, 0 + gppwm4_offBelowDuty = scalar, U08, 4413, "%", 1, 0, 0, 100, 0 + gppwm4_loadAxis = bits, U08, 4414, [0:1], "TPS", "MAP", "CLT", "IAT" +;no TS info - skipping gppwm4_pad offset 4415 + gppwm4_loadBins = array, U08, 4416, [8], "load", 1, 0, 0.0, 250, 0 + gppwm4_rpmBins = array, U08, 4424, [8], "RPM", 50, 0, 0.0, 12000.0, 0 + gppwm4_table = array, U08, 4432, [8x8], "duty", 1, 0, 0, 100, 0 +;no TS info - skipping mainUnusedEnd offset 4496 warning_message = string, ASCII, 6000, 120 afterstartCoolantBins = array, F32, 6120, [8], "C", 1, 0, -100.0, 250.0, 0 afterstartHoldTime = array, F32, 6152, [8], "Seconds", 1, 0, 0, 100, 1 @@ -1259,6 +1299,30 @@ page = 1 triggerCompHystMin = "Trigger comparator hysteresis voltage (Min)" triggerCompHystMax = "Trigger comparator hysteresis voltage (Max)" triggerCompSensorSatRpm = "VR-sensor saturation RPM" + gppwm1_pin = "Select a pin to use for PWM or on-off output." + gppwm1_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm1_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm1_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm1_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm1_loadAxis = "Selects the load axis to use for the table." + gppwm2_pin = "Select a pin to use for PWM or on-off output." + gppwm2_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm2_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm2_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm2_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm2_loadAxis = "Selects the load axis to use for the table." + gppwm3_pin = "Select a pin to use for PWM or on-off output." + gppwm3_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm3_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm3_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm3_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm3_loadAxis = "Selects the load axis to use for the table." + gppwm4_pin = "Select a pin to use for PWM or on-off output." + gppwm4_dutyIfError = "If an error (with a sensor, etc) is detected, this value is used instead of reading from the table.\nThis should be a safe value for whatever hardware is connected to prevent damage." + gppwm4_pwmFrequency = "Select a frequency to run PWM at.\nSet this to 0hz to enable on-off mode." + gppwm4_onAboveDuty = "In on-off mode, turn the output on when the table value is above this duty." + gppwm4_offBelowDuty = "In on-off mode, turn the output off when the table value is below this duty." + gppwm4_loadAxis = "Selects the load axis to use for the table." ; CONFIG_DEFINITION_END @@ -1538,6 +1602,12 @@ fileVersion = { 20200310 } time = { timeNow } ; engineLoad = { fuleAlgorithm == 0 ? MAF : TPS } + ; These "synthetic" channels provide the Y-axis (load) value for gen purp PWM table's Y axes + gppwm1_load = {(gppwm1_loadAxis == 0) ? TPSValue : ((gppwm1_loadAxis == 1) ? MAPValue : ((gppwm1_loadAxis == 2) ? coolant : intake))} + gppwm2_load = {(gppwm2_loadAxis == 0) ? TPSValue : ((gppwm2_loadAxis == 1) ? MAPValue : ((gppwm2_loadAxis == 2) ? coolant : intake))} + gppwm3_load = {(gppwm3_loadAxis == 0) ? TPSValue : ((gppwm3_loadAxis == 1) ? MAPValue : ((gppwm3_loadAxis == 2) ? coolant : intake))} + gppwm4_load = {(gppwm4_loadAxis == 0) ? TPSValue : ((gppwm4_loadAxis == 1) ? MAPValue : ((gppwm4_loadAxis == 2) ? coolant : intake))} + [PcVariables] wueAfrTargetOffset = array, S16, [ 16], ":1", 0.1, 0.0, -3.0, 3.0, 1; wueAnalRecommend = array, U08, [ 16], "%", 1.00, 0.0, 100, 255.00, 0 @@ -2025,6 +2095,30 @@ fileVersion = { 20200310 } gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(Later)", "(Sooner)" + table = gppwm1Tbl, gppwm1Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm1_rpmBins, RPMValue + yBins = gppwm1_loadBins, gppwm1_load + zBins = gppwm1_table + + table = gppwm2Tbl, gppwm2Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm2_rpmBins, RPMValue + yBins = gppwm2_loadBins, gppwm2_load + zBins = gppwm2_table + + table = gppwm3Tbl, gppwm3Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm3_rpmBins, RPMValue + yBins = gppwm3_loadBins, gppwm3_load + zBins = gppwm3_table + + table = gppwm4Tbl, gppwm4Map, "", 1 + xyLabels = "RPM", "" + xBins = gppwm4_rpmBins, RPMValue + yBins = gppwm4_loadBins, gppwm4_load + zBins = gppwm4_table + [GaugeConfigurations] gaugeCategory = Sensors - Extra 2 @@ -2463,8 +2557,14 @@ menuDialog = main menu = "&Advanced" subMenu = boostDialog, "Boost Control" subMenu = boostPidDialog, "Closed Loop Boost", { boostType == 1 } - subMenu = mc33Dialog, "GDI Dreams" - subMenu = std_separator + + subMenu = std_separator + subMenu = gppwm1, "General Purpose PWM 1" + subMenu = gppwm2, "General Purpose PWM 2" + subMenu = gppwm3, "General Purpose PWM 3" + subMenu = gppwm4, "General Purpose PWM 4" + + subMenu = std_separator subMenu = fsioInputsDialog, "FSIO inputs" subMenu = auxPidDialog, "Aux PID" subMenu = fsioOutputsDialog, "FSIO outputs" @@ -2536,6 +2636,7 @@ menuDialog = main # EXPERIMENTAL FEATURES subMenu = parkingLot, "Experimental/Broken" subMenu = multisparkSettings, "Multispark", 0, {isIgnitionEnabled == 1} + subMenu = mc33Dialog, "GDI Dreams" subMenu = std_separator subMenu = std_separator @@ -4048,6 +4149,89 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" webHelp = "http://www.rusefi.com/" text = "" + dialog = gppwm1left, "" + field = "Pin", gppwm1_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm1_pwmFrequency, {gppwm1_pin != 0} + field = "" + field = "On above duty", gppwm1_onAboveDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Off below duty", gppwm1_offBelowDuty, {gppwm1_pin != 0 && gppwm1_pwmFrequency == 0} + field = "Duty if error", gppwm1_dutyIfError, {gppwm1_pin != 0} + field = "" + field = "Load Axis", gppwm1_loadAxis, {gppwm1_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm1, "General Purpose PWM 1", xAxis + panel = gppwm1left + panel = gppwm1Tbl, {gppwm1_pin != 0} + + dialog = gppwm2left, "" + field = "Pin", gppwm2_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm2_pwmFrequency, {gppwm2_pin != 0} + field = "" + field = "On above duty", gppwm2_onAboveDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Off below duty", gppwm2_offBelowDuty, {gppwm2_pin != 0 && gppwm2_pwmFrequency == 0} + field = "Duty if error", gppwm2_dutyIfError, {gppwm2_pin != 0} + field = "" + field = "Load Axis", gppwm2_loadAxis, {gppwm2_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm2, "General Purpose PWM 2", xAxis + panel = gppwm2left + panel = gppwm2Tbl, {gppwm2_pin != 0} + + dialog = gppwm3left, "" + field = "Pin", gppwm3_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm3_pwmFrequency, {gppwm3_pin != 0} + field = "" + field = "On above duty", gppwm3_onAboveDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Off below duty", gppwm3_offBelowDuty, {gppwm3_pin != 0 && gppwm3_pwmFrequency == 0} + field = "Duty if error", gppwm3_dutyIfError, {gppwm3_pin != 0} + field = "" + field = "Load Axis", gppwm3_loadAxis, {gppwm3_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm3, "General Purpose PWM 3", xAxis + panel = gppwm3left + panel = gppwm3Tbl, {gppwm3_pin != 0} + + dialog = gppwm4left, "" + field = "Pin", gppwm4_pin + field = "" + field = "Set frequency to 0hz for on-off mode" + field = "Frequency", gppwm4_pwmFrequency, {gppwm4_pin != 0} + field = "" + field = "On above duty", gppwm4_onAboveDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Off below duty", gppwm4_offBelowDuty, {gppwm4_pin != 0 && gppwm4_pwmFrequency == 0} + field = "Duty if error", gppwm4_dutyIfError, {gppwm4_pin != 0} + field = "" + field = "Load Axis", gppwm4_loadAxis, {gppwm4_pin != 0} + field = "" + field = "" + field = "" + field = "" + field = "" + + dialog = gppwm4, "General Purpose PWM 4", xAxis + panel = gppwm4left + panel = gppwm4Tbl, {gppwm4_pin != 0} [Tools] ;addTool = toolName, PanelName 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 caac298e07..13fe644f92 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 gen_config.bat integration\rusefi_config.txt Fri Apr 24 23:22:49 EDT 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sat Apr 25 18:03:45 EDT 2020 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -703,6 +703,74 @@ public class Fields { public static final int gpioPinModes8_offset_hex = 303; public static final int gpioPinModes9_offset = 772; public static final int gpioPinModes9_offset_hex = 304; + public static final int gppwm1_dutyIfError_offset = 4145; + public static final int gppwm1_dutyIfError_offset_hex = 1031; + public static final int gppwm1_loadAxis_offset = 4150; + public static final int gppwm1_loadAxis_offset_hex = 1036; + public static final int gppwm1_loadBins_offset = 4152; + public static final int gppwm1_loadBins_offset_hex = 1038; + public static final int gppwm1_offBelowDuty_offset = 4149; + public static final int gppwm1_offBelowDuty_offset_hex = 1035; + public static final int gppwm1_offset = 4144; + public static final int gppwm1_offset_hex = 1030; + public static final int gppwm1_onAboveDuty_offset = 4148; + public static final int gppwm1_onAboveDuty_offset_hex = 1034; + public static final int gppwm1_pad_offset = 4151; + public static final int gppwm1_pad_offset_hex = 1037; + public static final int gppwm1_pin_offset = 4144; + public static final int gppwm1_pin_offset_hex = 1030; + public static final int gppwm1_pwmFrequency_offset = 4146; + public static final int gppwm1_pwmFrequency_offset_hex = 1032; + public static final int gppwm1_rpmBins_offset = 4160; + public static final int gppwm1_rpmBins_offset_hex = 1040; + public static final int gppwm1_table_offset = 4168; + public static final int gppwm1_table_offset_hex = 1048; + public static final int gppwm2_dutyIfError_offset = 4233; + public static final int gppwm2_dutyIfError_offset_hex = 1089; + public static final int gppwm2_loadAxis_offset = 4238; + public static final int gppwm2_loadBins_offset = 4240; + public static final int gppwm2_loadBins_offset_hex = 1090; + public static final int gppwm2_offBelowDuty_offset = 4237; + public static final int gppwm2_offset = 4232; + public static final int gppwm2_offset_hex = 1088; + public static final int gppwm2_onAboveDuty_offset = 4236; + public static final int gppwm2_pad_offset = 4239; + public static final int gppwm2_pin_offset = 4232; + public static final int gppwm2_pin_offset_hex = 1088; + public static final int gppwm2_pwmFrequency_offset = 4234; + public static final int gppwm2_rpmBins_offset = 4248; + public static final int gppwm2_rpmBins_offset_hex = 1098; + public static final int gppwm2_table_offset = 4256; + public static final int gppwm3_dutyIfError_offset = 4321; + public static final int gppwm3_loadAxis_offset = 4326; + public static final int gppwm3_loadBins_offset = 4328; + public static final int gppwm3_offBelowDuty_offset = 4325; + public static final int gppwm3_offset = 4320; + public static final int gppwm3_onAboveDuty_offset = 4324; + public static final int gppwm3_pad_offset = 4327; + public static final int gppwm3_pin_offset = 4320; + public static final int gppwm3_pwmFrequency_offset = 4322; + public static final int gppwm3_rpmBins_offset = 4336; + public static final int gppwm3_table_offset = 4344; + public static final int gppwm4_dutyIfError_offset = 4409; + public static final int gppwm4_dutyIfError_offset_hex = 1139; + public static final int gppwm4_loadAxis_offset = 4414; + public static final int gppwm4_loadBins_offset = 4416; + public static final int gppwm4_loadBins_offset_hex = 1140; + public static final int gppwm4_offBelowDuty_offset = 4413; + public static final int gppwm4_offset = 4408; + public static final int gppwm4_offset_hex = 1138; + public static final int gppwm4_onAboveDuty_offset = 4412; + public static final int gppwm4_pad_offset = 4415; + public static final int gppwm4_pin_offset = 4408; + public static final int gppwm4_pin_offset_hex = 1138; + public static final int gppwm4_pwmFrequency_offset = 4410; + public static final int gppwm4_rpmBins_offset = 4424; + public static final int gppwm4_rpmBins_offset_hex = 1148; + public static final int gppwm4_table_offset = 4432; + public static final int gppwm4_table_offset_hex = 1150; + public static final int GPPWM_LOAD_COUNT = 8; + public static final int GPPWM_RPM_COUNT = 8; public static final int gps_rx_pin_offset = 656; public static final int gps_rx_pin_offset_hex = 290; public static final int gps_tx_pin_offset = 657; @@ -1001,8 +1069,8 @@ public class Fields { public static final int mafSensorType_offset = 948; public static final int mainRelayPin_offset = 706; public static final int mainRelayPinMode_offset = 752; - public static final int mainUnusedEnd_offset = 4144; - public static final int mainUnusedEnd_offset_hex = 1030; + public static final int mainUnusedEnd_offset = 4496; + public static final int mainUnusedEnd_offset_hex = 1190; public static final int malfunctionIndicatorPin_offset = 660; public static final int malfunctionIndicatorPin_offset_hex = 294; public static final int malfunctionIndicatorPinMode_offset = 661; @@ -2459,6 +2527,39 @@ public class Fields { public static final Field IDLERPMPID2_MAXVALUE = Field.create("IDLERPMPID2_MAXVALUE", 4058, FieldType.INT16); public static final Field IACPIDMULTTABLE = Field.create("IACPIDMULTTABLE", 4060, FieldType.INT); public static final Field CANVSSNBCTYPE = Field.create("CANVSSNBCTYPE", 4140, FieldType.INT); + public static final Field GPPWM1_PIN = Field.create("GPPWM1_PIN", 4144, FieldType.INT8, brain_pin_e); + public static final Field GPPWM1_DUTYIFERROR = Field.create("GPPWM1_DUTYIFERROR", 4145, FieldType.INT8); + public static final Field GPPWM1_PWMFREQUENCY = Field.create("GPPWM1_PWMFREQUENCY", 4146, FieldType.INT16); + public static final Field GPPWM1_ONABOVEDUTY = Field.create("GPPWM1_ONABOVEDUTY", 4148, FieldType.INT8); + public static final Field GPPWM1_OFFBELOWDUTY = Field.create("GPPWM1_OFFBELOWDUTY", 4149, FieldType.INT8); + public static final String[] gppwm_channel_e = {"TPS", "MAP", "CLT", "IAT"}; + public static final Field GPPWM1_LOADAXIS = Field.create("GPPWM1_LOADAXIS", 4150, FieldType.INT8, gppwm_channel_e); + public static final Field GPPWM1_PAD = Field.create("GPPWM1_PAD", 4151, FieldType.INT8); + public static final Field GPPWM1_TABLE = Field.create("GPPWM1_TABLE", 4168, FieldType.INT); + public static final Field GPPWM2_PIN = Field.create("GPPWM2_PIN", 4232, FieldType.INT8, brain_pin_e); + public static final Field GPPWM2_DUTYIFERROR = Field.create("GPPWM2_DUTYIFERROR", 4233, FieldType.INT8); + public static final Field GPPWM2_PWMFREQUENCY = Field.create("GPPWM2_PWMFREQUENCY", 4234, FieldType.INT16); + public static final Field GPPWM2_ONABOVEDUTY = Field.create("GPPWM2_ONABOVEDUTY", 4236, FieldType.INT8); + public static final Field GPPWM2_OFFBELOWDUTY = Field.create("GPPWM2_OFFBELOWDUTY", 4237, FieldType.INT8); + public static final Field GPPWM2_LOADAXIS = Field.create("GPPWM2_LOADAXIS", 4238, FieldType.INT8, gppwm_channel_e); + public static final Field GPPWM2_PAD = Field.create("GPPWM2_PAD", 4239, FieldType.INT8); + public static final Field GPPWM2_TABLE = Field.create("GPPWM2_TABLE", 4256, FieldType.INT); + public static final Field GPPWM3_PIN = Field.create("GPPWM3_PIN", 4320, FieldType.INT8, brain_pin_e); + public static final Field GPPWM3_DUTYIFERROR = Field.create("GPPWM3_DUTYIFERROR", 4321, FieldType.INT8); + public static final Field GPPWM3_PWMFREQUENCY = Field.create("GPPWM3_PWMFREQUENCY", 4322, FieldType.INT16); + public static final Field GPPWM3_ONABOVEDUTY = Field.create("GPPWM3_ONABOVEDUTY", 4324, FieldType.INT8); + public static final Field GPPWM3_OFFBELOWDUTY = Field.create("GPPWM3_OFFBELOWDUTY", 4325, FieldType.INT8); + public static final Field GPPWM3_LOADAXIS = Field.create("GPPWM3_LOADAXIS", 4326, FieldType.INT8, gppwm_channel_e); + public static final Field GPPWM3_PAD = Field.create("GPPWM3_PAD", 4327, FieldType.INT8); + public static final Field GPPWM3_TABLE = Field.create("GPPWM3_TABLE", 4344, FieldType.INT); + public static final Field GPPWM4_PIN = Field.create("GPPWM4_PIN", 4408, FieldType.INT8, brain_pin_e); + public static final Field GPPWM4_DUTYIFERROR = Field.create("GPPWM4_DUTYIFERROR", 4409, FieldType.INT8); + public static final Field GPPWM4_PWMFREQUENCY = Field.create("GPPWM4_PWMFREQUENCY", 4410, FieldType.INT16); + public static final Field GPPWM4_ONABOVEDUTY = Field.create("GPPWM4_ONABOVEDUTY", 4412, FieldType.INT8); + public static final Field GPPWM4_OFFBELOWDUTY = Field.create("GPPWM4_OFFBELOWDUTY", 4413, FieldType.INT8); + public static final Field GPPWM4_LOADAXIS = Field.create("GPPWM4_LOADAXIS", 4414, FieldType.INT8, gppwm_channel_e); + public static final Field GPPWM4_PAD = Field.create("GPPWM4_PAD", 4415, FieldType.INT8); + public static final Field GPPWM4_TABLE = Field.create("GPPWM4_TABLE", 4432, FieldType.INT); public static final Field WARNING_MESSAGE = Field.create("WARNING_MESSAGE", 6000, FieldType.INT); public static final Field BOOSTTABLEOPENLOOP = Field.create("BOOSTTABLEOPENLOOP", 6248, FieldType.INT); public static final Field BOOSTTABLECLOSEDLOOP = Field.create("BOOSTTABLECLOSEDLOOP", 6328, FieldType.INT); @@ -3378,6 +3479,38 @@ public class Fields { IDLERPMPID2_MAXVALUE, IACPIDMULTTABLE, CANVSSNBCTYPE, + GPPWM1_PIN, + GPPWM1_DUTYIFERROR, + GPPWM1_PWMFREQUENCY, + GPPWM1_ONABOVEDUTY, + GPPWM1_OFFBELOWDUTY, + GPPWM1_LOADAXIS, + GPPWM1_PAD, + GPPWM1_TABLE, + GPPWM2_PIN, + GPPWM2_DUTYIFERROR, + GPPWM2_PWMFREQUENCY, + GPPWM2_ONABOVEDUTY, + GPPWM2_OFFBELOWDUTY, + GPPWM2_LOADAXIS, + GPPWM2_PAD, + GPPWM2_TABLE, + GPPWM3_PIN, + GPPWM3_DUTYIFERROR, + GPPWM3_PWMFREQUENCY, + GPPWM3_ONABOVEDUTY, + GPPWM3_OFFBELOWDUTY, + GPPWM3_LOADAXIS, + GPPWM3_PAD, + GPPWM3_TABLE, + GPPWM4_PIN, + GPPWM4_DUTYIFERROR, + GPPWM4_PWMFREQUENCY, + GPPWM4_ONABOVEDUTY, + GPPWM4_OFFBELOWDUTY, + GPPWM4_LOADAXIS, + GPPWM4_PAD, + GPPWM4_TABLE, WARNING_MESSAGE, BOOSTTABLEOPENLOOP, BOOSTTABLECLOSEDLOOP,