Question- Ignition timing logic
Posted: Wed Oct 01, 2025 4:44 pm
I have a Mega100 STM32F4 on a Speeduino UA4C running a supercharged BMW V8 in paired cylinder injection and COP waste spark.

I like to keep current on the latest firmware releases so this is on "rusEFI main.2025.09.29.mega100.3980904453"
Perhaps this has been covered already and I couldn't find it. During a datalog something caught my attention on the per cylinder ignition timing. Arranging the channels by firing order I was expecting to see the ignition timing update 1 by 1 in order. They didn't

Arrange the channels by Ignition Channel # instead of cylinder firing order, now the ignition timing does update in order and you can watch the timing cascade down as the frames are advancing like I was originally expecting by firing order.

I can verify the system does indeed repeat the 4 fuel and 4 ignition channels in order every 360 degrees. Which is why I found it odd that cyl/channels 5-6-7-8 are still updating.
If I view channels 1-2-3-4 it appears the system still uses 720 degree's to update the four channels rather than 360 degrees:

This means, depending where in the cycle the ignition timing change occurs it'll update 2 or 3 channels, a gap as the 2nd crank rotation occurs, then update the remaining channels. If the timing change occurs at the beginning of a cycle it'll update the 4 channels, pause for the 2nd crank rotation and then update the 4 channels.
In the best case scenario the reporting in the log is inaccurate and the cylinders are actually updating in firing order as the system is using the data from the first 4 cylinders and the last 4 cylinders while is cycling them every 360 degrees.
In the worst case scenario the data in the log is correct and the ignition timing doesn't update in firing order and skips revolutions.
As an experiment I did tell the system to run a 2-stroke 4 cylinder, although I couldn't get a 1-2-3-4 firing order to match the ignition channel output order. I used 1-2-4-3 as close enough to test.
On a datalog the 4 channels updating in order every 360 degrees looks like this:

The idle is smoother, the exhaust note changed and the engine is bit more rev happy. So something has appeared to change physically in this test.
If a dev familiar with the ignition timing logic in the system could help me verify what is actually happening, I'd truly appreciate it. Thanks!

I like to keep current on the latest firmware releases so this is on "rusEFI main.2025.09.29.mega100.3980904453"
Perhaps this has been covered already and I couldn't find it. During a datalog something caught my attention on the per cylinder ignition timing. Arranging the channels by firing order I was expecting to see the ignition timing update 1 by 1 in order. They didn't

Arrange the channels by Ignition Channel # instead of cylinder firing order, now the ignition timing does update in order and you can watch the timing cascade down as the frames are advancing like I was originally expecting by firing order.

I can verify the system does indeed repeat the 4 fuel and 4 ignition channels in order every 360 degrees. Which is why I found it odd that cyl/channels 5-6-7-8 are still updating.
If I view channels 1-2-3-4 it appears the system still uses 720 degree's to update the four channels rather than 360 degrees:

This means, depending where in the cycle the ignition timing change occurs it'll update 2 or 3 channels, a gap as the 2nd crank rotation occurs, then update the remaining channels. If the timing change occurs at the beginning of a cycle it'll update the 4 channels, pause for the 2nd crank rotation and then update the 4 channels.
In the best case scenario the reporting in the log is inaccurate and the cylinders are actually updating in firing order as the system is using the data from the first 4 cylinders and the last 4 cylinders while is cycling them every 360 degrees.
In the worst case scenario the data in the log is correct and the ignition timing doesn't update in firing order and skips revolutions.
As an experiment I did tell the system to run a 2-stroke 4 cylinder, although I couldn't get a 1-2-3-4 firing order to match the ignition channel output order. I used 1-2-4-3 as close enough to test.
On a datalog the 4 channels updating in order every 360 degrees looks like this:

The idle is smoother, the exhaust note changed and the engine is bit more rev happy. So something has appeared to change physically in this test.
If a dev familiar with the ignition timing logic in the system could help me verify what is actually happening, I'd truly appreciate it. Thanks!