Kenneths Mods V1.02
Recognition
First order of the day is recognition to Ceddy. I originally disassembled his Ceddy Mods for Evo 5/6 to find out how to do what I have done. While there is only a small amount of the code which is now the same, without his code, this would not have happened. At least not for some time!
Money
I have done this to be free for personal use.
However, I will happily accept donations. You can pay pal to my email address: kenneth.simpson@gmail.com or PM me for other details.
IF YOU ARE A TUNER - This is anyone who uses this ROM on a customers ECU. To use my intellectual property in the pursuit of profit and not pay a small royalty is theft. The end result of this is that I'll just not continue improving and adding features.
While this not a for-profit endeavour, please recognise that it has come at significant cost to myself in both direct costs for the necessary equipment and indirect in the literally hundreds of hours to get here (and only so far!).
My aim is to cover my costs and then hopefully have some to pursue more endeavours.
The first $1,000 USD will go to a IDA Pro license. The reason for that should be clear.
After that, I will in turn donate to Ceddy, again the reason for that should be clear.
From there it would be nice to recover some of the hardware costs. Will see how it goes though!
Currently Implemented:
- Launch Control
- NLTS (No Lift To Shift)
VERSION FIXES
Version 1.01
- Added extended map for Ignition retard. Was causing an issue if you really pushed when warming up. Because it was using the smaller table, it would scale off the table and do weird stuff
- Fixed the MUTIII table. I accidently didn't revert it from the testing setup and as such, some logging was showing odd results
Version 1.02
- Corrected Scaling on warmup retard map. Corrected actual data
- Added code for CEL on knocksum but not done any sort of testing. It is basically there because I had done it when I needed to fix the warmup retard.
The main actual accomplishment is setting up the base for a whole host of other possibilities.
To get this to work you will need to use the attached XML definitions (VR4Base.XML might not be 100% necessary)
You will need to load and use the attached (in the Zip file) ECU Image (ECU KS ModsV1.0.hex)
WARNING: This Image is NOT compatible with the standard image. It is modified so that it re-directs certain parts of code so that some of the standard addresses will no longer operate.
The use of this ECU ROM will also guarantee either immediate or eventual damage to you engine and drivetrain components. If you are unable to accept this risk, do not use.
Once you load the image in EcuFlash you may want to configure things. The setup bits allow you to turn specific features on or off.
bit setup.png
CEL on KnockSUM and One byte Load are not implemented, so please don't tell me they don't work...
There are a number of parameters you can change. The most obvious are
- Normal Rev Limit
- Stationary Rev Limit
- Stationary Limit Switch Speed
- Anti Lag Start RPM
- Anti Lag Ignition Retard
- Anti Lag Ignition Retard Limit
- Anti Lag AFR
- NLTS RPM Reduction
There are a number more which require some explanation
- ... InputAddr
- ... Bit Mask On
- ... Bit Mask Off
- ... Qualifier Address
- ... Qualifier Value
InputAddr:
This is the address the ECU looks to to find out if pre-conditions are met. By default it is set to F62C. This is a set of bits which are set based on ECU inputs being switched (digital inputs)
Bit Mask On
The value found at InputAddr will be tested against this bit mask. That is, every bit you set to "Enabled" will be required to be HIGH (1) for the indicated function to operate
Bit Mask Off
The value found at InputAddr is inverted and then tested against this bit mask. Every bit you have set to "Enabled" for this function will be required to be LOW (0) for the function to work
Bit masking allows you to use a combination of inputs if you wish. For example, you could have a switch which you use to enable/disable LC (Launch Control) and NLTS (No Lift To Shift). In this case you would put this input into the Bit Mask On for both functions. Both functions would then require this to be switched HIGH for them to be operational.
You could then attach ANOTHER switch (valet switch) which is hidden somewhere which does the same thing. But isn't so obvious.
Anyway, the possibilities are quite extensive. Somewhat overkill for these functions, but will be useful later on.
The Bit Mask On tells you which inputs are which (Connector followed by pin number, i.e. C-02 is connector C pin number 2. This is the common one for NLTS) and how to make the bit HIGH in the F62C address. Code will take care of the fact that the resting state of those bits are not always the same. Once you connect (Ground or +12V) the correct voltage level, the bit goes HIGH (1). Normal state is LOW(0)
Qualifier Address
This is the memory address which the ECU will look at to see if the primary condition is met. By default these are both TPS. You could look at RPM or other things... Just make sure you get the correct memory address.
Qualifier Value
This is the value at which, once reached, the function will be enabled. I have applied the TPS scaling so that it makes sense. If you changed it to a RPM address, then changing the scaling would be required so that the numbers are useful. It is important to get the scaling correct for this so you compare apples with apples. Not doing so results in VERY odd happenings
This range of setup options is overkill for most, however it does allow a certain flexibility. Most people should just leave them how they are and modify only the Qualifier Value and the Bit Mask On.
LC
By default this has no Bits set in either Bit Mask On or Bit Mask Off. This means that it will always be active so long as your speed is below Stationary Limit Switch Speed and Bit 0 is set in the Setup Bits
NLTS
By default it looks for C-02 to be switched to ground. You will need to find a spare pin (off another ECU connector!) and insert it into the blank space in the ECU plug. It then needs to be wired to a switch on the clutch. Facelift Manual vehicles usually come with a switch which stops you being able to start the car with the clutch not engaged. You should use this, or get one of these and install it.
The logic for NLTS/LC is as follows
LC activated if speed below switch point. Once speed is over this, you are eligible for NLTS. NLTS will NOT operate if it will result in 0 RPM or below.
Depending on which of these is currently eligible for operation, the bit is checked in Setup Bits. If the corresponding bit is Enabled, then the ECU continues. If Off is encountered, it goes no further.
Both functions then check the Qualifier Address and make sure Qualifier Value is met.
InputAddr is loaded and the bit masks applied. If these conditions are all met
If LC conditions are met:
LC checks Anti-Lag Ignition Control is enabled. If so, it retards the ignition
LC checks Anti-Lag AFR Control is enabled. If so, it sets the AFR to Anti-Lag AFR
If NLTS conditions are met:
Current RPM - NLTS RPM Reduction calculation is made. If > 0, result value is new RPM Limit. For example, if you are at 6000 RPM and the reduction is 1000 RPM, RPM limit is 5000. If you were at 5000 RPM, new limit is 4000 RPM