trigger: subaru 7+6: update cranck angles, add comments (#2789)

This commit is contained in:
Andrey G 2021-06-02 19:19:52 +03:00 committed by GitHub
parent ab214f974c
commit e561836c58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 57 additions and 44 deletions

View File

@ -49,77 +49,90 @@ void initialize36_2_2_2(TriggerWaveform *s) {
static void initializeSubaru7_6(TriggerWaveform *s, bool withCrankWheel) {
s->initialize(FOUR_STROKE_CAM_SENSOR);
float magic = 333;
/* To make trigger decoder happy last event should be exactly at 720
* This code generates two trigger patterns: crank+cam (7+6) and
* cam only (7-6).
* So last event should be CAM event
* Crank: --------||-|---||-|-----||-|---||-|
* Cam: -|-|-|------|------!-|------|------
* '!' pulse is selected as event at 720
* So next event is the first one on following description
* '!' pulse happens 20 degrees ATDC #2 (third in order)
* or 180 + 180 + 20. So we have */
s->tdcPosition = 160 + 360;
float width = 5;
s->addEvent720(15 - width, T_PRIMARY, TV_RISE);
s->addEvent720(15, T_PRIMARY, TV_FALL);
/* 97 degrees BTDC, but we have 20 degrees shift:
* 180 - 97 - 20 = 63 */
#define SUBARU76_CRANK_PULSE0(cycle) \
s->addEvent720((180 * (cycle)) + 63 - width, T_SECONDARY, TV_RISE); \
s->addEvent720((180 * (cycle)) + 63, T_SECONDARY, TV_FALL)
/* 65 degrees BTDC, but we have 20 degrees shift:
* 180 - 65 - 20 = 95 */
#define SUBARU76_CRANK_PULSE1(cycle) \
s->addEvent720((180 * (cycle)) + 95 - width, T_SECONDARY, TV_RISE); \
s->addEvent720((180 * (cycle)) + 95, T_SECONDARY, TV_FALL)
/* 10 degrees BTDC, but we have 20 degrees shift:
* 180 - 10 - 20 = 150 */
#define SUBARU76_CRANK_PULSE2(cycle) \
s->addEvent720((180 * (cycle)) + 150 - width, T_SECONDARY, TV_RISE); \
s->addEvent720((180 * (cycle)) + 150, T_SECONDARY, TV_FALL)
#define SUBARU76_CAM_PULSE(cycle, offset) \
s->addEvent720((180 * (cycle)) + (offset) - width, T_PRIMARY, TV_RISE); \
s->addEvent720((180 * (cycle)) + (offset), T_PRIMARY, TV_FALL)
/* (TDC#2 + 20) + 15 */
SUBARU76_CAM_PULSE(0, +15);
if (withCrankWheel) {
s->addEvent720(66 - width, T_SECONDARY, TV_RISE);
s->addEvent720(66, T_SECONDARY, TV_FALL);
s->addEvent720(98 - width, T_SECONDARY, TV_RISE);
s->addEvent720(98, T_SECONDARY, TV_FALL);
s->addEvent720(153 - width, T_SECONDARY, TV_RISE);
s->addEvent720(153, T_SECONDARY, TV_FALL);
SUBARU76_CRANK_PULSE0(0);
SUBARU76_CRANK_PULSE1(0);
SUBARU76_CRANK_PULSE2(0);
}
s->addEvent720(180 - width, T_PRIMARY, TV_RISE);
s->addEvent720(180, T_PRIMARY, TV_FALL);
/* (TDC#4 + 20) */
SUBARU76_CAM_PULSE(1, 0);
if (withCrankWheel) {
s->addEvent720(246 - width, T_SECONDARY, TV_RISE);
s->addEvent720(246, T_SECONDARY, TV_FALL);
s->addEvent720(magic - 55 - width, T_SECONDARY, TV_RISE);
s->addEvent720(magic - 55, T_SECONDARY, TV_FALL);
s->addEvent720(333 - width, T_SECONDARY, TV_RISE);
s->addEvent720(333, T_SECONDARY, TV_FALL);
SUBARU76_CRANK_PULSE0(1);
SUBARU76_CRANK_PULSE1(1);
SUBARU76_CRANK_PULSE2(1);
}
s->addEvent720(345 - width, T_PRIMARY, TV_RISE);
s->addEvent720(345, T_PRIMARY, TV_FALL);
/* (TDC#1 + 20) - 15 */
SUBARU76_CAM_PULSE(2, -15);
s->addEvent720(360 - width, T_PRIMARY, TV_RISE);
s->addEvent720(360, T_PRIMARY, TV_FALL);
/* (TDC#1 + 20) */
SUBARU76_CAM_PULSE(2, 0);
s->addEvent720(375 - width, T_PRIMARY, TV_RISE);
s->addEvent720(375, T_PRIMARY, TV_FALL);
/* (TDC#1 + 20) + 15 */
SUBARU76_CAM_PULSE(2, +15);
if (withCrankWheel) {
s->addEvent720(426 - width, T_SECONDARY, TV_RISE);
s->addEvent720(426, T_SECONDARY, TV_FALL);
s->addEvent720(magic + 180 - 55 - width, T_SECONDARY, TV_RISE);
s->addEvent720(magic + 180 - 55, T_SECONDARY, TV_FALL);
s->addEvent720(513 - width, T_SECONDARY, TV_RISE);
s->addEvent720(513, T_SECONDARY, TV_FALL);
SUBARU76_CRANK_PULSE0(2);
SUBARU76_CRANK_PULSE1(2);
SUBARU76_CRANK_PULSE2(2);
}
s->addEvent720(540 - width, T_PRIMARY, TV_RISE);
s->addEvent720(540, T_PRIMARY, TV_FALL);
/* (TDC#3 + 20) */
SUBARU76_CAM_PULSE(3, 0);
if (withCrankWheel) {
s->addEvent720(606 - width, T_SECONDARY, TV_RISE);
s->addEvent720(606, T_SECONDARY, TV_FALL);
s->addEvent720(magic + 360 - 55 - width, T_SECONDARY, TV_RISE);
s->addEvent720(magic + 360 - 55, T_SECONDARY, TV_FALL);
s->addEvent720(693 - width, T_SECONDARY, TV_RISE);
s->addEvent720(693, T_SECONDARY, TV_FALL);
SUBARU76_CRANK_PULSE0(3);
SUBARU76_CRANK_PULSE1(3);
SUBARU76_CRANK_PULSE2(3);
}
s->addEvent720(720 - width, T_PRIMARY, TV_RISE);
s->addEvent720(720, T_PRIMARY, TV_FALL);
/* (TDC#2 + 20) */
SUBARU76_CAM_PULSE(4, 0);
// why is this trigger gap wider than average?
s->setTriggerSynchronizationGap2(6.53 * TRIGGER_GAP_DEVIATION_LOW, 10.4 * TRIGGER_GAP_DEVIATION_HIGH);
s->setTriggerSynchronizationGap3(1, 0.8 * TRIGGER_GAP_DEVIATION_LOW, 1 * TRIGGER_GAP_DEVIATION_HIGH);
s->useOnlyPrimaryForSync = true;
}
void initializeSubaruOnly7(TriggerWaveform *s) {