diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index 50ccbc9d61..14831e1ad4 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -187,8 +187,8 @@ void setDodgeNeonNGCEngineConfiguration(engine_configuration_s *engineConfigurat setFrankenso_01_LCD(boardConfiguration); setFrankenso0_1_joystick(engineConfiguration); - // set_global_trigger_offset_angle 46 - engineConfiguration->globalTriggerAngleOffset = 46; + // set_global_trigger_offset_angle 50 + engineConfiguration->globalTriggerAngleOffset = 50; // set_injection_offset 0 engineConfiguration->injectionAngle = 0; diff --git a/firmware/controllers/trigger/trigger_chrysler.cpp b/firmware/controllers/trigger/trigger_chrysler.cpp index cb01d59ca2..9d7a973b1f 100644 --- a/firmware/controllers/trigger/trigger_chrysler.cpp +++ b/firmware/controllers/trigger/trigger_chrysler.cpp @@ -12,14 +12,15 @@ void configureNeon2003TriggerShape(TriggerShape *s) { // voodoo magic - we always need 720 at the end int base = 10; + float b = 0; s->useRiseEdge = true; - s->invertOnAdd = true; s->gapBothDirections = true; // are these non-default values really needed here now that the gap is finally precise? s->setTriggerSynchronizationGap2(0.8 * CHRYSLER_NGC_GAP, 1.55 * CHRYSLER_NGC_GAP); + /* s->addEvent(base + 26, T_PRIMARY, TV_HIGH); s->addEvent(base + 62, T_PRIMARY, TV_LOW); @@ -40,6 +41,29 @@ void configureNeon2003TriggerShape(TriggerShape *s) { s->addEvent(base + 674, T_PRIMARY, TV_HIGH); s->addEvent(base + 710, T_PRIMARY, TV_LOW); + * + */ + + s->addEvent(143.0712499, T_PRIMARY, TV_HIGH); + s->addEvent(182.684791, T_PRIMARY, TV_LOW); + + s->addEvent(215.424166, T_PRIMARY, TV_HIGH); + s->addEvent(256.247395, T_PRIMARY, TV_LOW); + + s->addEvent(288.659999, T_PRIMARY, TV_HIGH); + s->addEvent(326.778229, T_PRIMARY, TV_LOW); + + s->addEvent(361.522083, T_PRIMARY, TV_HIGH); + s->addEvent(508.960416, T_PRIMARY, TV_LOW); + + s->addEvent(545.635, T_PRIMARY, TV_HIGH); + s->addEvent(582.98864, T_PRIMARY, TV_LOW); + + s->addEvent(617.22989, T_PRIMARY, TV_HIGH); + s->addEvent(653.38625, T_PRIMARY, TV_LOW); + + s->addEvent(684.1080, T_PRIMARY, TV_HIGH); + s->addEvent(720, T_PRIMARY, TV_LOW); } void configureNeon1995TriggerShape(TriggerShape *s) { diff --git a/firmware/controllers/trigger/trigger_chrysler.h b/firmware/controllers/trigger/trigger_chrysler.h index 2553dbe2a1..32aa8dfa07 100644 --- a/firmware/controllers/trigger/trigger_chrysler.h +++ b/firmware/controllers/trigger/trigger_chrysler.h @@ -10,7 +10,7 @@ #include "trigger_structure.h" -#define CHRYSLER_NGC_GAP 2.9135 +#define CHRYSLER_NGC_GAP 3.9854 void configureNeon1995TriggerShape(TriggerShape *s); void configureNeon2003TriggerShape(TriggerShape *s); diff --git a/java_console/autotest/src/com/rusefi/AutoTest.java b/java_console/autotest/src/com/rusefi/AutoTest.java index e72387f77c..1498934209 100644 --- a/java_console/autotest/src/com/rusefi/AutoTest.java +++ b/java_console/autotest/src/com/rusefi/AutoTest.java @@ -33,6 +33,7 @@ public class AutoTest { nextChart(); String msg = "2003 Neon cranking"; IoUtil.changeRpm(200); + nextChart(); chart = nextChart(); double x = 100; @@ -42,10 +43,10 @@ public class AutoTest { assertWaveNull(msg, chart, WaveChart.SPARK_4); x = 176.856; - assertWave(true, msg, chart, WaveChart.INJECTOR_1, 0.008199999999, 0.01, 0.1, x, x + 180, x + 360, x + 540); - assertWave(true, msg, chart, WaveChart.INJECTOR_2, 0.008199999999, 0.01, 0.1, x, x + 180, x + 360, x + 540); - assertWave(true, msg, chart, WaveChart.INJECTOR_3, 0.008199999999, 0.01, 0.1, x, x + 180, x + 360, x + 540); - assertWave(true, msg, chart, WaveChart.INJECTOR_4, 0.008199999999, 0.01, 0.1, x, x + 180, x + 360, x + 540); + assertWave(true, msg, chart, WaveChart.INJECTOR_1, 0.006266666666, 0.01, 0.04, x, x + 180, x + 360, x + 540); + assertWave(true, msg, chart, WaveChart.INJECTOR_2, 0.006266666666, 0.01, 0.04, x, x + 180, x + 360, x + 540); + assertWave(true, msg, chart, WaveChart.INJECTOR_3, 0.006266666666, 0.01, 0.04, x, x + 180, x + 360, x + 540); + assertWave(true, msg, chart, WaveChart.INJECTOR_4, 0.006266666666, 0.01, 0.04, x, x + 180, x + 360, x + 540); msg = "2003 Neon running"; IoUtil.changeRpm(2000); diff --git a/unit_tests/test_trigger_decoder.cpp b/unit_tests/test_trigger_decoder.cpp index 35917d4a1e..a633a324ed 100644 --- a/unit_tests/test_trigger_decoder.cpp +++ b/unit_tests/test_trigger_decoder.cpp @@ -309,7 +309,7 @@ static void testTriggerDecoder2(const char *msg, engine_type_e type, int synchPo static void testTriggerDecoder3(const char *msg, engine_type_e type, int synchPointIndex, float channel1duty, float channel2duty, float expectedGap) { printGapRatio = true; testTriggerDecoder2(msg, type, synchPointIndex, channel1duty, channel2duty); - assertEqualsM("actual gap ratio", expectedGap, actualSynchGap); + assertEqualsM2("actual gap ratio", expectedGap, actualSynchGap, 0.001); printGapRatio = false; } @@ -512,7 +512,7 @@ void testTriggerDecoder(void) { testTriggerDecoder3("miata 1994", MIATA_1994_DEVIATOR, 11, 0.2985, 0.3890, MIATA_NA_GAP); testTriggerDecoder3("citroen", CITROEN_TU3JP, 0, 0.4833, 0.0, 2.9994); - testTriggerDecoder3("neon NGC", DODGE_NEON_2003, 5, 0.4861, 0.0, CHRYSLER_NGC_GAP); + testTriggerDecoder3("neon NGC", DODGE_NEON_2003, 0, 0.4786, 0.0, CHRYSLER_NGC_GAP); testTriggerDecoder2("sachs", SACHS, 0, 0.5000, 0.000); testMazda323();