Code: Select all
void initialize2jzGE3_34(TriggerWaveform *s) {
setToothedWheelConfiguration(s, 36, 2, FOUR_STROKE_CRANK_SENSOR);
s->initialize(FOUR_STROKE_CAM_SENSOR);
float camD = 720 / 6; // 120
float crankAngle = 20; // skipping two teeth
for (int i = 0; i < 10; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 10
float camAngle = 0;
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 120
for (int i = 0; i < 12; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 22
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 240
for (int i = 0; i < 12; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 34
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 360
crankAngle += 20; // skipping two teeth one more time
for (int i = 0; i < 10; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 10
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 480
for (int i = 0; i < 12; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 22
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 600
for (int i = 0; i < 12; i++) {
s->addEvent2(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent2(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 32
camAngle += camD;
s->addEvent2(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 720
s->isSynchronizationNeeded = false;
if ((crankAngle == 0) II (crankAngle == 12) II (crankAngle == 24)) {
eventcount = 0;}
else if ((crankAngle == 10) && eventcount) { goto startsync }
else if ((crankAngle == 22) && eventcount) { goto startsync }
else if ((crankAngle == 34) && eventcount) { goto startsync }
// Sync process
if ((crankAngle == 0) || (crankAngle == 46) || (crankAngle == 24)) {
eventcount = 0;
} else if (((crankAngle == 56) && (!eventcount))
|| ((crankAngle == 34) && (!eventcount)))
_______________________________________________________
I think that the key here will be that 34 tooth if you can reset and star count after see 34, next cycle will be my TDC 1st.
First TDC cycle have a tooth on 22 and second TDC have a tooth on 10 and 34, you almost no need to use the second tdc.
Can be sync on cranking and after start you can switch to your crank wheel completely and if you loose sync you can switch to waste spark and start
the cycle again. will be nice to have a indicator in tuner studio for half sync and full sync. The vvti will relays only on the 22 tooth for cam facing.
Please Comment, I appreciate you support.