auto-sync

This commit is contained in:
rusEfi 2016-12-05 22:01:54 -05:00
parent 1ae9149e60
commit 2baaae64e7
10 changed files with 15 additions and 15 deletions

View File

@ -100,7 +100,7 @@ angle_t getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_S) {
} }
} }
angle -= engineConfiguration->ignitionOffset; angle -= engineConfiguration->ignitionOffset;
fixAngle(angle); fixAngle(angle, "getAdvance");
return angle; return angle;
} }

View File

@ -329,7 +329,7 @@ void Engine::periodicFastCallback(DECLARE_ENGINE_PARAMETER_F) {
for (int i = 0; i < engineConfiguration->specs.cylindersCount; i++) { for (int i = 0; i < engineConfiguration->specs.cylindersCount; i++) {
angle_t cylinderOffset = getEngineCycle(engineConfiguration->operationMode) * i / engineConfiguration->specs.cylindersCount; angle_t cylinderOffset = getEngineCycle(engineConfiguration->operationMode) * i / engineConfiguration->specs.cylindersCount;
float cylinderStart = start + cylinderOffset - offsetAngle + tdcPosition(); float cylinderStart = start + cylinderOffset - offsetAngle + tdcPosition();
fixAngle(cylinderStart); fixAngle(cylinderStart, "cylinderStart");
engine->engineState.mapAveragingStart[i] = cylinderStart; engine->engineState.mapAveragingStart[i] = cylinderStart;
} }
engine->engineState.mapAveragingDuration = interpolate2d(rpm, c->samplingWindowBins, c->samplingWindow, MAP_WINDOW_SIZE); engine->engineState.mapAveragingDuration = interpolate2d(rpm, c->samplingWindowBins, c->samplingWindow, MAP_WINDOW_SIZE);

View File

@ -89,7 +89,7 @@ floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_S) {
angle_t getinjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_S) { angle_t getinjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_S) {
float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F); float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_F);
angle_t result = fuelPhaseMap.getValue(rpm, engineLoad) + CONFIG(extraInjectionOffset); angle_t result = fuelPhaseMap.getValue(rpm, engineLoad) + CONFIG(extraInjectionOffset);
fixAngle(result); fixAngle(result, "inj offset");
return result; return result;
} }

View File

