auto-sync

This commit is contained in:
rusEfi 2015-02-12 20:06:16 -06:00
parent 80c188a679
commit 4486ca0b51
6 changed files with 32 additions and 20 deletions

View File

@ -189,7 +189,10 @@ void setDodgeNeonNGCEngineConfiguration(engine_configuration_s *engineConfigurat
// set_global_trigger_offset_angle 46
engineConfiguration->globalTriggerAngleOffset = 46;
engineConfiguration->injectionAngle = 46;
// set_injection_offset 0
engineConfiguration->injectionAngle = 0;
setMap(engineConfiguration->fuelTable, -180);
engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS;
engineConfiguration->injectionMode = IM_SEQUENTIAL;

View File

@ -40,8 +40,7 @@ float getBaseAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_S) {
engine->m.zeroTestTime = GET_TIMESTAMP() - engine->m.beforeZeroTest;
engine->m.beforeAdvance = GET_TIMESTAMP();
float result = advanceMap.getValue(engineLoad, engineConfiguration->ignitionLoadBins, (float) rpm,
engineConfiguration->ignitionRpmBins);
float result = advanceMap.getValue(engineLoad, (float) rpm);
engine->m.advanceTime = GET_TIMESTAMP() - engine->m.beforeAdvance;
return result;
}
@ -59,5 +58,6 @@ float getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_S) {
}
void prepareTimingMap(DECLARE_ENGINE_PARAMETER_F) {
advanceMap.init(engineConfiguration->ignitionTable);
advanceMap.init(engineConfiguration->ignitionTable, engineConfiguration->ignitionLoadBins,
engineConfiguration->ignitionRpmBins);
}

View File

@ -192,7 +192,10 @@ void setDefaultConfiguration(engine_configuration_s *engineConfiguration, board_
setWholeFuelMap(engineConfiguration, 3);
setWholeVEMap(engineConfiguration, 0.8);
setMap(engineConfiguration->afrTable, 14.7);
setMap(engineConfiguration->injectionPhase, 0);
setRpmTableBin(engineConfiguration->injPhaseRpmBins, FUEL_RPM_COUNT);
setTableBin2(engineConfiguration->injPhaseLoadBins, FUEL_LOAD_COUNT, 10, 300, 1);
setThermistorConfiguration(&engineConfiguration->clt, 0, 9500, 23.8889, 2100, 48.8889, 1000);
engineConfiguration->clt.bias_resistor = 1500;

View File

@ -44,6 +44,7 @@
EXTERN_ENGINE;
static Map3D1616 fuelMap;
static Map3D1616 fuelPhaseMap;
float getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_S) {
if (engine->engineConfiguration->algorithm == LM_SPEED_DENSITY) {
@ -119,8 +120,9 @@ float getInjectorLag(float vBatt DECLARE_ENGINE_PARAMETER_S) {
* @note this method has nothing to do with fuel map VALUES - it's job
* is to prepare the fuel map data structure for 3d interpolation
*/
void prepareFuelMap(engine_configuration_s *engineConfiguration) {
fuelMap.init(engineConfiguration->fuelTable);
void prepareFuelMap(engine_configuration_s *e) {
fuelMap.init(e->fuelTable, e->fuelLoadBins, e->fuelRpmBins);
fuelPhaseMap.init(e->injectionPhase, e->injPhaseLoadBins, e->injPhaseRpmBins);
}
/**
@ -146,8 +148,7 @@ float getBaseTableFuel(engine_configuration_s *engineConfiguration, int rpm, flo
warning(OBD_PCM_Processor_Fault, "NaN engine load");
return NAN;
}
return fuelMap.getValue(engineLoad, engineConfiguration->fuelLoadBins, rpm,
engineConfiguration->fuelRpmBins);
return fuelMap.getValue(engineLoad, rpm);
}
#if EFI_ENGINE_CONTROL

View File

@ -17,11 +17,13 @@
template<int RPM_BIN_SIZE, int LOAD_BIN_SIZE>
class Map3D {
public:
void init(float table[RPM_BIN_SIZE][LOAD_BIN_SIZE]);
float getValue(float x, float xBin[], float y, float yBin[]);
void init(float table[RPM_BIN_SIZE][LOAD_BIN_SIZE], float loadBins[LOAD_BIN_SIZE], float rpmBins[RPM_BIN_SIZE]);
float getValue(float x, float rpm);
void setAll(float value);
private:
float *pointers[LOAD_BIN_SIZE];
float *loadBins;
float *rpmBins;
int initialized;
};
@ -55,17 +57,21 @@ void Table2D<SIZE>::preCalc(float *bin, float *values) {
template<int RPM_BIN_SIZE, int LOAD_BIN_SIZE>
void Map3D<RPM_BIN_SIZE, LOAD_BIN_SIZE>::init(float table[RPM_BIN_SIZE][LOAD_BIN_SIZE]) {
void Map3D<RPM_BIN_SIZE, LOAD_BIN_SIZE>::init(float table[RPM_BIN_SIZE][LOAD_BIN_SIZE],
float loadBins[LOAD_BIN_SIZE],
float rpmBins[RPM_BIN_SIZE]) {
for (int k = 0; k < LOAD_BIN_SIZE; k++) {
pointers[k] = table[k];
}
initialized = MAGIC_TRUE_VALUE;
this->loadBins = loadBins;
this->rpmBins = rpmBins;
}
template<int RPM_BIN_SIZE, int LOAD_BIN_SIZE>
float Map3D<RPM_BIN_SIZE, LOAD_BIN_SIZE>::getValue(float x, float xBin[], float y, float yBin[]) {
float Map3D<RPM_BIN_SIZE, LOAD_BIN_SIZE>::getValue(float x, float rpm) {
efiAssert(initialized == MAGIC_TRUE_VALUE, "map not initialized", NAN);
return interpolate3d(x, xBin, LOAD_BIN_SIZE, y, yBin, RPM_BIN_SIZE, pointers);
return interpolate3d(x, loadBins, LOAD_BIN_SIZE, rpm, rpmBins, RPM_BIN_SIZE, pointers);
}
template<int RPM_BIN_SIZE, int LOAD_BIN_SIZE>

View File

@ -85,10 +85,8 @@ float getSpeedDensityFuel(Engine *engine, int rpm) {
float intakeC = engine->engineState.iat;
float tChargeK = convertCelsiusToKelvin(getTCharge(rpm, tps, coolantC, intakeC));
float map = getMap();
float VE = veMap.getValue(map, engineConfiguration->veLoadBins, rpm,
engineConfiguration->veRpmBins);
float AFR = afrMap.getValue(map, engineConfiguration->afrLoadBins, rpm,
engineConfiguration->afrRpmBins);
float VE = veMap.getValue(map, rpm);
float AFR = afrMap.getValue(map, rpm);
return sdMath(engine->engineConfiguration, VE, map, AFR, tChargeK) * 1000;
}
@ -104,7 +102,8 @@ void setDetaultVETable(engine_configuration_s *engineConfiguration) {
afrMap.setAll(14.7);
}
void initSpeedDensity(engine_configuration_s *engineConfiguration) {
veMap.init(engineConfiguration->veTable);
afrMap.init(engineConfiguration->afrTable);
void initSpeedDensity(engine_configuration_s *e) {
veMap.init(e->veTable, e->veLoadBins, e->veRpmBins);
veMap.init(e->ve2Table, e->ve2LoadBins, e->ve2RpmBins);
afrMap.init(e->afrTable, e->afrLoadBins, e->afrRpmBins);
}