mirror of https://github.com/rusefi/rusefi-1.git
parent
f68046e9af
commit
bb766ea0e5
|
@ -39,69 +39,68 @@ void configureGmTriggerShape(TriggerShape *s DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
s->setTriggerSynchronizationGap(6);
|
s->setTriggerSynchronizationGap(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int gm_tooth_pair(float startAngle, bool isLongShort, TriggerShape* s, int mult DECLARE_ENGINE_PARAMETER_SUFFIX)
|
||||||
|
{
|
||||||
|
int window = (isLongShort ? 12 : 3) * mult;
|
||||||
|
int end = startAngle + mult * 15;
|
||||||
|
|
||||||
|
s->addEvent2(startAngle + window, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
s->addEvent2(end, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TT_GM_LS_24
|
* TT_GM_LS_24
|
||||||
* https://www.mediafire.com/?40mfgeoe4ctti
|
* https://www.mediafire.com/?40mfgeoe4ctti
|
||||||
* http://www.ls1gto.com/forums/archive/index.php/t-190549.htm
|
* http://www.ls1gto.com/forums/archive/index.php/t-190549.htm
|
||||||
* http://www.ls2.com/forums/showthread.php/834483-LS-Timing-Reluctor-Wheels-Explained
|
* http://www.ls2.com/forums/showthread.php/834483-LS-Timing-Reluctor-Wheels-Explained
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* based on data in https://rusefi.com/forum/viewtopic.php?f=3&t=936&p=30303#p30285
|
||||||
*/
|
*/
|
||||||
void initGmLS24(TriggerShape *s DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
void initGmLS24(TriggerShape *s DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
s->initialize(FOUR_STROKE_CRANK_SENSOR, false);
|
s->initialize(FOUR_STROKE_CRANK_SENSOR, false);
|
||||||
trigger_wheel_e ch = T_PRIMARY;
|
trigger_wheel_e ch = T_PRIMARY;
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* based on http://rusefi.com/forum/viewtopic.php?f=3&t=936&start=30 logs
|
* Okay, here's how this magic works:
|
||||||
* todo: do we have one cycle or two cycles here? where is CRANK_MODE_MULTIPLIER?
|
* The GM 24x crank wheel has 48 edges. There is
|
||||||
|
* a falling edge every 15 degrees (1/24 revolution).
|
||||||
|
* After every falling edge, a rising edge occurs either
|
||||||
|
* 3 or 12 (= 15 - 3) degrees later. The code 0x0A33BE
|
||||||
|
* encodes the pattern of which type of gap occurs in the
|
||||||
|
* pattern. Starting from the LSB, each bit left is the
|
||||||
|
* next gap in sequence as the crank turns. A 0 indicates
|
||||||
|
* long-short, while a 1 indicates short-long.
|
||||||
|
*
|
||||||
|
* The first few bits read are 0xE (LSB first!) = 0 - 1 - 1 - 1, so the pattern
|
||||||
|
* looks like this:
|
||||||
|
* ___ _ ___ ___ ___
|
||||||
|
* |___| |_| |_| |_| |_ etc
|
||||||
|
*
|
||||||
|
* | 0 | 1 | 1 | 1 |
|
||||||
|
*
|
||||||
|
* ___ = 12 degrees, _ = 3 deg
|
||||||
|
*
|
||||||
|
* There is a falling edge at angle=0=720, and this is position
|
||||||
|
* is #1 (and #6) TDC. If there's a falling edge on the cam
|
||||||
|
* sensor, it's #1 end compression stroke (fire this plug!)
|
||||||
|
* and #6 end exhaust stroke. If rising, it's exhaust #1,
|
||||||
|
* compression #6.
|
||||||
*/
|
*/
|
||||||
s->addEvent2(22.2733333333334, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(27.59333333333338, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
uint32_t code = 0x0A33BE;
|
||||||
s->addEvent2(51.18333333333338, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(57.58333333333338, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
int angle = 0;
|
||||||
s->addEvent2(81.17333333333337, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(87.61333333333339, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
for(int i = 0; i < 24; i++)
|
||||||
s->addEvent2(111.30666666666671, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
{
|
||||||
s->addEvent2(117.81000000000004, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
bool bit = code & 0x000001;
|
||||||
s->addEvent2(141.50000000000006, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
code = code >> 1;
|
||||||
s->addEvent2(148.05666666666673, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(153.41333333333338, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
angle = gm_tooth_pair(angle, bit, s, CRANK_MODE_MULTIPLIER PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
s->addEvent2(178.29333333333338, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
}
|
||||||
s->addEvent2(183.51000000000005, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(208.3266666666667, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(213.50000000000006, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(238.26000000000005, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(243.51000000000005, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(268.27000000000004, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(273.53666666666675, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(298.35, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(321.86333333333334, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(328.4966666666667, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(333.81000000000006, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(358.66, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(363.8633333333334, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(388.7033333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(393.88000000000005, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(418.62000000000006, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(441.9566666666667, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(448.6700000000001, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(472.1000000000001, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(478.9333333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(484.08000000000004, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(509.1333333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(514.2666666666667, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(539.1733333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(562.5166666666668, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(569.1133333333333, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(592.5400000000001, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(599.1433333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(622.6300000000001, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(629.2633333333334, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(634.6, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(659.5, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(683.1133333333333, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(689.77, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(695.0666666666667, ch, TV_RISE PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
s->addEvent2(720.0, ch, TV_FALL PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
|
|
||||||
s->useOnlyPrimaryForSync = true;
|
s->useOnlyPrimaryForSync = true;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue