Merge remote-tracking branch 'origin/master'

This commit is contained in:
rusefi 2020-05-06 19:11:10 -04:00
commit a2a1187f5f
51 changed files with 746 additions and 421 deletions

View File

@ -24,7 +24,7 @@ jobs:
- build-target: frankenso-pal
efi-cpu: ARCH_STM32F4
efi-board: st_stm32f4
target-extra-params: -DHAL_TRIGGER_USE_PAL=TRUE -DHAL_USE_ICU=FALSE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE
target-extra-params: -DHAL_TRIGGER_USE_PAL=TRUE -DEFI_ICU_INPUTS=FALSE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE
- build-target: mre-f4
efi-cpu: ARCH_STM32F4

View File

@ -26,6 +26,7 @@ java ^
-definition integration/rusefi_config.txt ^
-ts_destination tunerstudio ^
-tool kineris_gen_config.bat ^
-firing_order controllers/algo/firing_order.h ^
-with_c_defines false ^
-initialize_to_zero false ^
-ts_output_name rusefi_kinetis.ini ^

View File

@ -516,8 +516,6 @@ case Force_4_bytes_size_engine_load_mode:
return "Force_4_bytes_size_engine_load_mode";
case LM_ALPHA_N:
return "LM_ALPHA_N";
case LM_MAP:
return "LM_MAP";
case LM_PLAIN_MAF:
return "LM_PLAIN_MAF";
case LM_REAL_MAF:

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Sun May 03 03:40:24 EDT 2020
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Wed May 06 12:33:00 EDT 2020
// by class com.rusefi.output.CHeaderConsumer
// begin
#ifndef CONFIG_BOARDS_KINETIS_CONFIG_CONTROLLERS_ALGO_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H
@ -1894,7 +1894,15 @@ struct engine_configuration_s {
/**
* offset 1096
*/
int unusedAtOldBoardConfigurationEnd[92];
vehicle_info_t engineMake;
/**
* offset 1128
*/
vehicle_info_t engineCode;
/**
* offset 1160
*/
int unusedAtOldBoardConfigurationEnd[76];
/**
offset 1464 bit 0 */
bool vvtDisplayInverted : 1;
@ -3166,7 +3174,7 @@ struct persistent_config_s {
/**
* offset 6312
*/
uint8_t boostMapBins[BOOST_LOAD_COUNT];
uint8_t unused6312[8];
/**
* offset 6320
*/
@ -3431,4 +3439,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 Sun May 03 03:40:24 EDT 2020
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Wed May 06 12:33:00 EDT 2020

View File

@ -291,8 +291,6 @@
#define boostControlPinMode_offset_hex 3dd
#define boostCutPressure_offset 2132
#define boostCutPressure_offset_hex 854
#define boostMapBins_offset 6312
#define boostMapBins_offset_hex 18a8
#define boostPid_dFactor_offset 1000
#define boostPid_dFactor_offset_hex 3e8
#define boostPid_iFactor_offset 996
@ -554,10 +552,12 @@
#define enableLaunchRetard_offset_hex 3d0
#define enableVerboseCanTx_offset 744
#define enableVerboseCanTx_offset_hex 2e8
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
#define ENGINE_NOISE_CURVE_SIZE 8
#define engineChartSize_offset 1480
#define engineChartSize_offset_hex 5c8
#define engineCode_offset 1128
#define engineCode_offset_hex 468
#define engineConfiguration_offset 0
#define engineConfiguration_offset_hex 0
#define engineLoadAccelEnrichmentMultiplier_offset 2072
@ -570,6 +570,8 @@
#define engineLoadDecelEnleanmentMultiplier_offset_hex 810
#define engineLoadDecelEnleanmentThreshold_offset 2060
#define engineLoadDecelEnleanmentThreshold_offset_hex 80c
#define engineMake_offset 1096
#define engineMake_offset_hex 448
#define engineSnifferRpmThreshold_offset 4
#define engineSnifferRpmThreshold_offset_hex 4
#define engineType_offset 0
@ -1356,17 +1358,6 @@
#define ignitionMode_offset_hex 1b8
#define ignitionOffset_offset 444
#define ignitionOffset_offset_hex 1bc
#define ignitionPin10logic
#define ignitionPin11logic
#define ignitionPin12logic
#define ignitionPin2logic || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12))
#define ignitionPin3logic || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9))
#define ignitionPin4logic || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12))
#define ignitionPin5logic || ((firingOrder == 4) || (firingOrder == 12))
#define ignitionPin6logic
#define ignitionPin7logic || ((firingOrder == 11))
#define ignitionPin8logic || ((firingOrder == 5) || (firingOrder == 11))
#define ignitionPin9logic
#define ignitionPinMode_offset 649
#define ignitionPinMode_offset_hex 289
#define ignitionPins10_offset 645
@ -2276,6 +2267,8 @@
#define unused1476b20_offset_hex 5c4
#define unused2432_offset 2432
#define unused2432_offset_hex 980
#define unused6312_offset 6312
#define unused6312_offset_hex 18a8
#define unused711_offset 711
#define unused711_offset_hex 2c7
#define unused76b0_offset 76
@ -2302,8 +2295,8 @@
#define unused_former_warmup_target_afr_offset_hex 834
#define unusedAntilagTimeout_offset 820
#define unusedAntilagTimeout_offset_hex 334
#define unusedAtOldBoardConfigurationEnd_offset 1096
#define unusedAtOldBoardConfigurationEnd_offset_hex 448
#define unusedAtOldBoardConfigurationEnd_offset 1160
#define unusedAtOldBoardConfigurationEnd_offset_hex 488
#define unusedBit4_1476_offset 1476
#define unusedBit4_1476_offset_hex 5c4
#define unusedBit_251_10_offset 976
@ -2453,6 +2446,7 @@
#define vbattAdcChannel_offset_hex 201
#define vbattDividerCoeff_offset 464
#define vbattDividerCoeff_offset_hex 1d0
#define VEHICLE_INFO_SIZE 32
#define vehicleSpeedCoef_offset 476
#define vehicleSpeedCoef_offset_hex 1dc
#define vehicleSpeedSensorInputPin_offset 968

View File

@ -24,4 +24,4 @@ endif
# Override DEFAULT_ENGINE_TYPE
DDEFS += $(MCU_DEFS) -DEFI_USE_OSC=TRUE -DEFI_FATAL_ERROR_PIN=GPIOE_3 -DFIRMWARE_ID=\"proteus\" -DDEFAULT_ENGINE_TYPE=PROTEUS -DUSE_ADC3_VBATT_HACK -DSTM32_ADC_USE_ADC3=TRUE -DEFI_INCLUDE_ENGINE_PRESETS=FALSE
DDEFS += $(MCU_DEFS) -DEFI_USE_OSC=TRUE -DEFI_FATAL_ERROR_PIN=GPIOE_3 -DFIRMWARE_ID=\"proteus\" -DDEFAULT_ENGINE_TYPE=PROTEUS -DUSE_ADC3_VBATT_HACK -DSTM32_ADC_USE_ADC3=TRUE -DEFI_INCLUDE_ENGINE_PRESETS=FALSE -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE -DEFI_VEHICLE_SPEED=FALSE -DEFI_LOGIC_ANALYZER=FALSE

View File

@ -20,62 +20,12 @@
EXTERN_CONFIG;
static const fuel_table_t default_139qmb_fuel_table = {
{ 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000 }, { 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000 }, { 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000 }, { 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000 }, { 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000 },
{ 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000 }, { 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000 }, { 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000 }, { 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000 }, { 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000 }, { 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000 }, { 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000 }, { 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000 }, { 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000 }, { 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000 }, { 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000, 6.000000, 6.000000, 6.000000, 6.000000, 6.000000,
6.000000 }
};
static void setDefault139qmbMaps(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
setFuelLoadBin(1.2, 4.4 PASS_CONFIG_PARAMETER_SUFFIX);
setFuelRpmBin(1000, 11000 PASS_CONFIG_PARAMETER_SUFFIX);
setTimingLoadBin(1.2, 4.4 PASS_CONFIG_PARAMETER_SUFFIX);
setTimingRpmBin(1000, 11000 PASS_CONFIG_PARAMETER_SUFFIX);
copyFuelTable(default_139qmb_fuel_table, config->fuelTable);
//copyTimingTable(default_139qmb_timing_table, config->ignitionTable);
}
void setGy6139qmbDefaultEngineConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
@ -87,7 +37,6 @@ void setGy6139qmbDefaultEngineConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE)
engineConfiguration->cranking.rpm = 1100;
setTargetRpmCurve(2000 PASS_CONFIG_PARAMETER_SUFFIX);
engineConfiguration->analogInputDividerCoefficient = 1;
engineConfiguration->fuelAlgorithm = LM_MAP;
engineConfiguration->globalTriggerAngleOffset = 45;
engineConfiguration->sensorChartMode = SC_MAP;
engineConfiguration->specs.displacement = 0.072; // 72cc

View File

@ -78,7 +78,6 @@
// todo: start using consoleUartDevice? Not sure
#undef EFI_CONSOLE_SERIAL_DEVICE
#define EFI_CONSOLE_SERIAL_DEVICE (&SD3)
// todo: our "DMA-half" ChibiOS patch not implemented for USARTv2/STM32F7
#undef TS_UART_DMA_MODE

View File

@ -18,9 +18,7 @@
#include "io_pins.h"
#include "engine_configuration.h"
#include "pwm_generator_logic.h"
#include "pid.h"
#include "engine_controller.h"
#include "periodic_task.h"
#include "pin_repository.h"
#include "pwm_generator_logic.h"
#include "pid_auto_tune.h"
@ -37,96 +35,129 @@ static Logging *logger;
static boostOpenLoop_Map3D_t boostMapOpen("boostmapopen", 1);
static boostOpenLoop_Map3D_t boostMapClosed("boostmapclosed", 1);
static SimplePwm boostPwmControl("boost");
static Pid boostControlPid;
static bool shouldResetPid = false;
void BoostController::init(SimplePwm* pwm, const ValueProvider3D* openLoopMap, const ValueProvider3D* closedLoopTargetMap, pid_s* pidParams) {
m_pwm = pwm;
m_openLoopMap = openLoopMap;
m_closedLoopTargetMap = closedLoopTargetMap;
m_pid.initPidClass(pidParams);
}
void BoostController::reset() {
m_shouldResetPid = true;
}
void BoostController::onConfigurationChange(pid_s* previousConfiguration) {
if (!m_pid.isSame(previousConfiguration)) {
m_shouldResetPid = true;
}
}
int BoostController::getPeriodMs() {
return GET_PERIOD_LIMITED(&engineConfiguration->boostPid);
}
expected<float> BoostController::observePlant() const {
float map = getMap(PASS_ENGINE_PARAMETER_SIGNATURE);
if (cisnan(map)) {
return unexpected;
}
return map;
}
expected<float> BoostController::getSetpoint() const {
float rpm = GET_RPM();
auto tps = Sensor::get(SensorType::DriverThrottleIntent);
if (!tps) {
return unexpected;
}
if (!m_closedLoopTargetMap) {
return unexpected;
}
return m_closedLoopTargetMap->getValue(rpm / RPM_1_BYTE_PACKING_MULT, tps.Value / TPS_1_BYTE_PACKING_MULT) * LOAD_1_BYTE_PACKING_MULT;
}
expected<percent_t> BoostController::getOpenLoop(float target) const {
// Boost control open loop doesn't care about target - only MAP/RPM
UNUSED(target);
float rpm = GET_RPM();
auto tps = Sensor::get(SensorType::DriverThrottleIntent);
if (!tps) {
return unexpected;
}
if (!m_openLoopMap) {
return unexpected;
}
percent_t openLoop = m_openLoopMap->getValue(rpm / RPM_1_BYTE_PACKING_MULT, tps.Value / TPS_1_BYTE_PACKING_MULT) * LOAD_1_BYTE_PACKING_MULT;
#if EFI_TUNER_STUDIO
extern TunerStudioOutputChannels tsOutputChannels;
#endif /* EFI_TUNER_STUDIO */
if (engineConfiguration->debugMode == DBG_BOOST) {
tsOutputChannels.debugFloatField1 = openLoop;
}
#endif
static void pidReset(void) {
boostControlPid.reset();
return openLoop;
}
class BoostControl: public PeriodicTimerController {
DECLARE_ENGINE_PTR;
int getPeriodMs() override {
return GET_PERIOD_LIMITED(&engineConfiguration->boostPid);
expected<percent_t> BoostController::getClosedLoop(float target, float manifoldPressure) {
// If we're in open loop only mode, make no closed loop correction.
if (engineConfiguration->boostType != CLOSED_LOOP) {
return 0;
}
void PeriodicTask() override {
if (shouldResetPid) {
pidReset();
shouldResetPid = false;
}
// Reset PID if requested
if (m_shouldResetPid) {
m_pid.reset();
m_shouldResetPid = false;
}
float rpm = GET_RPM_VALUE;
float mapValue = getMap(PASS_ENGINE_PARAMETER_SIGNATURE);
// If the engine isn't running, don't correct.
if (GET_RPM() == 0) {
m_pid.reset();
return 0;
}
if (!engineConfiguration->isBoostControlEnabled)
return;
float closedLoop = m_pid.getOutput(target, manifoldPressure);
bool engineRunning = rpm > engineConfiguration->cranking.rpm;
if (!engineRunning) {
boostControlPid.reset();
return;
}
percent_t openLoopDuty = boostMapOpen.getValue(rpm / RPM_1_BYTE_PACKING_MULT, mapValue / LOAD_1_BYTE_PACKING_MULT) * LOAD_1_BYTE_PACKING_MULT;
percent_t closedLoopDuty = 0;
percent_t duty = openLoopDuty;
if (engineConfiguration->boostType == CLOSED_LOOP) {
auto [valid, tps] = Sensor::get(SensorType::DriverThrottleIntent);
if (valid) {
float targetBoost = boostMapClosed.getValue(rpm / RPM_1_BYTE_PACKING_MULT, tps / TPS_1_BYTE_PACKING_MULT) * LOAD_1_BYTE_PACKING_MULT;
closedLoopDuty = openLoopDuty + boostControlPid.getOutput(targetBoost, mapValue);
duty += closedLoopDuty;
}
}
boostControlPid.iTermMin = -50;
boostControlPid.iTermMax = 50;
if (engineConfiguration->debugMode == DBG_BOOST) {
#if EFI_TUNER_STUDIO
boostControlPid.postState(&tsOutputChannels);
tsOutputChannels.debugFloatField1 = openLoopDuty;
tsOutputChannels.debugFloatField7 = closedLoopDuty;
if (engineConfiguration->debugMode == DBG_BOOST) {
m_pid.postState(&tsOutputChannels);
tsOutputChannels.debugFloatField2 = closedLoop;
}
#endif /* EFI_TUNER_STUDIO */
}
#if EFI_LAUNCH_CONTROL
if (engine->setLaunchBoostDuty) {
duty = engineConfiguration->launchBoostDuty;
return closedLoop;
}
void BoostController::setOutput(expected<float> output) {
// TODO: hook up safe duty cycle
float duty = PERCENT_TO_DUTY(output.value_or(/*CONFIG(boostControlSafeDutyCycle)*/ 0));
if (m_pwm) {
m_pwm->setSimplePwmDutyCycle(duty);
}
#endif /* EFI_LAUNCH_CONTROL */
boostPwmControl.setSimplePwmDutyCycle(PERCENT_TO_DUTY(duty));
}
};
static BoostControl BoostController;
#if !EFI_UNIT_TEST
void setBoostPFactor(float value) {
engineConfiguration->boostPid.pFactor = value;
boostControlPid.reset();
}
void setBoostIFactor(float value) {
engineConfiguration->boostPid.iFactor = value;
boostControlPid.reset();
void BoostController::PeriodicTask() {
m_pid.iTermMin = -50;
m_pid.iTermMax = 50;
update();
}
void setBoostDFactor(float value) {
engineConfiguration->boostPid.dFactor = value;
boostControlPid.reset();
}
#endif /* EFI_UNIT_TEST */
BoostController boostController;
void setDefaultBoostParameters(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
engineConfiguration->isBoostControlEnabled = true;
@ -141,22 +172,17 @@ void setDefaultBoostParameters(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
engineConfiguration->boostControlPinMode = OM_DEFAULT;
setLinearCurve(config->boostRpmBins, 0, 8000 / RPM_1_BYTE_PACKING_MULT, 1);
setLinearCurve(config->boostMapBins, 0, 300 / LOAD_1_BYTE_PACKING_MULT, 1);
for (int loadIndex = 0;loadIndex<BOOST_LOAD_COUNT;loadIndex++) {
for (int rpmIndex = 0;rpmIndex<BOOST_RPM_COUNT;rpmIndex++) {
config->boostTableOpenLoop[loadIndex][rpmIndex] = config->boostMapBins[loadIndex];
}
}
setLinearCurve(config->boostTpsBins, 0, 100 / TPS_1_BYTE_PACKING_MULT, 1);
for (int loadIndex = 0;loadIndex<BOOST_LOAD_COUNT;loadIndex++) {
for (int rpmIndex = 0;rpmIndex<BOOST_RPM_COUNT;rpmIndex++) {
for (int loadIndex = 0; loadIndex < BOOST_LOAD_COUNT; loadIndex++) {
for (int rpmIndex = 0; rpmIndex < BOOST_RPM_COUNT; rpmIndex++) {
config->boostTableOpenLoop[loadIndex][rpmIndex] = config->boostTpsBins[loadIndex];
config->boostTableClosedLoop[loadIndex][rpmIndex] = config->boostTpsBins[loadIndex];
}
}
}
static void turnBoostPidOn() {
void startBoostPin() {
#if !EFI_UNIT_TEST
if (CONFIG(boostControlPin) == GPIO_UNASSIGNED){
return;
@ -174,18 +200,14 @@ static void turnBoostPidOn() {
#endif /* EFI_UNIT_TEST */
}
void startBoostPin(void) {
turnBoostPidOn();
}
void stopBoostPin(void) {
void stopBoostPin() {
#if !EFI_UNIT_TEST
brain_pin_markUnused(activeConfiguration.boostControlPin);
#endif /* EFI_UNIT_TEST */
}
void onConfigurationChangeBoostCallback(engine_configuration_s *previousConfiguration) {
shouldResetPid = !boostControlPid.isSame(&previousConfiguration->boostPid);
boostController.onConfigurationChange(&previousConfiguration->boostPid);
}
void initBoostCtrl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
@ -195,15 +217,18 @@ void initBoostCtrl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
}
#endif
boostControlPid.initPidClass(&engineConfiguration->boostPid);
logger = sharedLogger;
boostMapOpen.init(config->boostTableOpenLoop, config->boostMapBins, config->boostRpmBins);
// Set up open & closed loop tables
boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins);
boostMapClosed.init(config->boostTableClosedLoop, config->boostTpsBins, config->boostRpmBins);
boostControlPid.reset();
// Set up boost controller instance
boostController.init(&boostPwmControl, &boostMapOpen, &boostMapClosed, &engineConfiguration->boostPid);
#if !EFI_UNIT_TEST
startBoostPin();
BoostController.Start();
boostController.Start();
#endif
}

View File

@ -8,13 +8,46 @@
#include "engine.h"
#include "periodic_task.h"
#include "closed_loop_controller.h"
#include "pid.h"
void startBoostPin(void);
void stopBoostPin(void);
class SimplePwm;
class BoostController : public ClosedLoopController<float, percent_t>, public PeriodicTimerController {
public:
DECLARE_ENGINE_PTR;
void init(SimplePwm* pmw, const ValueProvider3D* openLoopMap, const ValueProvider3D* closedLoopTargetMap, pid_s* pidParams);
// PeriodicTimerController implementation
int getPeriodMs() override;
void PeriodicTask() override;
void reset();
// Called when the configuration may have changed. Controller will
// reset if necessary.
void onConfigurationChange(pid_s* previousConfiguration);
// Helpers for individual parts of boost control
expected<float> observePlant() const override;
expected<float> getSetpoint() const override;
expected<percent_t> getOpenLoop(float target) const override;
expected<percent_t> getClosedLoop(float target, float manifoldPressure) override;
void setOutput(expected<percent_t> outputValue) override;
private:
bool m_shouldResetPid = false;
Pid m_pid;
const ValueProvider3D* m_openLoopMap = nullptr;
const ValueProvider3D* m_closedLoopTargetMap = nullptr;
SimplePwm* m_pwm = nullptr;
};
void startBoostPin();
void stopBoostPin();
void initBoostCtrl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX);
void setBoostPFactor(float p);
void setBoostIFactor(float i);
void setBoostDFactor(float d);
void setDefaultBoostParameters(DECLARE_CONFIG_PARAMETER_SIGNATURE);
void showBoostInfo(void);
void onConfigurationChangeBoostCallback(engine_configuration_s *previousConfiguration);

View File

@ -222,29 +222,59 @@ expected<percent_t> EtbController::getClosedLoopAutotune(percent_t actualThrottl
// Publish to TS state
#if EFI_TUNER_STUDIO
// Amplitude of input (duty cycle %)
float b = 2 * autotuneAmplitude;
// Ultimate gain per A-H relay tuning rule
float ku = 4 * b / (3.14159f * m_a);
// The multipliers below are somewhere near the "no overshoot"
// and "some overshoot" flavors of the Ziegler-Nichols method
// Kp
float kp = 0.35f * ku;
float ki = 0.25f * ku / m_tu;
float kd = 0.08f * ku * m_tu;
// Every 5 cycles (of the throttle), cycle to the next value
if (m_autotuneCounter == 5) {
m_autotuneCounter = 0;
m_autotuneCurrentParam++;
if (m_autotuneCurrentParam >= 3) {
m_autotuneCurrentParam = 0;
}
}
m_autotuneCounter++;
// Multiplex 3 signals on to the {mode, value} format
tsOutputChannels.calibrationMode = static_cast<TsCalMode>(m_autotuneCurrentParam + 3);
switch (m_autotuneCurrentParam) {
case 0:
tsOutputChannels.calibrationValue = kp;
break;
case 1:
tsOutputChannels.calibrationValue = ki;
break;
case 2:
tsOutputChannels.calibrationValue = kd;
break;
}
// Also output to debug channels if configured
if (engineConfiguration->debugMode == DBG_ETB_AUTOTUNE) {
// a - amplitude of output (TPS %)
tsOutputChannels.debugFloatField1 = m_a;
float b = 2 * autotuneAmplitude;
// b - amplitude of input (Duty cycle %)
tsOutputChannels.debugFloatField2 = b;
// Tu - oscillation period (seconds)
tsOutputChannels.debugFloatField3 = m_tu;
// Ultimate gain per A-H relay tuning rule
// Ku
float ku = 4 * b / (3.14159f * m_a);
tsOutputChannels.debugFloatField4 = ku;
// The multipliers below are somewhere near the "no overshoot"
// and "some overshoot" flavors of the Ziegler-Nichols method
// Kp
tsOutputChannels.debugFloatField5 = 0.35f * ku;
// Ki
tsOutputChannels.debugFloatField6 = 0.25f * ku / m_tu;
// Kd
tsOutputChannels.debugFloatField7 = 0.08f * ku * m_tu;
tsOutputChannels.debugFloatField5 = kp;
tsOutputChannels.debugFloatField6 = ki;
tsOutputChannels.debugFloatField7 = kd;
}
#endif
}

View File

@ -88,8 +88,14 @@ private:
efitick_t m_cycleStartTime = 0;
float m_minCycleTps = 0;
float m_maxCycleTps = 0;
float m_a = 0;
float m_tu = 0;
// Autotune measured parameters: gain and ultimate period
// These are set to correct order of magnitude starting points
// so we converge more quickly on the correct values
float m_a = 8;
float m_tu = 0.1f;
uint8_t m_autotuneCounter = 0;
uint8_t m_autotuneCurrentParam = 0;
};
void initElectronicThrottle(DECLARE_ENGINE_PARAMETER_SIGNATURE);

View File

@ -368,8 +368,7 @@ float getInitialAdvance(int rpm, float map, float advanceMax) {
* this method builds a good-enough base timing advance map bases on a number of heuristics
*/
void buildTimingMap(float advanceMax DECLARE_CONFIG_PARAMETER_SUFFIX) {
if (engineConfiguration->fuelAlgorithm != LM_SPEED_DENSITY &&
engineConfiguration->fuelAlgorithm != LM_MAP) {
if (engineConfiguration->fuelAlgorithm != LM_SPEED_DENSITY) {
warning(CUSTOM_WRONG_ALGORITHM, "wrong algorithm for MAP-based timing");
return;
}

View File

@ -660,8 +660,6 @@ case Force_4_bytes_size_engine_load_mode:
return "Force_4_bytes_size_engine_load_mode";
case LM_ALPHA_N:
return "LM_ALPHA_N";
case LM_MAP:
return "LM_MAP";
case LM_PLAIN_MAF:
return "LM_PLAIN_MAF";
case LM_REAL_MAF:

View File

@ -145,6 +145,8 @@ void Engine::periodicSlowCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
cylinderCleanupControl(PASS_ENGINE_PARAMETER_SIGNATURE);
standardAirCharge = getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE);
#if (BOARD_TLE8888_COUNT > 0)
if (CONFIG(useTLE8888_cranking_hack) && ENGINE(rpmCalculator).isCranking(PASS_ENGINE_PARAMETER_SIGNATURE)) {
efitick_t nowNt = getTimeNowNt();

View File

@ -216,6 +216,9 @@ public:
*/
floatms_t actualLastInjection = 0;
// Standard cylinder air charge - 100% VE at standard temperature, grams per cylinder
float standardAirCharge = 0;
void periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void periodicSlowCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void updateSlowSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE);

View File

@ -35,6 +35,8 @@ typedef enum {
FO_1_2_3_4_5_6 = 9,
FO_1_6_3_2_5_4 = 13, // EG33
// todo: one day we shall support 7 cylinder radial, probably not before one actually approaches us
// 8 cylinder
FO_1_8_4_3_6_5_7_2 = 5,
FO_1_8_7_2_6_5_4_3 = 11,
@ -43,6 +45,7 @@ typedef enum {
FO_1_3_7_2_6_5_4_8 = 20, // Ford 5.0 HO and 351W
// 9 cylinder - for instance radial :)
// PS: Matt says that 9cyl is actually 1-3-5-7-9-2-4-6-8 or 1-8-6-4-2-9-7-5-3 for reverse rotation
FO_1_2_3_4_5_6_7_8_9 = 21,
// 10 cylinder

View File

@ -163,11 +163,9 @@ float getRealMafFuel(float airSpeed, int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
float halfCylCount = CONFIG(specs.cylindersCount) / 2.0f;
float cylinderAirmass = airPerRevolution / halfCylCount;
//Calculation of 100% VE air mass in g/rev - 1 cylinder filling at 1.2929g/L
float StandardAirCharge = CONFIG(specs.displacement) / CONFIG(specs.cylindersCount) * 1.2929;
//Create % load for fuel table using relative naturally aspiratedcylinder filling
float airChargeLoad = 100 * cylinderAirmass/StandardAirCharge;
float airChargeLoad = 100 * cylinderAirmass / ENGINE(standardAirCharge);
//Correct air mass by VE table
float corrCylAirmass = cylinderAirmass * veMap.getValue(rpm, airChargeLoad) / 100;
@ -452,6 +450,15 @@ floatms_t getCrankingFuel(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
return getCrankingFuel3(Sensor::get(SensorType::Clt).value_or(20),
engine->rpmCalculator.getRevolutionCounterSinceStart() PASS_ENGINE_PARAMETER_SUFFIX);
}
float getStandardAirCharge(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
float totalDisplacement = CONFIG(specs.displacement);
float cylDisplacement = totalDisplacement / CONFIG(specs.cylindersCount);
// Calculation of 100% VE air mass in g/cyl - 1 cylinder filling at 1.204/L - air density at 20C
return cylDisplacement * 1.204f;
}
#endif
float getFuelRate(floatms_t totalInjDuration, efitick_t timePeriod DECLARE_ENGINE_PARAMETER_SUFFIX) {

View File

@ -37,5 +37,7 @@ floatms_t getCrankingFuel3(float coolantTemperature, uint32_t revolutionCounterS
floatms_t getInjectionDuration(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX);
percent_t getInjectorDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX);
float getStandardAirCharge(DECLARE_ENGINE_PARAMETER_SIGNATURE);
// convert injection duration (Ms/Nt) to fuel rate (L/h)
float getFuelRate(floatms_t totalInjDuration, efitick_t timePeriod DECLARE_ENGINE_PARAMETER_SUFFIX);

View File

@ -405,10 +405,6 @@ typedef enum {
* Throttle Position Sensor value is used as engine load. http://en.wikipedia.org/wiki/Throttle_position_sensor
*/
LM_ALPHA_N = 1,
/**
* raw Manifold Absolute Pressure sensor value is used as engine load http://en.wikipedia.org/wiki/MAP_sensor
*/
LM_MAP = 2,
/**
* Speed Density algorithm - Engine Load is a function of MAP, VE and target AFR
* http://articles.sae.org/8539/

View File

@ -83,6 +83,8 @@ typedef void (*Void)(void);
typedef char error_message_t[ERROR_BUFFER_SIZE];
typedef char vehicle_info_t[VEHICLE_INFO_SIZE];
typedef char le_formula_t[LE_COMMAND_LENGTH];
typedef brain_pin_e egt_cs_array_t[EGT_CHANNEL_COUNT];

View File

@ -259,9 +259,6 @@ static void handleCommandX14(uint16_t index) {
case 0xB:
starterRelayBench();
return;
case 0xC:
engine->etbAutoTune = true;
return;
case 0xD:
engine->directSelfStimulation = true;
return;
@ -269,6 +266,12 @@ static void handleCommandX14(uint16_t index) {
case 0xE:
etbAutocal(0);
return;
case 0xC:
engine->etbAutoTune = true;
return;
case 0x10:
engine->etbAutoTune = false;
return;
#endif
case 0xF:
engine->directSelfStimulation = false;

View File

@ -55,9 +55,9 @@ static void tachSignalCallback(trigger_event_e ckpSignalType,
}
// What is the angle per tach output period?
float cycleTimeMs = 60000.0 / GET_RPM();
float cycleTimeMs = 60000.0f / GET_RPM();
float periodTimeMs = cycleTimeMs / periods;
tachFreq = 1000.0 / periodTimeMs;
tachFreq = 1000.0f / periodTimeMs;
if (CONFIG(tachPulseDurationAsDutyCycle)) {
// Simple case - duty explicitly set
@ -68,7 +68,7 @@ static void tachSignalCallback(trigger_event_e ckpSignalType,
}
// In case Freq is under 1Hz, we stop pwm to avoid warnings!
if (tachFreq < 1.0) {
if (tachFreq < 1) {
tachFreq = NAN;
}
@ -87,7 +87,7 @@ void initTachometer(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
&engine->executor,
CONFIG(tachOutputPin),
&enginePins.tachOut,
NAN, 0.1, (pwm_gen_callback*)applyPinState);
NAN, 0.1f);
#if EFI_SHAFT_POSITION_INPUT
addTriggerEventListener(tachSignalCallback, "tach", engine);

View File

@ -1,4 +1,4 @@
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Sun May 03 03:38:31 EDT 2020
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:31 EDT 2020
// by class com.rusefi.output.CHeaderConsumer
// begin
#ifndef CONTROLLERS_GENERATED_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H
@ -1894,7 +1894,15 @@ struct engine_configuration_s {
/**
* offset 1096
*/
int unusedAtOldBoardConfigurationEnd[92];
vehicle_info_t engineMake;
/**
* offset 1128
*/
vehicle_info_t engineCode;
/**
* offset 1160
*/
int unusedAtOldBoardConfigurationEnd[76];
/**
offset 1464 bit 0 */
bool vvtDisplayInverted : 1;
@ -3166,7 +3174,7 @@ struct persistent_config_s {
/**
* offset 6312
*/
uint8_t boostMapBins[BOOST_LOAD_COUNT];
uint8_t unused6312[8];
/**
* offset 6320
*/
@ -3431,4 +3439,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 Sun May 03 03:38:31 EDT 2020
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:31 EDT 2020

View File

@ -291,8 +291,6 @@
#define boostControlPinMode_offset_hex 3dd
#define boostCutPressure_offset 2132
#define boostCutPressure_offset_hex 854
#define boostMapBins_offset 6312
#define boostMapBins_offset_hex 18a8
#define boostPid_dFactor_offset 1000
#define boostPid_dFactor_offset_hex 3e8
#define boostPid_iFactor_offset 996
@ -554,10 +552,12 @@
#define enableLaunchRetard_offset_hex 3d0
#define enableVerboseCanTx_offset 744
#define enableVerboseCanTx_offset_hex 2e8
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
#define ENGINE_NOISE_CURVE_SIZE 8
#define engineChartSize_offset 1480
#define engineChartSize_offset_hex 5c8
#define engineCode_offset 1128
#define engineCode_offset_hex 468
#define engineConfiguration_offset 0
#define engineConfiguration_offset_hex 0
#define engineLoadAccelEnrichmentMultiplier_offset 2072
@ -570,6 +570,8 @@
#define engineLoadDecelEnleanmentMultiplier_offset_hex 810
#define engineLoadDecelEnleanmentThreshold_offset 2060
#define engineLoadDecelEnleanmentThreshold_offset_hex 80c
#define engineMake_offset 1096
#define engineMake_offset_hex 448
#define engineSnifferRpmThreshold_offset 4
#define engineSnifferRpmThreshold_offset_hex 4
#define engineType_offset 0
@ -1356,17 +1358,6 @@
#define ignitionMode_offset_hex 1b8
#define ignitionOffset_offset 444
#define ignitionOffset_offset_hex 1bc
#define ignitionPin10logic
#define ignitionPin11logic
#define ignitionPin12logic
#define ignitionPin2logic || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12))
#define ignitionPin3logic || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9))
#define ignitionPin4logic || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12))
#define ignitionPin5logic || ((firingOrder == 4) || (firingOrder == 12))
#define ignitionPin6logic
#define ignitionPin7logic || ((firingOrder == 11))
#define ignitionPin8logic || ((firingOrder == 5) || (firingOrder == 11))
#define ignitionPin9logic
#define ignitionPinMode_offset 649
#define ignitionPinMode_offset_hex 289
#define ignitionPins10_offset 645
@ -2276,6 +2267,8 @@
#define unused1476b20_offset_hex 5c4
#define unused2432_offset 2432
#define unused2432_offset_hex 980
#define unused6312_offset 6312
#define unused6312_offset_hex 18a8
#define unused711_offset 711
#define unused711_offset_hex 2c7
#define unused76b0_offset 76
@ -2302,8 +2295,8 @@
#define unused_former_warmup_target_afr_offset_hex 834
#define unusedAntilagTimeout_offset 820
#define unusedAntilagTimeout_offset_hex 334
#define unusedAtOldBoardConfigurationEnd_offset 1096
#define unusedAtOldBoardConfigurationEnd_offset_hex 448
#define unusedAtOldBoardConfigurationEnd_offset 1160
#define unusedAtOldBoardConfigurationEnd_offset_hex 488
#define unusedBit4_1476_offset 1476
#define unusedBit4_1476_offset_hex 5c4
#define unusedBit_251_10_offset 976
@ -2453,6 +2446,7 @@
#define vbattAdcChannel_offset_hex 201
#define vbattDividerCoeff_offset 464
#define vbattDividerCoeff_offset_hex 1d0
#define VEHICLE_INFO_SIZE 32
#define vehicleSpeedCoef_offset 476
#define vehicleSpeedCoef_offset_hex 1dc
#define vehicleSpeedSensorInputPin_offset 968

View File

@ -65,9 +65,6 @@ float getEngineLoadT(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
}
return getMafVoltage(PASS_ENGINE_PARAMETER_SIGNATURE);
case LM_SPEED_DENSITY:
// SD engine load is used for timing lookup but not for fuel calculation,
// so fall thru to the MAP case.
case LM_MAP:
return getMap(PASS_ENGINE_PARAMETER_SIGNATURE);
case LM_ALPHA_N:
return Sensor::get(SensorType::Tps1).value_or(0);

View File

@ -277,7 +277,7 @@ void initMapDecoder(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
//engine->configurationListeners.registerCallback(applyConfiguration);
if (engineConfiguration->hasFrequencyReportingMapSensor) {
#if HAL_USE_ICU
#if EFI_ICU_INPUTS
digital_input_s* digitalMapInput = startDigitalCapture("MAP freq", CONFIG(frequencyReportingMapInputPin));
digitalMapInput->setWidthCallback((VoidInt) digitalMapWidthCallback, NULL);

View File

@ -25,6 +25,7 @@ class ThreadController : public ControllerBase
private:
THD_WORKING_AREA(m_threadstack, TStackSize);
const tprio_t m_prio;
bool m_isStarted = false;
/**
* The OS can only call a function with a single void* param. We have
@ -57,8 +58,14 @@ public:
*/
void Start()
{
if (m_isStarted) {
warning(CUSTOM_OBD_6003, "Tried to start thread %s but it was already running", GetName());
return;
}
m_thread = chThdCreateStatic(m_threadstack, sizeof(m_threadstack), m_prio, StaticThreadTaskAdapter, this);
m_thread->name = GetName();
m_isStarted = true;
}
};

View File

@ -9,6 +9,12 @@
#include "trigger_toyota.h"
/**
* TT_2JZ_1_12
* One cam + 12 crank
* http://rusefi.com/images/triggers/trigger_29.png
*/
void initialize2jzGE1_12(TriggerWaveform *s) {
s->initialize(FOUR_STROKE_CAM_SENSOR);
@ -43,6 +49,9 @@ void initialize2jzGE1_12(TriggerWaveform *s) {
s->isSynchronizationNeeded = false;
}
/**
* https://rusefi.com/forum/viewtopic.php?f=5&t=1720
*/
void initialize2jzGE3_34(TriggerWaveform *s) {
setToothedWheelConfiguration(s, 36, 2, FOUR_STROKE_CRANK_SENSOR);

View File

@ -20,6 +20,7 @@ java -DSystemOut.name=gen_config ^
-initialize_to_zero false ^
-tool gen_config.bat ^
-c_defines controllers\generated\rusefi_generated.h ^
-firing_order controllers/algo/firing_order.h ^
-c_destination controllers\generated\engine_configuration_generated_structures.h ^
-c_fsio_constants controllers\generated\fsio_enums_generated.def ^
-c_fsio_getters controllers\generated\fsio_getters.def ^

View File

@ -31,6 +31,7 @@ java -DSystemOut.name=gen_config_board ^
-definition integration\rusefi_config.txt ^
-tool gen_config.bat ^
-ts_destination tunerstudio ^
-firing_order controllers/algo/firing_order.h ^
-ts_output_name rusefi_%BOARDNAME%.ini ^
-prepend tunerstudio/%BOARDNAME%_prefix.txt ^
-prepend config/boards/%BOARDNAME%/prepend.txt ^

View File

@ -76,6 +76,7 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft
return 0;
/* try ICU first */
#if EFI_ICU_INPUTS
if (icuTriggerTurnOnInputPin(msg, index, isTriggerShaft) >= 0) {
if (isTriggerShaft)
shaftTriggerType[index] = TRIGGER_ICU;
@ -83,6 +84,7 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft
camTriggerType[index] = TRIGGER_ICU;
return 0;
}
#endif
/* ... then EXTI */
if (extiTriggerTurnOnInputPin(msg, index, isTriggerShaft) >= 0) {
@ -103,15 +105,19 @@ static void turnOffTriggerInputPin(int index, bool isTriggerShaft) {
activeConfiguration.triggerInputPins[index] : activeConfiguration.camInputs[index];
if (isTriggerShaft) {
#if EFI_ICU_INPUTS
if (shaftTriggerType[index] == TRIGGER_ICU)
icuTriggerTurnOffInputPin(brainPin);
#endif
if (shaftTriggerType[index] == TRIGGER_EXTI)
extiTriggerTurnOffInputPin(brainPin);
shaftTriggerType[index] = TRIGGER_NONE;
} else {
#if EFI_ICU_INPUTS
if (camTriggerType[index] == TRIGGER_ICU)
icuTriggerTurnOffInputPin(brainPin);
#endif
if (camTriggerType[index] == TRIGGER_EXTI)
extiTriggerTurnOffInputPin(brainPin);

View File

@ -41,19 +41,6 @@
! all the sub-structures are going to be nested within the primary structure, that's
! needed to get a proper TunerStudio file
! this section is auto-generated by FiringOrderTSLogic.java
#define ignitionPin2logic || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12))
#define ignitionPin3logic || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9))
#define ignitionPin4logic || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12))
#define ignitionPin5logic || ((firingOrder == 4) || (firingOrder == 12))
#define ignitionPin6logic
#define ignitionPin7logic || ((firingOrder == 11))
#define ignitionPin8logic || ((firingOrder == 5) || (firingOrder == 11))
#define ignitionPin9logic
#define ignitionPin10logic
#define ignitionPin11logic
#define ignitionPin12logic
struct persistent_config_s
struct_no_prefix engine_configuration_s
@ -128,6 +115,8 @@ struct_no_prefix engine_configuration_s
#define FSIO_COMMAND_COUNT 16
#define AUX_PID_COUNT 4
#define VEHICLE_INFO_SIZE 32
#define FUEL_RPM_COUNT 16
#define FUEL_LOAD_COUNT 16
@ -460,7 +449,7 @@ int sensorSnifferRpmThreshold;+Disable sensor sniffer above this rpm;"RPM",
int rpmHardLimit;set rpm_hard_limit X;"rpm", 1, 0, 0, 20000.0, 2
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
#define engine_load_mode_e_enum "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
custom engine_load_mode_e 4 bits, U32, @OFFSET@, [0:7], @@engine_load_mode_e_enum@@
@ -805,6 +794,8 @@ custom maf_sensor_type_e 4 bits, S32, @OFFSET@, [0:7], @@maf_sensor_type_e_enum@
! same length used for critical and soft error messages
#define ERROR_BUFFER_SIZE 120
custom vehicle_info_t @@VEHICLE_INFO_SIZE@@ string, ASCII, @OFFSET@, @@VEHICLE_INFO_SIZE@@
custom error_message_t @@ERROR_BUFFER_SIZE@@ string, ASCII, @OFFSET@, @@ERROR_BUFFER_SIZE@@
custom le_formula_t @@LE_COMMAND_LENGTH@@ string, ASCII, @OFFSET@, @@LE_COMMAND_LENGTH@@
brain_pin_e[FSIO_COMMAND_COUNT iterate] fsioDigitalInputs;todo:not finished\nThese input pins allow us to pull toggle buttons state;
@ -882,7 +873,10 @@ custom maf_sensor_type_e 4 bits, S32, @OFFSET@, [0:7], @@maf_sensor_type_e_enum@
etb_io[ETB_COUNT iterate] etbIo2
int[92] unusedAtOldBoardConfigurationEnd;
vehicle_info_t engineMake;
vehicle_info_t engineCode;
int[76] unusedAtOldBoardConfigurationEnd;
bit vvtDisplayInverted
bit fuelClosedLoopCorrectionEnabled;+Enables lambda sensor closed loop feedback for fuelling.
@ -1292,7 +1286,7 @@ float[AFTERSTART_DECAY_CURVE_SIZE] afterstartDecayTime;;"Seconds", 1, 0
boost_table_t boostTableOpenLoop;
uint8_t[BOOST_LOAD_COUNT] boostMapBins;;"", @@LOAD_1_BYTE_PACKING_MULT@@, 0, 0, 600.0, 1
uint8_t[8] unused6312;
uint8_t[BOOST_RPM_COUNT] boostRpmBins;;"RPM", @@RPM_1_BYTE_PACKING_MULT@@, 0, 0.0, 12000.0, 0
boost_table_t boostTableClosedLoop;

View File

@ -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 Mon May 04 19:09:36 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:31 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2736,7 +2741,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2752,6 +2756,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2843,17 +2848,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2875,6 +2881,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4075,11 +4083,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -366,7 +366,6 @@ fileVersion = { @@TS_FILE_VERSION@@ }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -415,6 +414,10 @@ fileVersion = { @@TS_FILE_VERSION@@ }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -743,7 +746,7 @@ fileVersion = { @@TS_FILE_VERSION@@ }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -1489,7 +1492,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -1505,6 +1507,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -1596,17 +1599,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
@@FIRINGORDER@@
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -1628,6 +1621,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -2829,11 +2824,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -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 Mon May 04 19:09:41 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:54 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2736,7 +2741,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2752,6 +2756,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2843,17 +2848,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2875,6 +2881,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4075,11 +4083,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -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 Mon May 04 19:09:46 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Wed May 06 12:33:00 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2736,7 +2741,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2752,6 +2756,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2843,17 +2848,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2875,6 +2881,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4076,11 +4084,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -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 Mon May 04 19:09:39 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:52 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2727,7 +2732,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2743,6 +2747,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2834,17 +2839,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2866,6 +2872,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4034,11 +4042,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -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 Mon May 04 19:09:43 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:56 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2732,7 +2737,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2748,6 +2752,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2839,17 +2844,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2871,6 +2877,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4071,11 +4079,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -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 Mon May 04 19:09:45 EDT 2020
; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:58 EDT 2020
pageSize = 20000
page = 1
@ -179,7 +179,7 @@ page = 1
cylinderBore = scalar, F32, 408, "mm", 1, 0, 0, 20000.0, 2
sensorSnifferRpmThreshold = scalar, S32, 412, "RPM", 1, 0, 0,30000, 0
rpmHardLimit = scalar, S32, 416, "rpm", 1, 0, 0, 20000.0, 2
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"
fuelAlgorithm = bits, U32, 420, [0:7], "MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"
crankingInjectionMode = bits, U32, 424, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
injectionMode = bits, U32, 428, [0:7], "Simultaneous", "Sequential", "Batch", "Single Point"
extraInjectionOffset = scalar, F32, 432, "deg", 1, 0.0, -720, 720, 2
@ -633,7 +633,9 @@ page = 1
etbIo22_directionPin2 = bits, U08, 1093, [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"
etbIo22_controlPin1 = bits, U08, 1094, [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"
etbIo22_disablePin = bits, U08, 1095, [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"
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1096
engineMake = string, ASCII, 1096, 32
engineCode = string, ASCII, 1128, 32
;no TS info - skipping unusedAtOldBoardConfigurationEnd offset 1160
vvtDisplayInverted = bits, U32, 1464, [0:0], "false", "true"
fuelClosedLoopCorrectionEnabled= bits, U32, 1464, [1:1], "false", "true"
isVerboseIAC = bits, U32, 1464, [2:2], "false", "true"
@ -1095,7 +1097,7 @@ page = 1
afterstartEnrich = array, F32, 6184, [8], "%", 1, 0, 0, 600, 1
afterstartDecayTime = array, F32, 6216, [8], "Seconds", 1, 0, 0, 100, 1
boostTableOpenLoop = array, U08, 6248, [8x8],"", 2, 0 , 0, 3000, 0
boostMapBins = array, U08, 6312, [8], "", 2, 0, 0, 600.0, 1
;no TS info - skipping unused6312 offset 6312
boostRpmBins = array, U08, 6320, [8], "RPM", 50, 0, 0.0, 12000.0, 0
boostTableClosedLoop = array, U08, 6328, [8x8],"", 2, 0 , 0, 3000, 0
boostTpsBins = array, U08, 6392, [8], "%", 2, 0.0, 0, 100.0, 2
@ -1613,7 +1615,6 @@ fileVersion = { 20200310 }
; todo: generate this section programatically
LM_PLAIN_MAF = {0},
LM_ALPHA_N = {1},
LM_MAP = {2},
LM_SPEED_DENSITY = {3},
LM_REAL_MAF = {4}
@ -1662,6 +1663,10 @@ fileVersion = { 20200310 }
maintainConstantValue = tpsMax, { (calibrationMode == 1 ) ? calibrationValue : tpsMax }
maintainConstantValue = tpsMin, { (calibrationMode == 2 ) ? calibrationValue : tpsMin }
maintainConstantValue = etb_pFactor, { (calibrationMode == 3 ) ? calibrationValue : etb_pFactor }
maintainConstantValue = etb_iFactor, { (calibrationMode == 4 ) ? calibrationValue : etb_iFactor }
maintainConstantValue = etb_dFactor, { (calibrationMode == 5 ) ? calibrationValue : etb_dFactor }
requiresPowerCycle = warningLedPin
requiresPowerCycle = runningLedPin
requiresPowerCycle = binarySerialTxPin
@ -1990,7 +1995,7 @@ fileVersion = { 20200310 }
table = boostTableTbl, boostMapOpen, "", 1
xBins = boostRpmBins, RPMValue
yBins = boostMapBins, MAPValue
yBins = boostTpsBins, TPSValue
zBins = boostTableOpenLoop
table = boostTable2Tbl, boostMapClosed, "", 1
@ -2727,7 +2732,6 @@ cmd_test_inj14 = "w\x00\x13\x00\x0e"
cmd_test_inj15 = "w\x00\x13\x00\x0f"
cmd_test_inj16 = "w\x00\x13\x00\x10"
;
cmd_test_fuel_pump = "w\x00\x14\x00\x01"
cmd_calibrate_tps_1_closed = "w\x00\x14\x00\x02"
cmd_calibrate_tps_1_wot = "w\x00\x14\x00\x03"
@ -2743,6 +2747,7 @@ cmd_etb_autotune = "w\x00\x14\x00\x0C"
cmd_enable_self_stim = "w\x00\x14\x00\x0D"
cmb_etb_auto_calibrate = "w\x00\x14\x00\x0E"
cmd_disable_self_stim = "w\x00\x14\x00\x0F"
cmd_etb_autotune_stop = "w\x00\x14\x00\x10"
cmd_test_radiator_fan = "w\x00\x15\x00\x01"
cmd_test_check_engine_light = "w\x00\x16\x00\x01"
@ -2834,17 +2839,18 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1}
; see rusefi_config.txt comment next to 'ignitionPin2logic' which says
; this section is auto-generated by FiringOrderTSLogic.java
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))}
field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9) || (firingOrder == 13) || (firingOrder == 14) || (firingOrder == 15) || (firingOrder == 18) || (firingOrder == 20)))}
field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12) || (firingOrder == 14) || (firingOrder == 16) || (firingOrder == 17)))}
field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12) || (firingOrder == 15) || (firingOrder == 18)))}
field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 13)))}
field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11) || (firingOrder == 15) || (firingOrder == 16) || (firingOrder == 19) || (firingOrder == 20)))}
field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11) || (firingOrder == 16) || (firingOrder == 18) || (firingOrder == 19)))}
field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 15)))}
field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 14) || (firingOrder == 16) || (firingOrder == 18)))}
field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 15)))}
field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= 12) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 18)))}
field = "This is useful to have tachometer working"
field = " while converting from distributor"
field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1}
@ -2866,6 +2872,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = baseEngineConfig, "Engine Configuration"
; field = "Engine Preset", engineType
field = "Engine Make", engineMake
field = "Engine Code", engineCode
field = "Number of Cylinders", cylindersCount
field = "Engine Displacement", displacement
field = "Firing Order", firingOrder
@ -4042,11 +4050,14 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
panel = hbridgeHardware, { throttlePedalPositionAdcChannel != 16 || useStepperIdle && useHbridges }
dialog = etbAutotune, "PID Autotune"
field = "!Set debug mode below to 'ETB Autotune' to show results"
field = "Debug mode", debugMode
commandButton = "ETB PID Autotune", cmd_etb_autotune
commandButton = "Start ETB PID Autotune", cmd_etb_autotune
commandButton = "Stop ETB PID Autotune", cmd_etb_autotune_stop
commandButton = "Auto Calibrate TPS", cmb_etb_auto_calibrate
field = "!Set debug mode below to 'ETB Autotune' to show more detail"
field = "Debug mode", debugMode
dialog = etbDialogRight
panel = etbIdleDialog
panel = etbPidDialog

