Пример #1
0
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();
}
Пример #2
0
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();

}
Пример #3
0
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 =
}
Пример #4
0
void TriggerShape::clear() {
	tdcPosition = 0;
	setTriggerSynchronizationGap(2);
	// todo: true here, false in constructor() what a mess!
	useRiseEdge = true;

	invertOnAdd = false;
	gapBothDirections = false;
}
Пример #5
0
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;
}
Пример #6
0
/**
 * 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?");
}