does the Evo 1-9 adjust timing to fractions of a degree?
OK, mrfred, I have some data for you. I am about to run out the door to do some errands, so it will be a couple hours, but I will post it up.
It's actually pretty funny. I haven't had time to tune my bigmaps yet, and with the cold weather, I was hitting about 350 load (overrunning my 1.3 loadfactor) and getting into areas of -7 degrees of ignition. On top of that, or maybe the cause of, I was getting some misfires.
But anyway, I will post up some cruising and some knock areas. Any particular things you want in the log? This is what you get to choose from:
load1byte
RPM
knock
ign
ffff8c17
mat
coolant
wideband
map
tps
It's actually pretty funny. I haven't had time to tune my bigmaps yet, and with the cold weather, I was hitting about 350 load (overrunning my 1.3 loadfactor) and getting into areas of -7 degrees of ignition. On top of that, or maybe the cause of, I was getting some misfires.
But anyway, I will post up some cruising and some knock areas. Any particular things you want in the log? This is what you get to choose from:
load1byte
RPM
knock
ign
ffff8c17
mat
coolant
wideband
map
tps
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
The first five should be good. It gets a little hard to digest when there are too many things on the plot. Thanks.
OK, I will include one screenshot of a log in LogWorks for illustration, but since I know you like to look at and graph data in Excel sometimes, I will simply post some snippets of the log below as well:
1. This is a maybe 30s after starting the car, warming up:
2. Idling at the end of the log, warmed up, before I shut the car off:
3. Some knock. I was going over the 1.3 loadfactor here, so the small loadnumbers are areas over 331 load. I had some misfires here as well. The very negative timing is because I am hitting areas of the bigmap that I haven't had a chance to tune yet:
4. A quick, clean 2nd gear pull:
Forget the screenshots of the log. You can get the gist of it from the snippets.
The 8c17 does seem to follow 1 degree increments, jumping about 3 or so per degree change. During the knock you can see different jumps, so I think fractions of timing are being pulled.
1. This is a maybe 30s after starting the car, warming up:
PHP Code:
load RPM knock ign 8c17-calc 8c17
33.8 1375 0 18 18.8125 162
33.8 1375 0 19 18.8125 162
33.8 1344 0 19 18.8125 162
33.8 1344 0 19 18.8125 162
33.8 1344 0 19 18.8125 162
33.8 1344 0 19 17.7578125 165
33.8 1312 0 18 17.7578125 165
35.1 1312 0 19 17.7578125 165
33.8 1312 0 18 17.7578125 165
35.1 1312 0 19 18.8125 162
35.1 1312 0 19 18.8125 162
35.1 1312 0 17 16.703125 168
35.1 1281 0 19 18.8125 162
35.1 1281 0 19 17.7578125 165
36.4 1281 0 18 17.7578125 165
36.4 1250 0 17 16.703125 168
36.4 1250 0 17 16.703125 168
36.4 1250 0 17 16.703125 168
39 1188 0 18 17.7578125 165
39 1188 0 18 17.7578125 165
39 1156 0 21 20.921875 156
40.3 1156 0 21 20.921875 156
39 1156 0 21 20.921875 156
40.3 1125 0 21 20.921875 156
40.3 1125 0 21 20.921875 156
40.3 1156 0 21 20.921875 156
39 1156 0 21 19.8671875 159
39 1156 0 21 20.921875 156
40.3 1156 0 21 20.921875 156
40.3 1156 0 21 20.921875 156
40.3 1156 0 21 20.921875 156
40.3 1188 0 20 18.8125 162
39 1188 0 19 17.7578125 165
39 1156 0 20 19.8671875 159
40.3 1188 0 20 19.8671875 159
40.3 1188 0 19 19.8671875 159
39 1188 0 17 16.703125 168
40.3 1188 0 19 18.8125 162
39 1188 0 17 17.7578125 165
PHP Code:
load RPM knock ign 8c17-calc 8c17
31.2 875 0 9 8.6171875 191
31.2 844 0 10 9.671875 188
29.9 875 0 6 5.8046875 199
31.2 844 0 9 8.6171875 191
31.2 844 0 11 9.671875 188
31.2 875 0 6 5.8046875 199
31.2 844 0 6 7.9140625 193
31.2 844 0 9 8.6171875 191
31.2 875 0 7 4.75 202
31.2 844 0 7 6.859375 196
31.2 875 0 6 5.8046875 199
31.2 844 0 4 4.75 202
31.2 844 0 6 5.8046875 199
32.5 812 0 7 9.671875 188
32.5 812 0 10 9.671875 188
32.5 844 0 10 9.671875 188
32.5 844 0 7 3.6953125 205
32.5 875 0 4 3.6953125 205
31.2 844 0 4 4.75 202
32.5 844 0 9 8.6171875 191
32.5 844 0 9 8.6171875 191
32.5 875 0 8 3.6953125 205
31.2 906 0 2 1.9375 210
31.2 906 0 2 1.9375 210
29.9 875 0 4 3.6953125 205
31.2 875 0 7 5.8046875 199
31.2 875 0 6 5.8046875 199
29.9 906 0 5 2.640625 208
31.2 875 0 3 2.640625 208
29.9 875 0 6 5.8046875 199
29.9 875 0 9 8.6171875 191
29.9 875 0 8 7.9140625 193
29.9 906 0 5 4.75 202
29.9 906 0 4 4.75 202
29.9 875 0 5 7.9140625 193
31.2 844 0 9 8.6171875 191
31.2 875 0 11 8.6171875 191
31.2 875 0 8 7.9140625 193
29.9 875 0 4 3.6953125 205
29.9 875 0 5 4.75 202
29.9 875 0 7 6.859375 196
29.9 844 0 11 10.7265625 185
31.2 875 0 10 7.9140625 193
31.2 875 0 6 5.8046875 199
PHP Code:
load RPM knock ign 8c17-calc 8c17
195 3094 1 3 3.34375 206
213.2 3125 1 2 2.2890625 209
232.7 3188 1 -1 -0.5234375 217
257.4 3250 1 -3 -2.6328125 223
286 3312 1 -2 -1.578125 220
309.4 3375 2 -3 -4.0390625 227
2.6 3438 2 -5 -4.7421875 229
28.6 3469 3 -8 -8.2578125 239
22.1 3594 3 -7 -7.203125 236
6.5 3625 3 -6 -6.1484375 233
16.9 3750 3 -5 -5.796875 232
261.3 3781 6 -3 2.640625 208
28.6 3812 6 -6 -7.203125 236
39 3969 6 -9 -5.4453125 231
269.1 4094 5 -1 -1.9296875 221
330.2 4000 5 -4 -4.0390625 227
0 4250 4 -3 -2.6328125 223
323.7 4219 4 -2 -1.578125 220
315.9 4312 3 -1 -1.2265625 219
315.9 4406 2 0 0.1796875 215
317.2 4594 2 0 0.1796875 215
317.2 4656 1 1 0.53125 214
312 4781 0 2 1.9375 210
308.1 5000 0 3 2.640625 208
308.1 5031 0 3 2.640625 208
301.6 5156 0 3 2.640625 208
PHP Code:
load RPM knock ign 8c17-calc 8c17
149.5 3000 0 10 9.671875 188
158.6 3094 0 8 7.9140625 193
172.9 3156 0 8 7.9140625 193
183.3 3281 0 9 8.6171875 191
197.6 3344 0 7 6.859375 196
217.1 3469 0 6 5.8046875 199
247 3562 0 2 1.9375 210
283.4 3656 0 1 0.8828125 213
304.2 3844 0 2 1.9375 210
319.8 4000 0 1 0.8828125 213
328.9 4062 0 0 -0.171875 216
319.8 4344 0 2 1.9375 210
306.8 4500 0 4 3.6953125 205
309.4 4625 0 4 2.640625 208
313.3 4844 0 4 3.6953125 205
305.5 5000 0 5 4.75 202
300.3 5125 0 5 4.75 202
291.2 5344 0 7 6.859375 196
284.7 5406 0 8 8.6171875 191
271.7 5688 0 9 8.6171875 191
273 5719 0 9 8.6171875 191
265.2 5969 0 10 9.671875 188
260 6062 0 10 9.671875 188
257.4 6156 0 10 9.671875 188
250.9 6375 0 11 11.78125 182
247 6469 0 12 11.78125 182
241.8 6625 0 13 12.8359375 179
236.6 6719 0 14 13.890625 176
The 8c17 does seem to follow 1 degree increments, jumping about 3 or so per degree change. During the knock you can see different jumps, so I think fractions of timing are being pulled.
Last edited by l2r99gst; Dec 16, 2009 at 06:43 PM.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Looks like there are a few decrepancies between IgnMUT and IgnECU. I wonder if its just lag getting values to DMA, knock that wasn't recorded, or something else happening. If the differences aren't due to any logging issue, then the most interesting bit of data is where IgnMUT reads -9 deg, but IgnECU reads -5.4 deg in the third snippet. That could be the ignition retard limit in action.
I looked at another part of the log that just had 1 knock count during a steady cruise.
22 deg of timing both times in the logger, but 8c17 was 155 with the 1 count of knock and 154 with 0 knock, coming out to 21.273* and 21.625*, respectively.
So, it does indeed look like knock is pulling fractions of a degree (90/256).
22 deg of timing both times in the logger, but 8c17 was 155 with the 1 count of knock and 154 with 0 knock, coming out to 21.273* and 21.625*, respectively.
So, it does indeed look like knock is pulling fractions of a degree (90/256).
Last edited by l2r99gst; Dec 16, 2009 at 06:45 PM.
Looks like there are a few decrepancies between IgnMUT and IgnECU. I wonder if its just lag getting values to DMA, knock that wasn't recorded, or something else happening. If the differences aren't due to any logging issue, then the most interesting bit of data is where IgnMUT reads -9 deg, but IgnECU reads -5.4 deg in the third snippet. That could be the ignition retard limit in action.
Plus that third snippet was misfiring, etc...running in very negative areas of the untuned map, as you can tell. So, a lot was going on pretty quickly. This was at about 33 psi.
Last edited by l2r99gst; Dec 16, 2009 at 06:23 PM.
Evolved Member
Joined: Mar 2008
Posts: 730
Likes: 3
From: Lattitude 48.38°, Longitude 17.58°, Altitude 146m = Slovakia, for common dude
Now that we verified that math is correct, my question would be, how many sensor ticks/pulses come within one degree of rotation, so we know what granularity of degree we can go with. Basically we need to count number of pulses from spark to spark or tdc to tdc would be even better.
you will have several degrees of rotation between each rising/falling edge of the crankshaft position sensor.... It recalculates the engine speed every pulse using it's last pulse as a time reference.
Evolved Member
Joined: Mar 2008
Posts: 730
Likes: 3
From: Lattitude 48.38°, Longitude 17.58°, Altitude 146m = Slovakia, for common dude
Ok, so if I understand it rigth the granularity is at oscillator crystal ticks / prescaled timers, having sensor pulses as synchronization frames?
Last edited by acamus; Dec 16, 2009 at 10:26 PM.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Now that we verified that math is correct, my question would be, how many sensor ticks/pulses come within one degree of rotation, so we know what granularity of degree we can go with. Basically we need to count number of pulses from spark to spark or tdc to tdc would be even better.
The camshaft position sensor is typically used to help the ECU reference where the engine is in crank angle. So when the ECU sees the camshaft position sensor output it knows that the engine is x degrees before TDC at an engine speed of xxxxRPM... it can then can convert from radians to usec's how long it needs to wait to fire the coils. I can only assume that the time delay from the camshaft position sensor is updated by each rising edge of the crankshaft as a confirmation to the amount of time between each rising edge.
The ECU probably knows that for every rising edge of the crankshaft it's travelled some amount of crank degrees... so it ***MIGHT*** for example be like this.
(CA=Crank angle)
The camshaft rising edge happens 40CA degrees BTDC. The ECU knows that there are 8CA degrees per rising edge on the crankshaft. For the given engine speed and load the ECU calculates the Timing Advance(what mr fred just did) let's say it's 23 degrees BTDC. That means the engine has 17CA degrees until it needs to fire the ignition coils. 17/8 is 2.125... Therefore the ECU knows it needs to wait 2 rising edge pulses from the crankshaft position sensor...and then use the calculated engine sped to convert the radians to usec's for 1 degree of crankangle... and then FIRE.
To reiterate... this probably isn't how the stock ecu does this, but this may give some of you C0DE N3RDS some insight. I'm sure Mr. Fred has disassembled this.
Now that we verified that math is correct, my question would be, how many sensor ticks/pulses come within one degree of rotation, so we know what granularity of degree we can go with. Basically we need to count number of pulses from spark to spark or tdc to tdc would be even better.

Four CAS WaveForms per CAM rotation.
Timing granularity is 360 x 90/255 per rotation, I think.
Edit x2:
Do the Evo8+ have word sized 3d map lookups and interpolation routines?
The earlier ecus only have byte sized lookups, so it would be really hard to fractional degree timing maps.
Last edited by Ceddy; May 13, 2010 at 03:37 PM.


