rusefi/firmware/config/engines/honda_k_dbc.cpp

113 lines
3.9 KiB
C++

/*
* honda_k_dbc.cpp
*
* @date Oct 2, 2021
* @author Andrey Belomutskiy, (c) 2012-2021
*/
#include "honda_k_dbc.h"
#include "table_helper.h"
#if HW_PROTEUS & EFI_PROD_CODE
#include "proteus_meta.h"
#endif // HW_PROTEUS
void setHondaK() {
engineConfiguration->cylindersCount = 4;
engineConfiguration->displacement = 2.4;
engineConfiguration->firingOrder = FO_1_3_4_2;
engineConfiguration->engineSyncCam = SC_Exhaust_First;
engineConfiguration->trigger.type = trigger_type_e::TT_HONDA_K_CRANK_12_1;
int magic = 0; // note that offset and VVT are related
engineConfiguration->globalTriggerAngleOffset = 663 - magic;
// VVT is here just single tooth? and we do not even use it!?
engineConfiguration->vvtMode[0] = VVT_HONDA_K_INTAKE;
// also known as 'CAM sync'? i am pretty confused at this point
engineConfiguration->vvtMode[1] = VVT_HONDA_K_EXHAUST;
engineConfiguration->vvtOffsets[0] = -21;
engineConfiguration->vvtOffsets[1] = 183 + magic;
// set cranking_fuel 15
engineConfiguration->cranking.baseFuel = 75;
engineConfiguration->map.sensor.type = MT_DENSO183;
// todo: quote some source?
engineConfiguration->injector.flow = 270;
engineConfiguration->injector.flow = 310;
engineConfiguration->injectorCompensationMode = ICM_FixedRailPressure;
engineConfiguration->fuelReferencePressure = 350; // TODO: what is real value?!
engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
engineConfiguration->injectionMode = IM_SEQUENTIAL;
engineConfiguration->crankingIACposition = 70;
static const uint16_t defaultPostCrankinDurationBins[] = {
0, 65, 100, 125, 150, 250
};
copyArray(engineConfiguration->postCrankingDurationBins, defaultPostCrankinDurationBins);
setTable(engineConfiguration->postCrankingFactor, 1.25f);
engineConfiguration->useRunningMathForCranking = true;
strcpy(engineConfiguration->engineMake, ENGINE_MAKE_HONDA);
strcpy(engineConfiguration->engineCode, "K24");
engineConfiguration->tpsMin = 100;
engineConfiguration->tpsMax = 830;
engineConfiguration->displayLogicLevelsInEngineSniffer = true;
gppwm_channel *vtsControl = &engineConfiguration->gppwm[0];
vtsControl->pwmFrequency = 0;
#if EFI_SIMULATOR
// simulator canned config XML toolset cares to see perfect empty memory region
memset(engineConfiguration->gpPwmNote[0], 0, sizeof(gppwm_note_t));
#endif
strcpy(engineConfiguration->gpPwmNote[0], "VTS");
/**
* K24A4 engine
* HONDA_K
*/
#if HW_PROTEUS & EFI_PROD_CODE
strcpy(engineConfiguration->vehicleName, "test");
// engineConfiguration->triggerInputPins[0] = PROTEUS_DIGITAL_2; // crank
// engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_4; // intake
// engineConfiguration->camInputs[1 * CAMS_PER_BANK] = PROTEUS_DIGITAL_1; // exhaust
engineConfiguration->triggerInputPins[0] = PROTEUS_DIGITAL_1; // exhaust
engineConfiguration->camInputs[0] = PROTEUS_DIGITAL_4; // intake
// inverted
// offset -41
engineConfiguration->injectionPins[0] = Gpio::PROTEUS_LS_8;
engineConfiguration->injectionPins[1] = Gpio::PROTEUS_LS_7;
engineConfiguration->injectionPins[2] = Gpio::PROTEUS_LS_6;
engineConfiguration->injectionPins[3] = Gpio::PROTEUS_LS_5;
vtsControl->pin = Gpio::PROTEUS_HS_1;
engineConfiguration->vvtPins[0] = Gpio::PROTEUS_HS_2;
engineConfiguration->malfunctionIndicatorPin = Gpio::PROTEUS_LS_10;
engineConfiguration->idle.solenoidPin = Gpio::PROTEUS_LS_15;
engineConfiguration->fanPin = Gpio::PROTEUS_LS_1;
engineConfiguration->iat.adcChannel = PROTEUS_IN_ANALOG_TEMP_1;
engineConfiguration->clt.adcChannel = PROTEUS_IN_ANALOG_TEMP_2;
engineConfiguration->tps1_1AdcChannel = PROTEUS_IN_ANALOG_VOLT_3;
engineConfiguration->map.sensor.hwChannel = PROTEUS_IN_ANALOG_VOLT_6;
engineConfiguration->fanPin = Gpio::Unassigned;
engineConfiguration->mainRelayPin = Gpio::PROTEUS_LS_9;
engineConfiguration->fuelPumpPin = Gpio::PROTEUS_LS_11;
#endif // HW_PROTEUS
}
void setProteusHondaOBD2A() {
}