we have the copy of fuel schedule we use and we have the second copy which we are calculating in background, and then re-using 1st to recalculate while using 2nd
the bug was about swapping these pointers two fast: during one engine cycle, it was doing the swap twice thus adjusting the copy of the schedule we are running. while adjusting it sometimes it was clean and sometimes the offset got moved sooner which would cause a miss if we are already after the original injection trigger index
another issue is caused by a combination of injection phase of 180 degrees and injection duty cycle transition from below 25% to above 25% and back - this case the injection sequence for engine cycle changes from 1-2-1-2 to 2-1-2-1
set_engine_type 41
enable self_stimulation
rpm 2900
disable sd
set warningperiod 0
writeconfig
(play with a potentiometer connected to GND<>PA7<>VCC)
Last edit: Andrey B 2016-08-05
also in simulator
set_engine_type 41
rpm 2900
set engineSnifferRpmThreshold 15000
set_mock_map_voltage 3
set_mock_map_voltage 1
set_mock_map_voltage 3
set_mock_map_voltage 1
set_mock_map_voltage 3
Last edit: Andrey B 2016-08-05
here's what was wrong here:
we have the copy of fuel schedule we use and we have the second copy which we are calculating in background, and then re-using 1st to recalculate while using 2nd
the bug was about swapping these pointers two fast: during one engine cycle, it was doing the swap twice thus adjusting the copy of the schedule we are running. while adjusting it sometimes it was clean and sometimes the offset got moved sooner which would cause a miss if we are already after the original injection trigger index
2016-08-05 08_52: EngineState: events add 2 2
2016-08-05 08_52: EngineState: events add 6 3
2016-08-05 08_52: EngineState: events add 8 4
2016-08-05 08_52: EngineState: handleFuel ind=8 6510
2016-08-05 08_52: EngineState: handleFuel pin=i2 eventIndex 3 duration=6.06ms 6510
2016-08-05 08_52: EngineState: handleFuel pin=i2 delay=3605.93 6510
2016-08-05 08_52: EngineState: handleFuel ind=0 6511
2016-08-05 08_52: EngineState: handleFuel pin=i1 eventIndex 0 duration=5.90ms 6511
2016-08-05 08_52: EngineState: handleFuel pin=i1 delay=319.64 6511
2016-08-05 08_52: EngineState: events reset 6511
2016-08-05 08_52: EngineState: events add 0 1
2016-08-05 08_52: EngineState: events add 2 2
2016-08-05 08_52: EngineState: events add 6 3
2016-08-05 08_52: EngineState: events add 8 4
2016-08-05 08_52: EngineState: handleFuel ind=2 6511
2016-08-05 08_52: EngineState: handleFuel pin=i2 eventIndex 1 duration=5.74ms 6511
2016-08-05 08_52: EngineState: handleFuel pin=i2 delay=3944.20 6511
2016-08-05 08_52: EngineState: handleFuel ind=6 6511
2016-08-05 08_52: EngineState: handleFuel pin=i1 eventIndex 2 duration=6.23ms 6511
2016-08-05 08_52: EngineState: handleFuel pin=i1 delay=3943.60 6511
2016-08-05 08_52: EngineState: events reset 6511
2016-08-05 08_52: EngineState: events add 0 1
2016-08-05 08_52: EngineState: events add 2 2
2016-08-05 08_52: EngineState: events add 6 3
2016-08-05 08_52: EngineState: events add 8 4
2016-08-05 08_52: EngineState: handleFuel ind=8 6511
2016-08-05 08_52: EngineState: handleFuel pin=i2 eventIndex 3 duration=6.06ms 6511
2016-08-05 08_52: EngineState: handleFuel pin=i2 delay=3609.32 6511
2016-08-05 08_52: EngineState: events reset 6511
2016-08-05 08_52: EngineState: events add 0 1
2016-08-05 08_52: EngineState: events add 2 2
2016-08-05 08_52: EngineState: events add 6 3
2016-08-05 08_52: EngineState: events add 8 4
2016-08-05 08_52: EngineState: handleFuel ind=0 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 eventIndex 0 duration=6.23ms 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 delay=646.06 6512
2016-08-05 08_52: EngineState: handleFuel ind=2 6512
2016-08-05 08_52: EngineState: handleFuel pin=i2 eventIndex 1 duration=6.06ms 6512
2016-08-05 08_52: EngineState: handleFuel pin=i2 delay=3942.84 6512
2016-08-05 08_52: EngineState: handleFuel ind=6 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 eventIndex 2 duration=3.31ms 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 delay=3942.24 6512
2016-08-05 08_52: EngineState: events reset 6512
2016-08-05 08_52: EngineState: events add 1 1
2016-08-05 08_52: EngineState: events add 4 2
2016-08-05 08_52: EngineState: events add 7 3
2016-08-05 08_52: EngineState: events add 10 4
2016-08-05 08_52: EngineState: handleFuel ind=7 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 eventIndex 2 duration=5.74ms 6512
2016-08-05 08_52: EngineState: handleFuel pin=i1 delay=225.67 6512
2016-08-05 08_52: EngineState: WARNING: looks like skipped fuel event 6512 i1
2016-08-05 08_52: EngineState: handleFuel ind=10 6512
2016-08-05 08_52: EngineState: handleFuel pin=i2 eventIndex 3 duration=6.23ms 6512
2016-08-05 08_52: EngineState: handleFuel pin=i2 delay=200.96 6512
2016-08-05 08_52: EngineState: events reset 6512
fixed #10325
PS: not fixed - there are more use-cases
Last edit: Andrey B 2016-11-08
set_engine_type 41
enable self_stimulation
set engineSnifferRpmThreshold 1500000
rpm 4500
disable sd
set warningperiod 0
writeconfig
Last edit: Andrey B 2016-08-09
another issue is caused by a combination of injection phase of 180 degrees and injection duty cycle transition from below 25% to above 25% and back - this case the injection sequence for engine cycle changes from 1-2-1-2 to 2-1-2-1
Last edit: Andrey B 2016-08-26
spark issue:
rpm 3280
disable injection
set_mock_map_voltage 1
set_whole_timing_map 40
set_whole_timing_map 30
set_whole_timing_map 40
===========================
set_global_trigger_offset_angle 0
set_whole_timing_map 0
set_whole_timing_map 40
Last edit: Andrey B 2016-11-08
getting closer
even closer
10926 has new spark sheduling algorithm
fuel logic changed at 10970