fome-fw/firmware/controllers/trigger/trigger_toyota.cpp

81 lines
2.1 KiB
C++
Raw Normal View History

2015-12-14 10:01:18 -08:00
/*
* @file trigger_toyota.cpp
*
* https://thedeltaecho.wordpress.com/2010/03/14/2jz-ge-cam-crank-signals/
*
* @date Dec 14, 2015
2015-12-31 13:02:30 -08:00
* @author Andrey Belomutskiy, (c) 2012-2016
2015-12-14 10:01:18 -08:00
*/
#include "trigger_toyota.h"
2015-12-14 18:01:30 -08:00
EXTERN_ENGINE;
2015-12-14 10:01:18 -08:00
2015-12-14 18:01:30 -08:00
void initialize2jzGE(TriggerShape *s) {
2016-06-11 20:02:58 -07:00
s->initialize(FOUR_STROKE_CAM_SENSOR, true);
2015-12-14 18:01:30 -08:00
2016-06-11 20:02:58 -07:00
float camD = 720 / 6; // 120
float crankAngle = 20; // skipping two teeth
for (int i = 0; i < 10; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 10
float camAngle = 0;
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 120
for (int i = 0; i < 12; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 22
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 240
for (int i = 0; i < 12; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 34
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 360
crankAngle += 20; // skipping two teeth one more time
for (int i = 0; i < 10; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 10
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 480
for (int i = 0; i < 12; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 22
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_RISE, -1, 721); // 600
for (int i = 0; i < 12; i++) {
s->addEvent(crankAngle + 5, T_SECONDARY, TV_RISE, -1, 721);
s->addEvent(crankAngle + 9.9, T_SECONDARY, TV_FALL, -1, 721); // 120
crankAngle += 10;
} // 2 + 32
camAngle += camD;
s->addEvent(camAngle, T_PRIMARY, TV_FALL, -1, 721); // 720
2015-12-14 18:01:30 -08:00
s->isSynchronizationNeeded = false;
}