auto-sync

This commit is contained in:
rusEfi 2016-11-30 15:02:43 -05:00
parent 070cdef25c
commit d8753c34a2
4 changed files with 15 additions and 29 deletions

View File

@ -218,9 +218,6 @@ typedef struct {
uint32_t beforeMainTrigger;
uint32_t mainTriggerCallbackTime;
uint32_t beforeIgnitionMath;
uint32_t ignitionMathTime;
uint32_t beforeIgnitionSch;
uint32_t ignitionSchTime;

View File

@ -222,12 +222,19 @@ floatms_t getCrankingSparkDwell(int rpm DECLARE_ENGINE_PARAMETER_S) {
* @return Spark dwell time, in milliseconds.
*/
floatms_t getSparkDwell(int rpm DECLARE_ENGINE_PARAMETER_S) {
float dwellMs;
if (isCrankingR(rpm)) {
return getCrankingSparkDwell(rpm PASS_ENGINE_PARAMETER);
}
efiAssert(!cisnan(rpm), "invalid rpm", NAN);
dwellMs = getCrankingSparkDwell(rpm PASS_ENGINE_PARAMETER);
} else {
efiAssert(!cisnan(rpm), "invalid rpm", NAN);
return interpolate2d(rpm, engineConfiguration->sparkDwellBins, engineConfiguration->sparkDwell, DWELL_CURVE_SIZE);
dwellMs = interpolate2d(rpm, engineConfiguration->sparkDwellBins, engineConfiguration->sparkDwell, DWELL_CURVE_SIZE);
}
if (cisnan(dwellMs) || dwellMs < 0) {
firmwareError(CUSTOM_ERR_DWELL_DURATION, "invalid dwell: %f at %d", dwellMs, rpm);
}
return dwellMs;
}
static int findAngleIndex(float target DECLARE_ENGINE_PARAMETER_S) {

View File

@ -177,7 +177,7 @@ static void seScheduleByTime(const char *prefix, scheduling_s *scheduling, efiti
scheduleByTime(true, prefix, scheduling, time, callback, pair);
}
static void scheduleFuelInjection(int rpm, int injEventIndex, OutputSignal *signal, efitimeus_t nowUs, floatus_t delayUs, floatus_t durationUs, InjectorOutputPin *output DECLARE_ENGINE_PARAMETER_S) {
static void scheduleFuelInjection(int rpm, OutputSignal *signal, efitimeus_t nowUs, floatus_t delayUs, floatus_t durationUs, InjectorOutputPin *output DECLARE_ENGINE_PARAMETER_S) {
if (durationUs < 0) {
warning(CUSTOM_OBD_3, "duration cannot be negative: %d", durationUs);
return;
@ -308,7 +308,7 @@ static ALWAYS_INLINE void handleFuelInjectionEvent(int injEventIndex, InjectionE
prevOutputName = outputName;
}
scheduleFuelInjection(rpm, injEventIndex, signal, getTimeNowUs(), injectionStartDelayUs, MS2US(injectionDuration), event->output PASS_ENGINE_PARAMETER);
scheduleFuelInjection(rpm, signal, getTimeNowUs(), injectionStartDelayUs, MS2US(injectionDuration), event->output PASS_ENGINE_PARAMETER);
}
}
@ -431,20 +431,6 @@ void showMainHistogram(void) {
#endif
}
// todo: the method name is not correct any more - no calc is done here anymore
static ALWAYS_INLINE void ignitionMathCalc(int rpm DECLARE_ENGINE_PARAMETER_S) {
/**
* Within one engine cycle all cylinders are fired with same timing advance.
* todo: one day we can control cylinders individually?
*/
float dwellMs = ENGINE(engineState.sparkDwell);
if (cisnan(dwellMs) || dwellMs < 0) {
firmwareError(CUSTOM_ERR_DWELL_DURATION, "invalid dwell: %f at %d", dwellMs, rpm);
return;
}
}
#if EFI_PROD_CODE || defined(__DOXYGEN__)
/**
* this field is used as an Expression in IAR debugger
@ -531,10 +517,6 @@ void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEventIndex D
float externalKnockValue = getVoltageDivided("knock", engineConfiguration->externalKnockSenseAdc);
engine->knockLogic(externalKnockValue);
}
ENGINE(m.beforeIgnitionMath) = GET_TIMESTAMP();
ignitionMathCalc(rpm PASS_ENGINE_PARAMETER);
ENGINE(m.ignitionMathTime) = GET_TIMESTAMP() - ENGINE(m.beforeIgnitionMath);
}

View File

@ -470,8 +470,8 @@ void triggerInfo(void) {
engine->m.fuelCalcTime);
scheduleMsg(logger,
"ignitionMathTime=%d ignitionSchTime=%d injectonSchTime=%d",
engine->m.ignitionMathTime, engine->m.ignitionSchTime,
"ignitionSchTime=%d injectonSchTime=%d",
engine->m.ignitionSchTime,
engine->m.injectonSchTime);
scheduleMsg(logger, "mapTime=%d/hipTime=%d/rpmTime=%d/mainTriggerCallbackTime=%d",