These are most of the important table locations in the chip. Many
explanations are very simple, to keep everything basic here, and
not confuse anyone TOO much.
0x0000 PROMID Prom ID Code
This is the prom ID that shows in a scan
tool, it is a good idea to identify each program with the values
here. Number your programs, for identification if you are burning
a multichip, or if you are logging runs and want to note which
program ran best from a log...
0x0008 KKPGMID Program ID 0x58
This is the program ID, it identifies this
software program (the code and all these tables are the software,
you can run other software on our ECM). SyTy code is 0x58. Important
note - our ECM does a check sum check. This goes through the entire
table section, adds up the bytes, and the resulting sum (the check
sum) is checked against the checksum value in the chip. If it is
the same - OK, all is good, if it does NOT match, boom, sets a
code, bad prom. Kind of like a parity check to make sure the data
read is GOOD. Setting the Program ID to AA disables this check.
All of my programs are set to AA, otherwise I'd have to re-calculate
a checksum for each program I modify.
0x0035 KKMASK1_M12 Malfunction Flag 12 Enabled
and more like this line above...
This section contains the Malfunction
flags. If enabled, it will run the malfunction tests, to test for
the improper running conditions and then display the check engine
light. Disabled - no test, no check engine lights, no codes set. The
various malfunction logic thresholds and constants immediately follow
this section
0x00AD KFANVSLK
Fan Enable MPH Threshold (Lower) 0.0 MPH
0x00AE KFANCLTH Fan Enable Temp Threshold (Higher) 84.50 Deg. C
0x00AF KFANVSHK Fan Enable MPH Threshold (Higher) 0.0 MPH
0x00B0 KFANCLTL Fan Enable Temp Threshold (Lower) 84.5 Deg. C
0x00B1 KFANCTHL Hot Fan Enable Temp Threshold (Lower) 84.5 Deg. C
0x00B2 KFANCTHH Hot Fan Enable Temp Threshold (Higher) 84.5 Deg. C
0x00B3 KFANCTCL Cold Fan Enable Coolant Temp Threshold (Low) 84.5 Deg.
C
0x00B4 KFANCTCH Cold Fan Enable Coolant Temp Threshold (High) 84.5
Deg. C
0x00B5 KFANMTCL Cold Fan Enable MAT Temp Threshold (Low) 45.5 Deg.
C
0x00B6 KFANMTCH Cold Fan Enable MAT Temp Threshold (High) 45.5 Deg.
C
This section is the fan controls, or
as it is utilized in our application, the intercooler pump controls. Read
the document for the equations that govern IC pump controls; they
aren't as simple as you'd think.
Simply said -
For adjusting fan turn on temps: use KFANCTHL
and KFANCTHH. These are the upper and lower temps for turn on threshold,
and I have been using these to control my electric fans.
For anticipating the fan turn on and IAC step
increase: (truck may not like the extra load of electric fans, the
anticipation via these 2 values can help that)
0x00BB KFANTIM1 Fan
On Delay After Conditions Met 0.1 Sec.
0x00B7 KFANDS1 Fan
Anticipated Motor Position Offset 0
Steps
0x00DA KRSHNTHK TCC Road Speed Upper Lock
Limit (3rd Gear) 32.2 MPH
0x00DB KRSHNTLK TCC Road Speed Lower Lock Limit (3rd Gear) 30.0 MPH
Past 32.2 mph, the TC locks; once it
goes back below 30.0 mph, it will unlock, in 3rd gear.
0x00DC F42_TYPE (3rd Gear, Upper) Load Limit
vs MPH
Load Limit vs MPH
| 20 25 30 35 40 45 50 55 60 65 70
---------------------------------------------------------------------------
(%) | 0.0 0.3 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.0
0x00E7 F43_TYPE (3rd Gear, Lower) Load Limit vs MPH
Load Limit vs MPH
| 20 25 30 35 40 45 50 55 60 65 70
---------------------------------------------------------------------------
(%) | 0x00 0x2E 0x2E 0x36 0x40 0x4F 0x5F 0x78 0x9A 0xC7 0xFF
These are values for TC unlocking in 3rd gear,
based on throttle I believe. I'm a bit unsure of these tables,
as the document does not have the TC control logic in it.
0x00FA KRETARDM ESC Maximum Allowable Retard
12.66 Deg.
Maximum amount of knock retard that is possible; the most timing the
computer can pull out.
The large section of shift light tables is
NOT used in our application. That output is used for TC lockup.
0x0192 F1_TABLE Main Spark Advance

This is a 3 bar timing table in Promgrammer.

This is one of the OEM 2 bar calibration timing tables.
From 30-100kpa is in vacuum - idle, cruise, part throttle load.
From 100-200kpa is 0 to 15psi of boost.
0x0284 F2_TABLE Base Coolant Advance Correction

This is the timing table
versus vacuum and coolant temps. You can see that the timing
is scaled lower at cold temperatures & low vacuum, which
would be your cold startup condition. This helps an engine startup
easier. Also the timing is dropped slightly at very hot temperatures.
0x02D2 F3_TABLE Spark Advance Adjustment vs
ADMAT1K
Deg. vs Deg. C & kPa Boost

A 3 bar calibration.

From one of the OEM, stock GM calibrations.
This is a cool table. This table can
help you avoid detonation in your truck. You can scale boost versus
manifold air temps and boost. So let's say you have a street chip.. you
don't want very high timing if the MAT temps are very hot...so you
can scale the timing down here. You can also drop the timing down
at higher boost levels here (as well as in the F1 main spark table). Great
table for using with alky, as you can add timing at the lower temps.
Hit the alky, MAT temps drop, timing goes up a bit....
0x0311 F80_TABLE PE Contribution To Spark Advance - Deg. vs NTRPM
Deg.

When you go into PE mode (Power enrichment
mode) any additional degrees of timing, from this table, is added
into the spark advance. PE mode is when you really stab it, have
it floored etc etc. There are a few parameters that govern WHEN
PE mode is enabled, based on throttle percent, rate of throttle change,
manifold pressure level... and whatnot.
0x031C F6_TABLE ESC Attack Rate vs RPM (NTRPMX)
Deg/ms

When knock is detected, timing is
pulled out at the above rate, versus the RPM shown above. So if
you have knock detected at 4800 RPM, it will pull timing out at
a rate of 0.36 degrees per millisecond.
0x0322 F7_TABLE ESC % Recovery Rate vs RPM
(NTRPMX)
%/Sec.

Once detonation is not sensed any longer,
the timing recovers at the above percentage per second. Notice how
slow it is at higher RPM.
0x0334 KAFOPT3_3 Limit Boost During 1st Accel
Enabled
This will limit your boost to base boost the first time you accelerate.
Disable it.
0x034A KCLTC Temp. Thresh. For C/L Determination
21.5 Deg. C
This is the coolant temp for closed loop operation. Set this to maximum
(151 deg C) and it will never reach that temperature, and will be full
time open loop. Highly recommended by me once you have the calibration
dialed in fairly well, unless passing emission is a big deal for you.
If you run a cat this may help clog it (FYI).
0x0355 KBLMMAX Max. Allowable BLM 1.17 Value
0x0356 KBLMMIN Min. Allowable BLM 0.82 Value
These limit the BLM values. 1.00 = 128 BLM.
0x0357 KCLOXTH O2 Sensor Rich-Lean Thresh.
0.500 Volts
Above or below whatever value is entered here will determine whether
it is designated running rich or lean (for updating integrator). Leave
it alone.
0x035A KCLITMI Closed Loop Min. Integrator
Value 80 Units
0x035B KCLITMX Closed Loop Max. Integrator Value 218 Units
These are the integrator limits.
0x038A KFRPMLOW Hi RPM Fuel Cutoff Thresh.
Lo Limit 4535 RPM
0x038C KFRPMHI Hi RPM Fuel Cutoff Thresh. Hi Limit 4714 RPM
Rev limiters. Once you rev past 4714
rpm, fuel is cut, and will not be enabled until you go below 4535
rpm.
0x03A0 KFMPHLOW Lower MPH for Boost Disable
114.0 MPH
0x03A1 KFMPHHI Upper MPH for Boost Disable 116.0 MPH
Top speed limiters, just boost limit versus mph. Raise to
high level to eliminate.
0x03A2 KWGMAPTM High Load Fuel Shutoff Time
Threshold 1.50 Sec.
If you are overboosting, it will cut fuel 1.50 seconds (or whatever
you enter here) after it detects that condition. Probably best to lower
this value.
0x03A3 KWGMAPH MAP Threshold Enabling Fuel
Shutoff 204.09 kPa
0x03A4 KWGMAPL MAP Threshold Disabling Fuel Shutoff 167.38 kPa
Overboost fuel cut levels. These are
the stock values, Bill has modified Promgrammer so that the readings
are accurate if you are tooling with a 3 bar bin.
Various boost control thresholds/limits
0x03A7 KGDCTIM1 Boost Red. Decrement Time
Interval 1.0 Sec.
0x03A8 KGDCTIM2 Boost Red. Increment Time Interval 0.6 Sec.
0x03A9 KGDCTIM3 Delay Time to Start Boost Reduction 0.2 Sec.
0x03AA KGEKCENA Boost Reduction Retard Enable Threshold 7.91 Deg.
0x03AB KGEKCDIS Boost Reduction Retard Disable Threshold 6.15 Deg.
0x03AC KBSTDLT1 Desired Boost Pressure Reduction Delta 7.03 kPa
0x03AD KBSTDLT2 Desired Boost Pressure Reduction Delta 3.91 kPa
0x03AE KWGMPHL Brake Torque Vehicle Speed Threshold 0.0 MPH
0x03AF KGDCTIM6 Brake Torque Time Limit 0.3 Sec.
0x03B0 KGDCTIM7 Inhibit Overboost Time Threshold 100.0 Sec.
0x03B2 KWGCLTIM Time Threshold for Wastegate Closed Loop 0.4 Sec.
0x03B3 KCLBSTEH Close Loop Boost Mode Threshold 39.84 kPa
Set this value higher, and the wastegate duty cycle will remain
at 100% longer - faster spool up, increased risk of spike at initial
acceleration.
0x03B4 KCLBSTEL Close Loop Boost Mode Threshold 5.47 kPa
0x03B5 KBSTERDB Boost Error Deadband 3.13 kPa
0x03B6 KDCTIM8N Closed Loop Update, High Boost 0.2 Sec.
0x03B7 KDCTIM8P Closed Loop Update, Low Boost 0.2 Sec.
0x03B8 KDCSTEN Negative Step Adjustment to Wastegate DC 1.95 %
0x03B9 KDCSTEP Positive Step Adjustment to Wastegate DC 3.13 %
0x03BA KWGRPMEN Threshold for Closed Loop Turbo Boost 0 RPM
Set this value high, and
the boost control will remain in open loop, using values
from the F71 table as the wastegate duty cycle, best
used versus MPH. Can be a very effective way to control
boost.
0x03BB KWGDRPMP Positive Delta RPM to Stepup Boost 300 RPM
0x03BC KWGDRPMN Negative Delta RPM to Stepup Boost 150 RPM
0x03BD KWGDTPS TPS Threshold to Stepup Boost 4.30 %
0x03BE KWGDCLOW Starting Boost Level 68.75 %
0x03C2 F70_TABLE Desired Boost Pressure Base
vs NTRPMX and NTPSLD

This is the main boost table; desired boost versus throttle position
and RPM.
0x03E7 F71_TABLE Initial Value Of WG Duty
Cycle vs Throt. Pos.
Stock chip (one of them) 2 bar calibration,
versus TPS.
The system is closed loop, so it alters
the wastegate duty cycle in order to achieve the desired boost from
the F70 table. The F71 table is used to give a basis for the duty
cycle. It reverts to this at shifts (negative RPM deltas) etc, and
if you scale it versus MPH (code hack that Dig has been making good
use of) it can prevent boost spikes at shifts/TC lockup/downshifts.
See the table versus MPH, in a 3 bar calibration below.

0x040E F28_TABLE Base Pulse Const. vs Desired
EGR
Const

This is the closest thing we have to
an injector constant in our chip. This value is a direct fuel multiplier. Multiply
the values in this table by 1.5, your injector pulsewidths will be
1.5 times longer across the board. When working with larger injectors,
this should be the first table you rescale.
0x0422
F29_TABLE Base Pulse VE vs RPM And MAP

This is the main Volumetric
Efficiency fueling table, for open throttle conditions. NOTE that
it is ONLY in vacuum. So once you are in boost, you will only be
using the 100 kpa MAP line (furthest right). Also note that the
RPM only goes up to 4000. So how do you adjust fueling in boost?
or past 4000 RPM? Ok ok you guys...settle down.... it's coming
up....
0x0476 F29E_TBLE Base Pulse VE vs RPM And
MAP (Closed Throttle)

This is the Volumetric Efficiency
table at closed throttle. You use either F29 or F29E,
based on throttle (open or closed). Comes down to that
this is the idle fueling table, and the other table
is for all other conditions.
0x04AD F30_TABLE Base Pulse VE vs RPM

This is the 3rd and final VE table. It is a one line table
versus RPM only. So the way the VE works is this. The F30 table
is used at all times, pulling a value based solely on RPM. Then,
the ECM sees if you are at open or closed throttle. Based on that,
it will use a value from either the F29 or F29E table, then it will
add that value to the one it derives from the F30 table. So the final
VE term is from 2 components. The F30 table value plus a value from
the F29 or F29E table, depending on if at closed throttle or not.
0x04BF F31_TABLE Base Pulse Inverse Coolant
Term vs Cooldeg

Not used in our application, but COULD
be utilized :-)
0x04D1 F31M_TBLE Base
Pulse Inverse Air Temp vs ADMAT (ACSP Senso

This is the air temperature fuel scaler. It
uses the MAT value for a lookup for a fueling term. Notice
that the stock calibration doesn't do much except at
COLD temperatures. This is one reason our trucks like
cold air so much... at hot air, the air density changes,
but our fueling calibration does not take this into
account, so you run a bit rich at hotter temps.
0x060D F77 Base Boost Multiplier vs MAP

This is a 2 bar chip table.

This is a 3 bar chip table.
F77 is used for changing the fueling at a certain boost level. NOTE
- if you change the first table entry (90 or 135 on the 3 bar) you
will affect the entire fuel curve while doing anything in vacuum.
I just learned this lesson on some 50lb/hr injector programs - the
version 2 programs have been revised as this was an issue.
0x04E2 F33_TABLE Voltage Compensation
vs Battery Voltage (ADBAT)

A direct fueling multiplier based
on battery voltage, as lower battery voltage affects pump output,
injector response.
0x04E7 F34_TABLE DE Coolant Factor vs Coolant Temp

0x04F5 F35_TABLE DE MAP Contribution vs MAP Change Above Thresh.

0x04FB F36_TABLE DE Throttle Contribution vd Throttle Change

0x0501 F39_TABLE MAP Multiplier For Deceleration Enleanment

The above are all the DE (deceleration enleanment)
tables.
Ok, first DE has to be enabled (when would decel fueling occur? think
about it...). PE can't be enabled (why would you remove fuel when
you are hammering it?), and there is a delta TPS threshold as well
(throttle must be decreasing at least so fast before you start removing
fuel for deceleration). Once it is enabled the DE algorithm runs through. Check
the document for this, it is fairly straight-forward. Basically what
happens is this.. When DE is enabled, a value is determined from the
F35, based on MAP change, a value from F36, based on TPS change. Now,
since TPS is decelerating (remember what enables DE), your MAP and
TPS will be dropping. Then it determines a value from the F34 table,
based on coolant temp, and then another value from the F39, based on
the CURRENT MAP level (not the change in MAP).
Then it does a calculation that is as follows 1 - [ (F35 term
x F36 term) x F34 term x F39 term ] = DE fueling term
So if you have larger and larger values in
the above tables, you will be closer and closer to zero (the tables
are actually scaled in such a way that their product is always
less than one) once the product is subtracted from one. So let's
say the final DE term is 0.5.
That value is a DIRECT fueling multiplier, so the pulsewidth is HALF
of what it was before this calculation took place. Normal conditions,
DE is not occurring, so the term is ONE, or no modification of the
pulsewidth calculation. So, on the 50# chips, some DE modification
took place, and it really helped matters. The way to really determine
if this is needed is to dial in regular drivability, trying to avoid
deceleration conditions (as the integrator will be going wacky if the
DE is off), get the VE tables pretty dialed in, then start doing some
heavy decel stuff. Stop and go, off throttle, back in.. and start
looking for trends. Does the integrator go WAY down when you slow
down? This WILL cause stumble conditions when you get back into throttle,
as the integrator is down LOW, removing fuel, and you are at a condition
that is requiring an integrator of 128 (the integrator has a delay
- or lag - built in). So from there, you need to adjust some DE tables
(if you experience the same conditions I did with the 50s). Basically
I believe I increased the DE (so it removes MORE fuel) at the F34 and
F39 tables. So increasing table values will lead to more fuel being
removed.
0x050C F21_TABLE AE - Delta
MAP Contrib vs Delta MAP