View File

@ -1,7 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="FiringOrderTSLogic" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="com.rusefi.FiringOrderTSLogic" />
<module name="models" />
<module name="configuration_definition" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<extension name="coverage">
<pattern>

View File

@ -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 Sat May 02 22:11:06 EDT 2020
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Wed May 06 12:32:31 EDT 2020
// by class com.rusefi.output.FileJavaFieldsConsumer
import com.rusefi.config.*;
@ -186,7 +186,6 @@ public class Fields {
public static final int boostControlPinMode_offset = 989;
public static final int boostCutPressure_offset = 2132;
public static final int boostCutPressure_offset_hex = 854;
public static final int boostMapBins_offset = 6312;
public static final int boostPid_dFactor_offset = 1000;
public static final int boostPid_iFactor_offset = 996;
public static final int boostPid_maxValue_offset = 1010;
@ -361,6 +360,8 @@ public class Fields {
public static final int enableVerboseCanTx_offset = 744;
public static final int ENGINE_NOISE_CURVE_SIZE = 8;
public static final int engineChartSize_offset = 1480;
public static final int engineCode_offset = 1128;
public static final int engineCode_offset_hex = 468;
public static final int engineConfiguration_offset = 0;
public static final int engineConfiguration_offset_hex = 0;
public static final int engineLoadAccelEnrichmentMultiplier_offset = 2072;
@ -372,6 +373,8 @@ public class Fields {
public static final int engineLoadDecelEnleanmentMultiplier_offset = 2064;
public static final int engineLoadDecelEnleanmentMultiplier_offset_hex = 810;
public static final int engineLoadDecelEnleanmentThreshold_offset = 2060;
public static final int engineMake_offset = 1096;
public static final int engineMake_offset_hex = 448;
public static final int engineSnifferRpmThreshold_offset = 4;
public static final int engineSnifferRpmThreshold_offset_hex = 4;
public static final int engineType_offset = 0;
@ -1525,6 +1528,7 @@ public class Fields {
public static final int unused1476b20_offset = 1476;
public static final int unused2432_offset = 2432;
public static final int unused2432_offset_hex = 980;
public static final int unused6312_offset = 6312;
public static final int unused711_offset = 711;
public static final int unused76b0_offset = 76;
public static final int unused806_offset = 806;
@ -1541,8 +1545,8 @@ public class Fields {
public static final int unused_former_warmup_target_afr_offset_hex = 834;
public static final int unusedAntilagTimeout_offset = 820;
public static final int unusedAntilagTimeout_offset_hex = 334;
public static final int unusedAtOldBoardConfigurationEnd_offset = 1096;
public static final int unusedAtOldBoardConfigurationEnd_offset_hex = 448;
public static final int unusedAtOldBoardConfigurationEnd_offset = 1160;
public static final int unusedAtOldBoardConfigurationEnd_offset_hex = 488;
public static final int unusedBit4_1476_offset = 1476;
public static final int unusedBit_251_10_offset = 976;
public static final int unusedBit_251_11_offset = 976;
@ -1620,6 +1624,7 @@ public class Fields {
public static final int vbattAdcChannel_offset = 513;
public static final int vbattAdcChannel_offset_hex = 201;
public static final int vbattDividerCoeff_offset = 464;
public static final int VEHICLE_INFO_SIZE = 32;
public static final int vehicleSpeedCoef_offset = 476;
public static final int vehicleSpeedSensorInputPin_offset = 968;
public static final int veLoadBins_offset = 18464;
@ -1721,7 +1726,7 @@ public class Fields {
public static final Field CYLINDERBORE = Field.create("CYLINDERBORE", 408, FieldType.FLOAT);
public static final Field SENSORSNIFFERRPMTHRESHOLD = Field.create("SENSORSNIFFERRPMTHRESHOLD", 412, FieldType.INT);
public static final Field RPMHARDLIMIT = Field.create("RPMHARDLIMIT", 416, FieldType.INT);
public static final String[] engine_load_mode_e = {"MAF", "Alpha-N/TPS", "MAP", "SPEED DENSITY", "MAF Air Charge"};
public static final String[] engine_load_mode_e = {"MAF", "Alpha-N/TPS", "INVALID", "SPEED DENSITY", "MAF Air Charge"};
public static final Field FUELALGORITHM = Field.create("FUELALGORITHM", 420, FieldType.INT, engine_load_mode_e);
public static final Field CRANKINGINJECTIONMODE = Field.create("CRANKINGINJECTIONMODE", 424, FieldType.INT);
public static final Field INJECTIONMODE = Field.create("INJECTIONMODE", 428, FieldType.INT);
@ -2184,6 +2189,8 @@ public class Fields {
public static final Field ETBIO22_DIRECTIONPIN2 = Field.create("ETBIO22_DIRECTIONPIN2", 1093, FieldType.INT8, brain_pin_e);
public static final Field ETBIO22_CONTROLPIN1 = Field.create("ETBIO22_CONTROLPIN1", 1094, FieldType.INT8, brain_pin_e);
public static final Field ETBIO22_DISABLEPIN = Field.create("ETBIO22_DISABLEPIN", 1095, FieldType.INT8, brain_pin_e);
public static final Field ENGINEMAKE = Field.create("ENGINEMAKE", 1096, FieldType.INT);
public static final Field ENGINECODE = Field.create("ENGINECODE", 1128, FieldType.INT);
public static final Field VVTDISPLAYINVERTED = Field.create("VVTDISPLAYINVERTED", 1464, FieldType.BIT, 0);
public static final Field FUELCLOSEDLOOPCORRECTIONENABLED = Field.create("FUELCLOSEDLOOPCORRECTIONENABLED", 1464, FieldType.BIT, 1);
public static final Field ISVERBOSEIAC = Field.create("ISVERBOSEIAC", 1464, FieldType.BIT, 2);
@ -3152,6 +3159,8 @@ public class Fields {
ETBIO22_DIRECTIONPIN2,
ETBIO22_CONTROLPIN1,
ETBIO22_DISABLEPIN,
ENGINEMAKE,
ENGINECODE,
VVTDISPLAYINVERTED,
FUELCLOSEDLOOPCORRECTIONENABLED,
ISVERBOSEIAC,

View File

@ -94,7 +94,6 @@ public class FormulasPane {
enum engine_load_mode_e {
LM_PLAIN_MAF("Plain MAF"),
LM_ALPHA_N("Alpha-N/TPS"),
LM_MAP("Plain MAP"),
LM_SPEED_DENSITY("Speed Density/MAP"),
LM_REAL_MAF("MAF");

Binary file not shown.

View File

@ -6,10 +6,12 @@ import com.rusefi.util.LazyFile;
import com.rusefi.util.SystemOut;
import java.io.*;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -36,6 +38,7 @@ public class ConfigDefinition {
private static final String KEY_WITH_C_DEFINES = "-with_c_defines";
private static final String KEY_JAVA_DESTINATION = "-java_destination";
private static final String KEY_ROMRAIDER_DESTINATION = "-romraider_destination";
private static final String KEY_FIRING = "-firing_order";
public static final String KEY_PREPEND = "-prepend";
private static final String KEY_SKIP = "-skip";
private static final String KEY_ZERO_INIT = "-initialize_to_zero";
@ -69,6 +72,8 @@ public class ConfigDefinition {
return;
}
SystemOut.println("Invoked with " + Arrays.toString(args));
String tsPath = null;
String destCHeaderFileName = null;
String destCDefinesFileName = null;
@ -109,6 +114,10 @@ public class ConfigDefinition {
destCDefinesFileName = args[i + 1];
} else if (key.equals(KEY_JAVA_DESTINATION)) {
javaDestinationFileName = args[i + 1];
} else if (key.equals(KEY_FIRING)) {
String firingEnumFileName = args[i + 1];
SystemOut.println("Reading firing from " + firingEnumFileName);
VariableRegistry.INSTANCE.register("FIRINGORDER", FiringOrderTSLogic.invoke(firingEnumFileName));
} else if (key.equals(KEY_ROMRAIDER_DESTINATION)) {
romRaiderDestination = args[i + 1];
} else if (key.equals(KEY_PREPEND)) {
@ -124,7 +133,7 @@ public class ConfigDefinition {
MESSAGE = getGeneratedAutomaticallyTag() + definitionInputFile + " " + new Date();
SystemOut.println("Reading from " + definitionInputFile);
SystemOut.println("Reading definition from " + definitionInputFile);
String currentMD5 = getDefinitionMD5(definitionInputFile);

View File

@ -14,21 +14,25 @@ import java.util.Map;
public class FiringOrderTSLogic {
private static final String FIRING_ORDER_PREFIX = "FO_";
private static final Map<Integer, String[]> ordinal2order = new HashMap<>();
private static int maxOrdinal;
public static void main(String[] args) throws IOException {
invoke("../firmware/controllers/algo/firing_order.h");
}
public static void invoke(String fileName) throws IOException {
readFiringOrders(fileName);
public static String invoke(String fileName) throws IOException {
State state = new State();
for (int i = 2; i <= maxOrdinal; i++)
processId(i);
readFiringOrders(fileName, state);
StringBuilder sb = new StringBuilder();
for (int i = 2; i <= 12; i++) {
String line = processId(i, state);
sb.append(line).append("\r\n");
}
return sb.toString();
}
private static void readFiringOrders(String fileName) throws IOException {
private static void readFiringOrders(String fileName, State state) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line;
@ -39,11 +43,11 @@ public class FiringOrderTSLogic {
continue;
}
line = line.substring(index + FIRING_ORDER_PREFIX.length());
parseLine(line);
parseLine(line, state);
}
}
public static void parseLine(String line) {
public static void parseLine(String line, State state) {
line = line.replaceAll("[\\s]*\\,.*", "");
line = line.replaceAll("[\\s\\,]", "");
System.out.println("Processing " + line);
@ -54,16 +58,16 @@ public class FiringOrderTSLogic {
System.out.println("order " + Arrays.toString(order) + ": " + ordinal);
maxOrdinal = Math.max(ordinal, maxOrdinal);
ordinal2order.put(ordinal, order);
state.maxOrdinal = Math.max(ordinal, state.maxOrdinal);
state.ordinal2order.put(ordinal, order);
}
private static void processId(int cylinderId) {
private static String processId(int cylinderId, State state) {
StringBuilder logic = new StringBuilder();
for (Map.Entry<Integer, String[]> e : ordinal2order.entrySet()) {
for (Map.Entry<Integer, String[]> e : state.ordinal2order.entrySet()) {
Integer ordinal = e.getKey();
String[] order = e.getValue();
if (order.length % 2 != 0) {
@ -87,9 +91,17 @@ public class FiringOrderTSLogic {
}
String result = logic.length() == 0 ? "" : "|| (" + logic + ")";
System.out.println("#define ignitionPin" + cylinderId + "logic" + " " + result + "");
//String output = "#define ignitionPin" + cylinderId + "logic" + " " + result + "";
String output = "\t\tfield = \"Ignition Pin " + cylinderId +
"\", ignitionPins" + cylinderId +
", {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount >= " + cylinderId + ") && (ignitionMode !=2 || twoWireBatchIgnition == 1 " + result + ")}";
System.out.println(output);
return output;
}
public static class State {
final Map<Integer, String[]> ordinal2order = new HashMap<>();
int maxOrdinal;
}
}

View File

@ -67,7 +67,10 @@ public class VariableRegistry {
SystemOut.println("Registering " + var + " as " + value);
data.put(var, value);
cAllDefinitions.put(var, "#define " + var + " " + value + EOL);
if (!value.contains("\n")) {
// multi-lines are not supported in C headers
cAllDefinitions.put(var, "#define " + var + " " + value + EOL);
}
tryToRegisterAsInteger(var, value);
}

View File

@ -6,6 +6,6 @@ import org.junit.Test;
public class FiringOrderTSLogicTest {
@Test
public void parseFiringOrderLine() {
FiringOrderTSLogic.parseLine("FO_1_3_4_2 = 1, // typical inline 4");
FiringOrderTSLogic.parseLine("FO_1_3_4_2 = 1, // typical inline 4", new FiringOrderTSLogic.State());
}
}

View File

@ -0,0 +1,121 @@
#include "boost_control.h"
#include "engine_controller.h"
#include "engine_test_helper.h"
#include "mocks.h"
using ::testing::_;
using ::testing::StrictMock;
TEST(BoostControl, Setpoint) {
MockVp3d targetMap;
// Just pass TPS input to output
EXPECT_CALL(targetMap, getValue(_, _))
.WillRepeatedly([](float xRpm, float tps) { return tps; });
WITH_ENGINE_TEST_HELPER(TEST_ENGINE);
BoostController bc;
INJECT_ENGINE_REFERENCE(&bc);
// Should return unexpected without a pedal map cfg'd
EXPECT_EQ(bc.getSetpoint(), unexpected);
// Now init with mock target map
bc.init(nullptr, nullptr, &targetMap, nullptr);
// Should still return unxepected since TPS is invalid
EXPECT_EQ(bc.getSetpoint(), unexpected);
// Configure TPS, should get passthru of tps value
Sensor::setMockValue(SensorType::DriverThrottleIntent, 35.0f);
EXPECT_FLOAT_EQ(bc.getSetpoint().value_or(-1), 35.0f);
}
TEST(BoostControl, ObservePlant) {
WITH_ENGINE_TEST_HELPER(TEST_ENGINE);
BoostController bc;
INJECT_ENGINE_REFERENCE(&bc);
engine->mockMapValue = NAN;
// Check that invalid MAP returns unexpected
EXPECT_EQ(bc.observePlant(), unexpected);
// Test valid MAP value
engine->mockMapValue = 150.0f;
EXPECT_FLOAT_EQ(bc.observePlant().value_or(0), 150.0f);
}
TEST(BoostControl, OpenLoop) {
MockVp3d openMap;
// Just pass MAP input to output
EXPECT_CALL(openMap, getValue(_, _))
.WillRepeatedly([](float xRpm, float tps) { return tps; });
WITH_ENGINE_TEST_HELPER(TEST_ENGINE);
BoostController bc;
INJECT_ENGINE_REFERENCE(&bc);
// Without table set, should return unexpected
EXPECT_EQ(bc.getOpenLoop(0), unexpected);
bc.init(nullptr, &openMap, nullptr, nullptr);
// Should pass TPS value thru
Sensor::setMockValue(SensorType::DriverThrottleIntent, 47.0f);
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 47.0f);
}
TEST(BoostControl, ClosedLoop) {
WITH_ENGINE_TEST_HELPER(TEST_ENGINE);
BoostController bc;
INJECT_ENGINE_REFERENCE(&bc);
pid_s pidCfg = {
1, 0, 0, // P controller, easier to test
0, // no offset
5, // 5ms period
-100, 100 // min/max output
};
bc.init(nullptr, nullptr, nullptr, &pidCfg);
// Enable closed loop
CONFIG(boostType) = CLOSED_LOOP;
// At 0 RPM, closed loop is disabled
ENGINE(rpmCalculator.mockRpm) = 0;
EXPECT_EQ(0, bc.getClosedLoop(150, 100).value_or(-1000));
// With RPM, we should get an output
ENGINE(rpmCalculator.mockRpm) = 1000;
// Actual is below target -> positive output
EXPECT_FLOAT_EQ(50, bc.getClosedLoop(150, 100).value_or(-1000));
// Actual is above target -> negative output
EXPECT_FLOAT_EQ(-25.0f, bc.getClosedLoop(150, 175).value_or(-1000));
// Disabling closed loop should return 0
CONFIG(boostType) = OPEN_LOOP;
EXPECT_FLOAT_EQ(0, bc.getClosedLoop(150, 175).value_or(-1000));
}
TEST(BoostControl, SetOutput) {
StrictMock<MockPwm> pwm;
BoostController bc;
EXPECT_CALL(pwm, setSimplePwmDutyCycle(0.25f));
// Don't crash if not init'd (don't deref null ptr m_pwm)
EXPECT_NO_THROW(bc.setOutput(25.0f));
// Init with mock PWM device
bc.init(&pwm, nullptr, nullptr, nullptr);
bc.setOutput(25.0f);
}

View File

@ -0,0 +1,31 @@
#include "engine_test_helper.h"
#include "fuel_math.h"
#include "gtest/gtest.h"
TEST(FuelMath, getStandardAirCharge) {
WITH_ENGINE_TEST_HELPER(TEST_ENGINE);
// Miata 1839cc 4cyl
CONFIG(specs.displacement) = 1.839f;
CONFIG(specs.cylindersCount) = 4;
EXPECT_FLOAT_EQ(0.553539f, getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE));
// LS 5.3 liter v8
CONFIG(specs.displacement) = 5.327f;
CONFIG(specs.cylindersCount) = 8;
EXPECT_FLOAT_EQ(0.80171353f, getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE));
// Chainsaw - single cylinder 32cc
CONFIG(specs.displacement) = 0.032f;
CONFIG(specs.cylindersCount) = 1;
EXPECT_FLOAT_EQ(0.038528003, getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE));
// Leopard 1 47.666 liter v12
CONFIG(specs.displacement) = 47.666f;
CONFIG(specs.cylindersCount) = 12;
EXPECT_FLOAT_EQ(4.782489f, getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE));
}

View File

@ -49,5 +49,7 @@ TESTS_SRC_CPP = \
tests/sensor/redundant.cpp \
tests/sensor/test_sensor_init.cpp \
tests/test_closed_loop_controller.cpp \
tests/test_boost.cpp \
tests/test_gppwm.cpp \
tests/test_fuel_math.cpp \