ISCV control system disassembly
just to clarify a point here about the desired minimum idle rpm v temp table -
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
just to clarify a point here about the desired minimum idle rpm v temp table -
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
this tells the ecu where we want it to idle, but if the various ISCV step tables point it to some other idle value, the ecu has to then "learn" its way to the desired value.
If this is correct (please confirm) are the corrections saved in RAM or are they always a one-time learning trick.
I am fairly sure I've observed the ecu doing this and then having to do it again a few minutes later.
ISCV Demand tables are somewhat like baseline WGDC tables. They are estimated demand values that push the ISCV to a position that should get idle close to the target idle. There is also a bunch of 1D tables that are adders or subtractors to these 2D tables. There are also learned ISCV trims (just like fuel trims) that are loggable over MUT. The ISCV system is one of the more complex control algorithms in the ECU. Its harder for me to follow than the fuelling algorithm, partly because tables feed into other tables, but also because there are a huge number of difficult to determine parameters that affect the ISCV step position. My initial post on the disassem has quite a few table names that provide no information on when the tables are used. I think it would take another week of solid study to figure out exactly what these tables do. Not sure its worth it for me.
mrfred, have you ever thought about maybe releasing bigger efforts/patches as a pay option? Your work definitely deserves it. I know this forum is all about sharing and donations, but just thinking out loud about how you can make it worth your time for your efforts.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Its tempting and I've definitely given it some consideration, but along with the revenue, there are support and deadline responsibilities when doing a wide scale paid patch or disassem effort. And I'd have to be a vendor.
Hi everyone
my ISC steps never go lower than 40 at idle (hot engine)
those 40 steps do not fluctuate, they go to 40 and stay there it seems to be the "bottom line" under where they can't go I'm pretty sure it's ECU related or it would vary ever so slightly but it does not (except when the fan activate of course)
My ISC steps where 40 before tuning and they still are after, tuner said my car was the problem and didn't care more than that but I do.
I tried the BISS screw, all it does is make my idle rpm rise..I still have my 40 steps whatever it's setting.
I had the car mechanically/electrically checked by a professionnal and nothing seems wrong
it may be related to my cams because the last logs where my ISC steps where lower than 40 date from when the ECU was stock and before I had the cams installed (GSC S1) after that the steps mysteriously jumped up to 40 at idle and never went lower..it's been a year now.
Anyway I finally decided and managed to read my "tuned" ecu which seems to be tephra v7 : 88580714
what should I be looking at is there an ISCV table of some sort that could do this ?
my ISC steps never go lower than 40 at idle (hot engine)
those 40 steps do not fluctuate, they go to 40 and stay there it seems to be the "bottom line" under where they can't go I'm pretty sure it's ECU related or it would vary ever so slightly but it does not (except when the fan activate of course)
My ISC steps where 40 before tuning and they still are after, tuner said my car was the problem and didn't care more than that but I do.
I tried the BISS screw, all it does is make my idle rpm rise..I still have my 40 steps whatever it's setting.
I had the car mechanically/electrically checked by a professionnal and nothing seems wrong
it may be related to my cams because the last logs where my ISC steps where lower than 40 date from when the ECU was stock and before I had the cams installed (GSC S1) after that the steps mysteriously jumped up to 40 at idle and never went lower..it's been a year now.
Anyway I finally decided and managed to read my "tuned" ecu which seems to be tephra v7 : 88580714
what should I be looking at is there an ISCV table of some sort that could do this ?
I tried to adapt mrfred "new definitions" to my current rom and here are the results,
this is for the roms : 88580013 - 88580014 - 88580714
these tables give me the exact same values that you can see with the tables mrfred posted on page 1 for 88590015 rom
THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
Here are some more that are even less safe the the ones above because
these tables DO NOT give me the same values that you can see with the tables mrfred posted on page 1 for 88590015 rom, the values are sligthly different, it may be because I'm trying to compare 2 roms that originally have different values or because the address I put are completly wrong !
THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
this is for the roms : 88580013 - 88580014 - 88580714
these tables give me the exact same values that you can see with the tables mrfred posted on page 1 for 88590015 rom
THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
Code:
<scaling name="ISCV_AX2_8" units="% Demand" toexpr="x*100/255" frexpr="x*255/100" format="%.1f" min="0" max="200" inc="0.5" storagetype="uint8" endian="big"/> <scaling name="ISCV_AX2_16" units="% Demand" toexpr="x*100/255" frexpr="x*255/100" format="%.1f" min="0" max="200" inc="0.5" storagetype="uint16" endian="big"/> <table name="ISCV Demand Target Idle Trim (sub_1ECF6)" category="ISCV Control" type="2D" address="3e10" level="2" scaling="ISCV_AX2_8"> <table name="Target Idle Deviation" type="Y Axis" address="6da6" elements="9" scaling="RPMTarget"/> </table> <table name="ISCV Demand General CTS Subtractor (sub_1EBE6)" category="ISCV Control" type="2D" address="3e2e" level="2" scaling="ISCV_AX2_8"> <table name="Coolant Temp" type="Y Axis" address="70e6" elements="8" scaling="Temp"/> </table> <table name="ISCV Demand Baro Adder (FFFF6E98) (sub_1E1EE)" category="ISCV Control" type="2D" address="3dfe" level="2" scaling="ISCV_AX2_8"> <table name="Baro" type="Y Axis" address="6f30" elements="5" scaling="Baro16"/> </table> <table name="ISCV Demand RPM Adder* (sub_1EFC0)" category="ISCV Control" type="2D" address="41fc" level="2" scaling="ISCV_AX2_8"> <table name="RPM" type="Y Axis" address="6fa8" elements="10" scaling="RPM"/> </table>
these tables DO NOT give me the same values that you can see with the tables mrfred posted on page 1 for 88590015 rom, the values are sligthly different, it may be because I'm trying to compare 2 roms that originally have different values or because the address I put are completly wrong !
THOSE ARE IN NO WAY TESTED, PROVEN OR 100% SAFE
Code:
<table name="ISCV Demand Startup CTS Adder (sub_1EBB8)" category="ISCV Control" type="2D" address="3d84" level="2" scaling="ISCV_AX2_8"> <table name="Coolant Temp" type="Y Axis" address="70e6" elements="8" scaling="Temp"/> </table> <table name="ISCV Demand CTS Adder #1** (sub_1F1F8, sub_1EA0C, sub_1F596) [sub_1EFC0]" category="ISCV Control" type="2D" address="3d5c" level="2" scaling="ISCV_AX2_8"> <table name="Coolant Temp" type="Y Axis" address="71ca" elements="8" scaling="Temp"/> </table> <table name="ISCV Demand CTS Adder #1b*** (sub_1F2C6) [sub_1EFC0]" category="ISCV Control" type="2D" address="3d70" level="2" scaling="ISCV_AX2_8"> <table name="Coolant Temp" type="Y Axis" address="71ca" elements="8" scaling="Temp"/> </table> <table name="ISCV Demand Baro Adder**** (FFFF7C0E) (sub_1F6E6) [sub_1EFC0]" category="ISCV Control" type="2D" address="6b00" level="2" scaling="ISCV_AX2_8"> <table name="Baro" type="Y Axis" address="6f30" elements="5" scaling="Baro16"/> </table>
Can you find all those same tables in 9417 and 9653? If you did so, we'd have all the "major" EVO 8/9 ROMs idle tables correctly defined.
Maybe we can even get it changed in the default ECUFlash defs.
terrific,
shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?
mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.
shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?
mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.
Last edited by merlin.oz; Oct 22, 2010 at 02:52 AM.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
terrific,
shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?
mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.
shouldnt the Y axis on the CTS Adder be Temp?
and is that table a engine temp modifier to the two TPS Adder tables?
mrfred, when diving into these routines, did you happen to find the idle stability below 53*C item.
I tried to find it some months ago without sucess. The previously described table is only active above 53*C on 88580013.
(TPS adder + CTS adder)*baro factor -> RAM
Not sure which table you mean for the 53C. Can you post the table address and ROM ID or post a link?
Last edited by mrfred; Oct 22, 2010 at 08:21 AM.
mrfred, this is the item. It used to have three elements, the third designated as unknown.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.
This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.
<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>
Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.
This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.
<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>
Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.
Last edited by merlin.oz; Oct 22, 2010 at 02:19 PM.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
mrfred, this is the item. It used to have three elements, the third designated as unknown.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.
This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.
<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>
Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.
I thought the third element might have been the spark delta below 53*C, but it would seem not to be.
This was found by logging, not disassembly. The address is for 88580013 but I think yours is the same.
<table name="Idle Stability Timing Control" category="ISCV" address="1d6e" type="2D" scaling="uint16">
<table name="Settings" type="Static X Axis" elements="2">
<data>Sensitivity 0-255</data>
<data>TimingLimit above 53*C</data>
</table>
</table>
Back to your ISCV work, are these new parameters valid when stationary and moving?
From your operation formula, the CTS component will be quite important.
And thanks for all this ISCV work, some of this has been driving me nuts for months.
Wish I could say more about when all the ISCV tables are used, but its back to my original statement that the ISCV routines are likely among the most complex in the entire ROM. There must be fifty different flags/conditions that affect when certain tables are used. I thought about having another go at it last night, but as soon as I started reviewing some of the subroutines, I quickly realized that I don't want to go there again anytime soon.
Well I have logged my E9 with 88580013 and, with the "TimingLimit" set to 0, as the engine warms up the spark jumps around (idle) and when the temp=53*C, the spark settles to whatever is in the spark map idle cells, with no fritzing arround.
If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.
If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.
Thread Starter
EvoM Guru
iTrader: (50)
Joined: Mar 2006
Posts: 9,675
Likes: 132
From: Tri-Cities, WA // Portland, OR
Well I have logged my E9 with 88580013 and, with the "TimingLimit" set to 0, as the engine warms up the spark jumps around (idle) and when the temp=53*C, the spark settles to whatever is in the spark map idle cells, with no fritzing arround.
If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.
If I then set the value to 5 and reflash, I see the usual jumping arround when the engine is at full temperature.