@ -198,7 +198,7 @@ static void mapAveragingCallback(trigger_event_e ckpEventType,
} }
angle_t samplingEnd = samplingStart + samplingDuration; angle_t samplingEnd = samplingStart + samplingDuration;
fixAngle(samplingEnd); fixAngle(samplingEnd, "samplingEnd");
if (!cisnan(samplingEnd)) { if (!cisnan(samplingEnd)) {
// only if value is already prepared // only if value is already prepared
int structIndex = getRevolutionCounter() % 2; int structIndex = getRevolutionCounter() % 2;

View File

@ -165,7 +165,7 @@ void FuelSchedule::addFuelEventsForCylinder(int i DECLARE_ENGINE_PARAMETER_S) {
#if EFI_UNIT_TEST #if EFI_UNIT_TEST
ev->engine = engine; ev->engine = engine;
#endif #endif
fixAngle(angle); fixAngle(angle, "addFuel#1");
ev->outputs[0] = output; ev->outputs[0] = output;
ev->outputs[1] = secondOutput; ev->outputs[1] = secondOutput;
@ -257,7 +257,7 @@ static int findAngleIndex(float target DECLARE_ENGINE_PARAMETER_S) {
void findTriggerPosition(event_trigger_position_s *position, angle_t angleOffset DECLARE_ENGINE_PARAMETER_S) { void findTriggerPosition(event_trigger_position_s *position, angle_t angleOffset DECLARE_ENGINE_PARAMETER_S) {
// convert engine cycle angle into trigger cycle angle // convert engine cycle angle into trigger cycle angle
angleOffset += tdcPosition(); angleOffset += tdcPosition();
fixAngle(angleOffset); fixAngle(angleOffset, "addFuel#2");
int index = TRIGGER_SHAPE(triggerIndexByAngle[(int)angleOffset]); int index = TRIGGER_SHAPE(triggerIndexByAngle[(int)angleOffset]);
angle_t eventAngle = TRIGGER_SHAPE(eventAngles[index]); angle_t eventAngle = TRIGGER_SHAPE(eventAngles[index]);

View File

@ -20,9 +20,9 @@ void findTriggerPosition(
event_trigger_position_s *position, angle_t angleOffset DECLARE_ENGINE_PARAMETER_S); event_trigger_position_s *position, angle_t angleOffset DECLARE_ENGINE_PARAMETER_S);
#if EFI_ENABLE_ASSERTS #if EFI_ENABLE_ASSERTS
#define assertAngleRange(angle) if(angle > 10000000 || angle < -10000000) { firmwareError(OBD_PCM_Processor_Fault, "angle range");angle = 0;} #define assertAngleRange(angle, msg) if(angle > 10000000 || angle < -10000000) { firmwareError(OBD_PCM_Processor_Fault, "angle range %s %f", angle, msg);angle = 0;}
#else #else
#define assertAngleRange(angle) {} #define assertAngleRange(angle, msg) {}
#endif #endif
void setInjectorLag(float value DECLARE_ENGINE_PARAMETER_S); void setInjectorLag(float value DECLARE_ENGINE_PARAMETER_S);
@ -32,9 +32,9 @@ void setInjectorLag(float value DECLARE_ENGINE_PARAMETER_S);
* @brief Shifts angle into the [0..720) range for four stroke and [0..360) for two stroke * @brief Shifts angle into the [0..720) range for four stroke and [0..360) for two stroke
* I guess this implementation would be faster than 'angle % engineCycle' * I guess this implementation would be faster than 'angle % engineCycle'
*/ */
#define fixAngle(angle) \ #define fixAngle(angle, msg) \
{ \ { \
assertAngleRange(angle); \ assertAngleRange(angle, msg); \
float engineCycleDurationLocalCopy = ENGINE(engineCycle); \ float engineCycleDurationLocalCopy = ENGINE(engineCycle); \
/* todo: split this method into 'fixAngleUp' and 'fixAngleDown'*/ \ /* todo: split this method into 'fixAngleUp' and 'fixAngleDown'*/ \
/* as a performance optimization?*/ \ /* as a performance optimization?*/ \

View File

@ -120,7 +120,7 @@ void hwHandleVvtCamSignal(trigger_value_e front) {
// convert engine cycle angle into trigger cycle angle // convert engine cycle angle into trigger cycle angle
vvtPosition -= tdcPosition(); vvtPosition -= tdcPosition();
fixAngle(vvtPosition); fixAngle(vvtPosition, "vvtPosition");
tc->vvtPosition = vvtPosition + engineConfiguration->vvtOffset; tc->vvtPosition = vvtPosition + engineConfiguration->vvtOffset;

View File

@ -323,7 +323,7 @@ void TriggerState::decodeTriggerEvent(trigger_event_e const signal, efitime_t no
angle_t currentAngle = TRIGGER_SHAPE(eventAngles[currentCycle.current_index]); angle_t currentAngle = TRIGGER_SHAPE(eventAngles[currentCycle.current_index]);
// todo: make this '90' depend on cylinder count? // todo: make this '90' depend on cylinder count?
angle_t prevAngle = currentAngle - 90; angle_t prevAngle = currentAngle - 90;
fixAngle(prevAngle); fixAngle(prevAngle, "prevAngle");
// todo: prevIndex should be pre-calculated // todo: prevIndex should be pre-calculated
int prevIndex = TRIGGER_SHAPE(triggerIndexByAngle[(int)prevAngle]); int prevIndex = TRIGGER_SHAPE(triggerIndexByAngle[(int)prevAngle]);
// now let's get precise angle for that event // now let's get precise angle for that event
@ -332,7 +332,7 @@ void TriggerState::decodeTriggerEvent(trigger_event_e const signal, efitime_t no
// uint32_t time = nowNt - timeOfLastEvent[prevIndex]; // uint32_t time = nowNt - timeOfLastEvent[prevIndex];
angle_t angleDiff = currentAngle - prevAngle; angle_t angleDiff = currentAngle - prevAngle;
// todo: angle diff should be pre-calculated // todo: angle diff should be pre-calculated
fixAngle(angleDiff); fixAngle(angleDiff, "angleDiff");
// float r = (60000000.0 / 360 * US_TO_NT_MULTIPLIER) * angleDiff / time; // float r = (60000000.0 / 360 * US_TO_NT_MULTIPLIER) * angleDiff / time;

View File

@ -66,7 +66,7 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE
int triggerDefinitionCoordinate = (triggerShapeSynchPointIndex + eventIndex) % engine->engineCycleEventCount; int triggerDefinitionCoordinate = (triggerShapeSynchPointIndex + eventIndex) % engine->engineCycleEventCount;
int triggerDefinitionIndex = triggerDefinitionCoordinate >= size ? triggerDefinitionCoordinate - size : triggerDefinitionCoordinate; int triggerDefinitionIndex = triggerDefinitionCoordinate >= size ? triggerDefinitionCoordinate - size : triggerDefinitionCoordinate;
float angle = getAngle(triggerDefinitionCoordinate) - firstAngle; float angle = getAngle(triggerDefinitionCoordinate) - firstAngle;
fixAngle(angle); fixAngle(angle, "trgSync");
if (engineConfiguration->useOnlyRisingEdgeForTrigger) { if (engineConfiguration->useOnlyRisingEdgeForTrigger) {
if (isFrontEvent[triggerDefinitionIndex]) { if (isFrontEvent[triggerDefinitionIndex]) {
frontOnlyIndex += 2; frontOnlyIndex += 2;

View File

@ -243,7 +243,7 @@ static void reportWave(Logging *logging, int index) {
appendPrintf(logging, "advance%d%s", index, DELIMETER); appendPrintf(logging, "advance%d%s", index, DELIMETER);
float angle = (offsetUs / oneDegreeUs) - tdcPosition(); float angle = (offsetUs / oneDegreeUs) - tdcPosition();
fixAngle(angle); fixAngle(angle, "angle");
appendFloat(logging, angle, 3); appendFloat(logging, angle, 3);
appendPrintf(logging, "%s", DELIMETER); appendPrintf(logging, "%s", DELIMETER);
} }