0x0512 F22_TABLE AE - Delta Throttle Contrib vs (8 * Delta Throt.

0x0517 F37_TABLE AE Temp. Correction Factorvs Coolant Temp

0x0524 F38_TABLE RPM Multiplier For Accel Enrichment

0x033C KAEISCN AE IAC Contribution 0.0 mSec (this is from section
before the AE tables)
Acceleration Enrichment tables. AE is pulsed asynchronously. This
mean it is not synchronized with the regular, timed pulsewidth injections,
which is why there is NO AE fueling term in the main fueling algorithm. It
basically will inject small fuel spurts whenever the program determines
it is necessary (based on engine acceleration events - positive change
in MAP, RPM, TPS etc). So this algorithm is fairly straightforward
also. So the basics of AE calculation:
An AE MAP term is determined from the F21 table (change
in MAP). An AE TPS (throttle) term is determined from the F22 table
(change in TPS). Change in IAC can also add AE fueling, but there
is only a set fuel amount, (KAEISCN). This isn't used in stock application,
and I found no change when I did it in some test programs. The AE
MAP term, the AE TPS term and the AE IAC term are summed. The AE
sum is then multiplied by values from the F37 (based on coolant)
and F38 (based on RPM). I've made my main changes in F37. They
had to be cut down quite a bit actually. Careful here, because you
have to ensure that you are adjusting fueling for a dynamic, accelerating
condition, and not for a condition that is lean. The way I have
done this is to adjust your VE terms while at a steady state, non
accelerating condition. Once you have that really dialed in, work
on the DE. Once that is done, make several programs with varying
F37 values (a wide range) and see if you can notice a difference
across the board. I have done some chips with radical changes, just
to see HOW the changes affect drivability. I did a chip with AE way
cut back... kinda thinking "does this REALLY do what it says it
does in the code?". Yup it did. Any throttle application resulted
in bad surging and stumbling... Anyways, doing it this
way will establish a trend. From there, you can narrow the programs
down to your favorites. Next will be to see how it varies when it's
cold versus when it's hot. Adjust those the same way, scaling the
F37 a few different ways, and seeing what works best.
- BG -