void initializeMitsubishi4g18(trigger_shape_s *s) { s->reset(FOUR_STROKE_CAM_SENSOR); s->useRiseEdge = false; setTriggerSynchronizationGap(s, 1.6666); int secondaryWidth = 70; s->addEvent(180.0 - 131 + 5, T_PRIMARY, TV_HIGH); s->addEvent(180.0 - secondaryWidth, T_SECONDARY, TV_HIGH); s->addEvent(180.0, T_SECONDARY, TV_LOW); s->addEvent(180.0 + 49 + 5, T_PRIMARY, TV_LOW); s->addEvent(360.0 - secondaryWidth, T_SECONDARY, TV_HIGH); s->addEvent(360.0, T_SECONDARY, TV_LOW); s->addEvent(540.0 - 131 + 5, T_PRIMARY, TV_HIGH); s->addEvent(540.0 - secondaryWidth, T_SECONDARY, TV_HIGH); s->addEvent(540.0 - 131 + 5 + 90, T_PRIMARY, TV_LOW); s->addEvent(540.0, T_SECONDARY, TV_LOW); s->addEvent(720.0 - secondaryWidth, T_SECONDARY, TV_HIGH); s->addEvent(720.0, T_SECONDARY, TV_LOW); s->shaftPositionEventCount = s->getSize(); }
void initializeMazdaMiataNaShape(trigger_shape_s *s) { s->reset(FOUR_STROKE_CAM_SENSOR); setTriggerSynchronizationGap(s, 1.68f); s->useRiseEdge = false; s->isSynchronizationNeeded = true; s->addEvent(49.15363636, T_SECONDARY, TV_HIGH); s->addEvent(114.1581818, T_SECONDARY, TV_LOW); s->addEvent(213.0222222, T_PRIMARY, TV_HIGH); s->addEvent(225.759, T_SECONDARY, TV_HIGH); s->addEvent(279.54375, T_PRIMARY, TV_LOW); s->addEvent(294.786, T_SECONDARY, TV_LOW); s->addEvent(410.318, T_SECONDARY, TV_HIGH); s->addEvent(477.6911111, T_SECONDARY, TV_LOW); s->addEvent(576.4975, T_PRIMARY, TV_HIGH); s->addEvent(590.39625, T_SECONDARY, TV_HIGH); s->addEvent(656.5125, T_SECONDARY, TV_LOW); s->addEvent(720.0f, T_PRIMARY, TV_LOW); s->shaftPositionEventCount = s->getSize(); }
void configureNeon1995TriggerShape(trigger_shape_s *s) { s->reset(FOUR_STROKE_CAM_SENSOR); setTriggerSynchronizationGap(s, 0.72); s->useRiseEdge = false; // voodoo magic - we always need 720 at the end int base = 720 - 560; s->initialState[T_PRIMARY] = 1; s->addEvent(base - 720 + 600, T_SECONDARY, TV_HIGH); s->addEvent(base - 720 + 604, T_SECONDARY, TV_LOW); s->addEvent(base - 720 + 616, T_SECONDARY, TV_HIGH); s->addEvent(base - 720 + 620, T_SECONDARY, TV_LOW); s->addEvent(base - 720 + 643, T_SECONDARY, TV_HIGH); s->addEvent(base - 720 + 648, T_SECONDARY, TV_LOW); s->addEvent(base - 720 + 671, T_SECONDARY, TV_HIGH); s->addEvent(base - 720 + 676, T_SECONDARY, TV_LOW); s->addEvent(base + 0, T_PRIMARY, TV_LOW); s->addEvent(base + 20, T_SECONDARY, TV_HIGH); s->addEvent(base + 60, T_SECONDARY, TV_LOW); s->addEvent(base + 75, T_SECONDARY, TV_HIGH); s->addEvent(base + 79, T_SECONDARY, TV_LOW); s->addEvent(base + 101, T_SECONDARY, TV_HIGH); s->addEvent(base + 106, T_SECONDARY, TV_LOW); s->addEvent(base + 130, T_SECONDARY, TV_HIGH); s->addEvent(base + 135, T_SECONDARY, TV_LOW); s->addEvent(base + 200, T_PRIMARY, TV_HIGH); // width = 150 s->addEvent(base + 236, T_SECONDARY, TV_HIGH); s->addEvent(base + 239, T_SECONDARY, TV_LOW); s->addEvent(base + 250, T_SECONDARY, TV_HIGH); s->addEvent(base + 255, T_SECONDARY, TV_LOW); s->addEvent(base + 277, T_SECONDARY, TV_HIGH); s->addEvent(base + 282, T_SECONDARY, TV_LOW); s->addEvent(base + 305, T_SECONDARY, TV_HIGH); s->addEvent(base + 310, T_SECONDARY, TV_LOW); s->addEvent(base + 374, T_SECONDARY, TV_HIGH); s->addEvent(base + 395, T_PRIMARY, TV_LOW); // width = s->addEvent(base + 418, T_SECONDARY, TV_LOW); s->addEvent(base + 436, T_SECONDARY, TV_HIGH); s->addEvent(base + 441, T_SECONDARY, TV_LOW); s->addEvent(base + 463, T_SECONDARY, TV_HIGH); s->addEvent(base + 468, T_SECONDARY, TV_LOW); s->addEvent(base + 492, T_SECONDARY, TV_HIGH); s->addEvent(base + 497, T_SECONDARY, TV_LOW); s->addEvent(base + 560, T_PRIMARY, TV_HIGH); // width = }
void TriggerShape::clear() { tdcPosition = 0; setTriggerSynchronizationGap(2); // todo: true here, false in constructor() what a mess! useRiseEdge = true; invertOnAdd = false; gapBothDirections = false; }
void initializeMazdaMiataNbShape(trigger_shape_s *s) { setTriggerSynchronizationGap(s, 0.11f); s->useRiseEdge = false; s->reset(FOUR_STROKE_CAM_SENSOR); /** * cam sensor is primary, crank sensor is secondary */ s->addEvent(20.0f, T_PRIMARY, TV_HIGH); s->addEvent(66.0f, T_SECONDARY, TV_LOW); s->addEvent(70.0f, T_SECONDARY, TV_HIGH); s->addEvent(136.0f, T_SECONDARY, TV_LOW); s->addEvent(140.0f, T_SECONDARY, TV_HIGH); s->addEvent(246.0f, T_SECONDARY, TV_LOW); s->addEvent(250.0f, T_SECONDARY, TV_HIGH); s->addEvent(316.0f, T_SECONDARY, TV_LOW); s->addEvent(320.0f, T_SECONDARY, TV_HIGH); s->addEvent(340.0f, T_PRIMARY, TV_LOW); s->addEvent(360.0f, T_PRIMARY, TV_HIGH); s->addEvent(380.0f, T_PRIMARY, TV_LOW); s->addEvent(400.0f, T_PRIMARY, TV_HIGH); s->addEvent(426.0f, T_SECONDARY, TV_LOW); s->addEvent(430.0f, T_SECONDARY, TV_HIGH); s->addEvent(496.0f, T_SECONDARY, TV_LOW); s->addEvent(500.0f, T_SECONDARY, TV_HIGH); s->addEvent(606.0f, T_SECONDARY, TV_LOW); s->addEvent(610.0f, T_SECONDARY, TV_HIGH); s->addEvent(676.0f, T_SECONDARY, TV_LOW); s->addEvent(680.0f, T_SECONDARY, TV_HIGH); s->addEvent(720.0f, T_PRIMARY, TV_LOW); s->shaftPositionEventCount = 6 + 16; }
/** * External logger is needed because at this point our logger is not yet initialized */ void initializeTriggerShape(Logging *logger, engine_configuration_s *engineConfiguration, engine_configuration2_s *engineConfiguration2) { #if EFI_PROD_CODE scheduleMsg(logger, "initializeTriggerShape()"); #endif trigger_config_s *triggerConfig = &engineConfiguration->triggerConfig; trigger_shape_s *triggerShape = &engineConfiguration2->triggerShape; setTriggerSynchronizationGap(triggerShape, 2); triggerShape->useRiseEdge = TRUE; switch (triggerConfig->triggerType) { case TT_TOOTHED_WHEEL: // todo: move to into configuration definition engineConfiguration2->triggerShape.needSecondTriggerInput = false; engineConfiguration2->triggerShape.isSynchronizationNeeded = engineConfiguration->triggerConfig.customIsSynchronizationNeeded; initializeSkippedToothTriggerShapeExt(triggerShape, triggerConfig->customTotalToothCount, triggerConfig->customSkippedToothCount, getOperationMode(engineConfiguration)); return; case TT_MAZDA_MIATA_NA: initializeMazdaMiataNaShape(triggerShape); return; case TT_MAZDA_MIATA_NB: initializeMazdaMiataNbShape(triggerShape); return; case TT_DODGE_NEON: configureNeonTriggerShape(triggerShape); return; case TT_FORD_ASPIRE: configureFordAspireTriggerShape(triggerConfig, triggerShape); return; case TT_GM_7X: configureGmTriggerShape(triggerConfig, triggerShape); return; case TT_FORD_ESCORT_GT: configureMazdaProtegeLx(triggerShape); return; case TT_MINI_COOPER_R50: configureMiniCooperTriggerShape(triggerShape); return; case TT_TOOTHED_WHEEL_60_2: setToothedWheelConfiguration(triggerShape, 60, 2, engineConfiguration); setTriggerSynchronizationGap(triggerShape, 2.5); return; case TT_TOOTHED_WHEEL_36_1: setToothedWheelConfiguration(triggerShape, 36, 1, engineConfiguration); return; case TT_HONDA_ACCORD_CD_TWO_WIRES: configureHondaAccordCD(triggerShape, false); return; case TT_HONDA_ACCORD_CD: configureHondaAccordCD(triggerShape, true); return; case TT_HONDA_ACCORD_CD_DIP: configureHondaAccordCDDip(triggerShape); return; case TT_MITSU: initializeMitsubishi4g18(triggerShape); return; default: firmwareError("initializeTriggerShape() not implemented: %d", triggerConfig->triggerType); ; } if (engineConfiguration2->triggerShape.shaftPositionEventCount != engineConfiguration2->triggerShape.getSize()) firmwareError("trigger size or shaftPositionEventCount?"); }