EECTCH98
EECTCH98
EECTCH98
fm
DISCLAIMER
(The information supplied herein was taken from technical and sales literature, email archives, news groups, and wherever else it could be found. If it helps you,
great! Please return the favor by sharing what you learn with me and others.)
None of this data is guaranteed accurate! USE AT YOUR OWN RISK! It is a collection
of technical info, opinions and guesses. You can contribute to the effort by letting me know what you learn so that it can be added to and corrected.
PURPOSE
This data has been collected and compiled to help you decipher the EEC-IV inner
workings. The EEC MCU probably controls one or more vehicles you own, plus it contains all the components necessary to build an EFI system for any vehicle -- if only
we could program and modify it. That is the purpose -- to uncloak the EEC-IV so
that we can play with what we bought! Much of the empirical data in this document
is specific to the A9L EEC computer. That is the model MotorSport SVO sells for
conversion of Mustangs from SD to MAF, and it was stock on 5-speed manual transmission Mustangs from 1989 to 1993, so consensus was reached to pursue this one
configuration until it was understood rather than divide our efforts chasing many.
Beginning with contacts on the Fordnatics and DIY-EFI mailing lists, the discussion
and research into the EEC PCM was soon split off into its own e-mail group, the EECIV Mailing List. To participate in the ongoing work of uncloaking the EEC, join the
EEC mail list on the internet.
Information on EFI Mailing Lists can be found at
EEC-IV http://eelink.umich.edu/~p-nowak/eec-efi/EEC-Mailadddrop.html
to subscribe, send mail (your mail message can be empty) to:
[email protected]
DIY-EFI http://efi332.eng.ohio-state.edu/
to subscribe, send an email to
[email protected]
with the following in the body of your message:
subscribe diy-efi [your email address *only* if different than your "From"
address]
Fordnatics http://www.neosoft.com/internet/paml/groups.F/fordnatics
Eectch98-Intro.fm
OVERVIEW
The EEC-IV design began in 1978 and was first introduced in 1983 in the 1.6L Escort,
Lynx, EXP and LN7 cars. It has gone through several major physical changes, the
earliest using a fairly simple two board design with through hole soldered components while the last are more current in technology, showing extensive use of
surface mount components and a much more finished and complex appearance. In
between, there appears to be a variety of mother/daughter board and other designs.
Still, they are all called EEC-IV, although somewhere in its life there was a Ford
P/N generational change.
The reader is referred to the SAE paper #820900, noted in the reference section at
the end of this document, for a much more detailed description of the design goals
and operation of the EEC-IV MCU.
One person wrote: "The processor used is the 8065 along with several supporting
peripheral chips like the DUCE chip which can provide up to 8 PWM outputs and the
DARC chip which has 6 channels of timer capture inputs." (Is he talking about the
EEC-V here ?)
The EEC module is rated to 80 oC (185oF) continuous, 100oC intermittent, so it will
be much happier and live longer in the passenger compartment. Some of the later generation 15 and 18 MHz Motorola 8061 processors have a bus loading/edge timing
sensitivity that only gets worse at high temperature, so its best to keep the EEC
in a more hospitable environment. Additionally, mounting the EEC in the passenger
compartment will give you better access to the J3 test port, which is where youll
be plugging in an after-market module or any test / modification device.
The J3 test port on the side of the ECU box is for developers to plug into -- this
is how the after-market chipmakers and others get into the box. The test connector
has the micro-controllers multiplexed address/data bus signals on it. It also,
very conveniently, has a PROM disable signal. So the chip makers design something
that hangs off that connector, disables the computers PROM, and substitutes its own
PROM in its place.
The reader is encouraged to investigate the Intel 8096 (MCS-96) literature for
greater insight into the 8061 processor used in the EEC. One document available
from their web site is "27006102.pdf" entitled "APPLICATION NOTE; AP-248; Using The
8096"; Order Number: 270061-002. There are many other related documents available
from Intel -- including the use of the A-D converter, the implementation of "fuzzy
logic", instrumenting and controlling automotive applications, and other topics.
Also, this author has posted a synopsis of the 8096 pinouts and instruction set
which is available at several web sites.
ACKNOWLEDGEMENTS / CONTRIBUTORS
Gotta love this job - I collect all the work other people have done and then get to
take the credit for it! Someone sent this to me via e-mail and I thought it appropriate here: To steal ideas from one person is plagiarism; to steal from many is
research.
Eectch98-Intro.fm
Below is a list of the people (and/or other sources) that have either given me
information Ive used here or have provided insight or help - theyre the ones that
know about this subject. Correction - a consensus was reached to omit references to
any people - so, if you contributed something or are quoted in this document and
want to be acknowledged, please let me know and Ill be sure youre mentioned in the
next rev.
(Ive been doing this so long, have talked with so many people, visited so many web
sites and read so much literature that I guarantee many people and sources are omitted. Its unintentional. If youve been left out or you see something or someone
that should be acknowledged here, please let me know right away.)
Date
9-26-96
2-7-97
Name(s)
Notes
4-22-1997 8096_CPU.DOC
11-26-1997 112601.pdf
9-3-1998
Eectch98-Intro.pdf rev 2
Eectch98-Part1.pdf
Eectch98-Part2.pdf
Eectch98-Part3.pdf
Eectch98-Part4.pdf
Eectch98-Part5.pdf
9- -1998
Eectch98.pdf rev 3
Eectch98TOC.fm
Table of contents
TECHNICAL NOTES ON THE EEC-IV MCU ====================================== 1
INTRODUCTION =========================================================== 1
DISCLAIMER - - - - - - - - - - - - - - - - - - - - 1
PURPOSE - - - - - - - - - - - - - - - - - - - - - 1
Table 1: EFI Related Mailing Lists
2
2
1: 8061 Microprocessor - - 2: 8061 Major Functional Units 3: 8061 CPU - - - - - - 4: 8061 High Input Unit - - 5: High Speed Output Unit - 6: Vector to Service Routine 7: 8763 EPROM - - - - - 8: 81C61 RAM - I/O - - - - EEC Chipset Nomenclature Legend
8061 CPU Pinout - - - - - - 8361 RAM/IO Pinout - - - - - 87C61 RAM/IO Pinout
- - - - 8763 EPROM Pinout - - - - - 8061 Chipset Legend
- - - - -
Table 15: ECM Test Port (J3) Pinout - Figure 9: J3 Service Port Connector
Table 16: ECM CABLE PINOUT - - - Figure 10: EEC Main Connector -
19
20
- - 20
20
SOFTWARE ==============================================================
THE BASICS - - - - - - - - - - - - - - - - - - INTERNAL DIAGNOSTICS - - - - - - - - - - - - - - - FUEL CONTROL - - - - - - - - - - - - - - - - - IGNITION AND TIMING CONTROL: - - - - - - - - - - - - EEC-IV Technical Notes: Table of Contents
14
14
17
17
17
18
- - 19
19
7
7
8
8
9
9
9
10
11
11
12
12
12
13
14
14
-
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
22
22
22
22
24
Eectch98TOC.fm
Table 17: EEC Functions - - - - - - - - Table 18: EEC Scalars - - - - - - - - - Table 19: Example Scalars from Calibrator Demo
A9L Constants & Locations - - - - - - - - Table 20: EEC Tables - - - - - - - - - Table 21: Accel Enrichment Fuel [lb/min]
- - Table 22: Startup Fuel Ratio
- - - - - - Base Fuel A:F Ratio:
- - - - - - - - Table 23: Base Fuel A:F Ratio - - - - - - Table 24: Injector Timing
- - - - - - - Table 25: Injector Firing Order
- - - - - Table 26: Base Spark [Deg BTDC]
- - - - - Table 27: Altitude Base Spark [Deg BTDC]
- - Table 28: Limp Mode Spark Table [Deg BTDC] - - Table 29: Injector Output Port Table - - - - Table 30: Load Scaling
- - - - - - - - Table 31: MAF Transfer Function
- - - - - Table 32: WOT Spark Advance vs RPM
- - - - Table 33: WOT Spark Advance vs. ECT - - - - Table 34: WOT Spark Advance vs. ACT - - - - Table 35: Accelerator Enrichment Multiplier vs TP
Table 36: Open Loop Fuel Multiplier vs. ACT
- Table 37: Spark Advance vs. ACT
- - - - - Table 38: Spark Advance vs. BP - - - - - - Table 39: Spark Advance Rate vs. RPM - - - - Table 40: Minimum Low Speed Dwell - - - - - Table 41: Minimum High Speed Dwell
- - - - Table 42: Maximum Dashpot Clip - - - - - - Table 43: Sea Level Lugging O/L Fuel Multiplier Table 44: Altitude Lugging O/L Fuel Multiplier
Table 45: Crank Fuel Pulse Width Multiplier
- Table 46: Cranking Fuel Pulse width vs. ECT
- Table 47: Injector Offset vs. Battery Voltage - Table 48: Open Loop Fuel Multiplier vs. RPM
- Data Pointers - - - - - - - - - - - Idle Speed Constants - - - - - - - - - Table 49: A9L Idle Speed Addresses
- - - - Speed Limiters - - - - - - - - - - - Rev Limiter - - - - - - - - - - - - Half Fuel Limits - - - - - - - - - - A9L Tables - - - - - - - - - - - - - A9L Table Format Explanation - - - - - - - DA1 Constants & Locations - - - - - - - - -
25
25
25
-
- 26
- 26
- 27
28
- 28
- 28
- 28
29
- 29
- 29
- 29
- 30
- 30
- 31
- 31
- 31
- 32
- 32
- 33
- 33
- 33
- 34
- 34
- 34
- 35
- 35
- 35
- 35
- 36
- 36
- 36
- 36
- 37
- 37
38
38
- 38
39
39
39
39
43
45
SENSORS ===============================================================
EGO - - - - - - - - - - - - - - - - - - - - EGR - - - - - - - - - - - - - - - - - - - - ACT - - - - - - - - - - - - - - - - - - - - TFI / PIP - - - - - - - - - - - - - - - - - - Table 50: ACT Transfer Function
KNOCK SENSOR
46
46
46
47
47
- 47
48
Eectch98TOC.fm
Table 51:
Testing AFMs
Table 52:
Table 53:
Table 54:
- - - - - - - - - - - - - -
48
48
-
- 48
49
- 49
- 50
- 50
- - - - - - - - - - - - - - - - - - - - - - -
- - 53
54
54
54
EPEC -
59
60
60
60
61
61
61
61
61
62
62
62
63
64
65
65
66
67
67
68
69
REFERENCE ============================================================= 72
EEC APPLICATIONS - - - - - - - - - - - - - - - - 72
Table 61: PCM Applications
TERMS -
- 72
- 76
76
78
79
HARDWARE
Compiled by Tom Cloud <[email protected]>
(font is Courier New)
R
L
ADDR
&
ANALOG
INPUTS
13
I
/
O
HI SPEED
INPUTS
8
I
/
O
I
N
T
E
R
F
A
C
E
HI SPEED
OUTPUTS
10
C
I
R
C
U
I
T
S
A-BUS 8
ADDR
LO SPEED
OUTPUTS
8
BIDIRECT
I/O
2
DATA
INTERRUPT
CONTROLLER,
WATCHDOG
TIMER, I/O
STATUS
REGISTER
ADDR/
DATA
RALU
REGISTER
FILE
(120 X 16)
PROGRAM
COUNTER
STACK
POINTER
DATA
DATA
ADDR
DATA
DATA
D-BUS (16)
8061
MICROPROCESSOR
8
LSBs
B
U
F
F
The high speed hardware / register structure is a design by Ford engineers to simplify the processing of digital I/O signals. Ford chose to design a custom
microprocessor - memory comXTAL
bin ati on and th e 8 06 1 a nd
D-BUS
A-BUS
8361 were the result. Those
A/D
two ch ips fo rm a t wo -ch ip
CONVERTER
CLOCK
8
microcomputer.
16
GENERATION
HSI
1. An I/O intensive
circuit with hi-speed
digital I/O capability.
HSO
REGISTER
ALU
WATCHDOG
TIMER
M BUS
MEMORY
CONTROLLER
REGISTER
FILE
CPU
INTERRUPT
CONTROLLER
8061 Major Functional Units
8. A large memory address space with minimum off-chip memory access time.
The 8061 microcomputer chip features a CPU, 256 bytes of RAM, an A/D converter and
independent co-processor circuitry to expedite digital signal I/O handling. There
are 13 analog lines, 8 hi-speed digital inputs, 10 hi-speed digital outputs, 8 lospeed digital outputs and 2 bi-directional I/O lines, making a total of 41 I/O lines
on the CPU chip. The A/D converter is a 13-channel, 10-bit successive approximation
unit.
D-BUS
A-BUS
8
16
CONTROL
UNIT
INSTRUCTION
REGISTER
RALU
ADDRESS
REGISTER
REGISTER
FILE
HOLDING REGISTER
DATA AVAILABLE
TO
INTERRUPT
UNIT
Eectch98-Part1.fm
HIGH
LOW
PRIORITY PRIORITY
HOLDING REGISTER
COMMAND
OUTPUT INTERRUPT 1
TIME
OUTPUT INTERRUPT 2
TRANSITION
DETECTOR
24
0
PENDING
REGISTER
CONTENT
ADDRESSABLE
MEMORY
(CIRCULATING)
COMMAND
DECODER
MASK
REGISTER
10 HS
OUTPUTS
GATE
9
TIME
PRIORITY
ENCODER
COMPARATOR
16
MASTER
I/O
TIMER
16
8
INTERRUPT
GENERATOR
COMMAND
The 8061 is a double-bus structure machine with CPU, memory controller, clock, I/O
with co-processors, A/D converter, watchdog timer, and an interrupt controller.
The CPU consists of the register file, the register-arithmetic logic unit (RALU),
and a control unit. Note that the RALU does not use an accumulator but operates
directly on any register in the register file, resulting in code length and execution speed improvements. The control unit consists of the instruction register and
associated circuitry which
decodes the instructions and
generates
the
correct
ENABLE
RP0
READ
I
sequence of internal conONLY
/
RP5
PORT
trol signals to execute
O
instructions.
The clock generator in the
8061 divides the crystal
frequency, internally, by
three to provide a duty
cycle of 33%. The clock signal period, called one state
time, equals three oscillator periods.
A watchdog timer is incremented every state time. It
is a 16-bit counter that reinitializes the system when
it overflows to provide a
means of recovering from a
SLAVE
PROGRAM
COUNTER
DATA
ADDRESS
REGISTER
ADDR
MACHINE
STATE LOGIC
16
16
A
D
D
R
E
S
S
C
I
R
C
U
I
T
S
B
I U
N F
F
D
A
T M
A U
O X
U
T
READ-ONLY
MEMORY
(16K X 16)
B
O U
U F
T F
DATA
TRISTATE
CONTROL
SIGNALS
8763 EPROM
MBUS
MB0-MB7
Eectch98-Part1.fm
software fault. The user must periodically reset the watchdog timer to prevent register overflow and subsequent re-start.
There are 8 interrupt sources in the 8061. A positive transition from any one of the
sources sets a corresponding bit in the pending register. A programmable mask register determines if the particular interrupt will be recognized or not. Interrupts can
occur at any time and simultaneous interrupts are accepted. Conflicts are resolved
with a two-level sequential priority hierarchy which establishes the order of servicing. A corresponding vector automatically identifies the location of each
interrupt service program. A software stack, which can be created anywhere in memory, can be used for temporary storage of important program data (e.g. the PC and
PSW) during execution of interrupt service routines.
The 8061 can address up to 64k bytes of memory, supports bit, byte, word and doubleword data types with six addressing modes and has eleven instruction categories
defined. The assembly language programmer can create very fast, compact programs by
using the direct addressing mode and careful movement of data between external memory and the register file.
The 8361 ROM chip contains 8k bytes of program memory plus 128 bytes of additional
RAM. Data transfer between the 8763 ROM and the 8061 is controlled by the memory
controller in the 8061. Addresses for instruction fetches from the ROM are maintained in a slave PC in the 8061 memory controller and in a corresponding counter in
the 8763. The slave PC functions like a traditional PC, being automatically incremented after each fetch and updated whenever the CPU executes a program jump. The
counter in the ROM is independent of the slave PC but
DATA
is
identical
to
it.
ENABLE
Addresses are transmitted
SLAVE
on the M-bus from the slave
I
PROGRAM
N
PC to the ROM under two
COUNTER 16
8
D
A A
8
conditions,
when
the
C
A
5
T S
I/O-0
address is initialized at
D I
RANDOM-ACCESS
A
S
R
I
D
MEMORY
EXECUTE
Y
the start of program execuC
I/O
R
I/O-4 /
ENABLE
U
PORT
O
O
(1K X 16)
tion or when a program jump
8
REGISTER 16 E I
U
S T
D
occurs. The slave PC conT
S S
A
5
cept eliminates the need to
T M
DATA
A U
send an address to exterADDRESS
X
8
REGISTER 16
nal
memory
for
each
ins truc tion -- tha t on ly
B
B
ADDR/DATA
DATA
being necessary when a
I U
O U
N
F
U
F
br a nc h o c cu rs or at pr o F
T F
MACHINE
gram initiation.
TRISTATE LOGIC
CONTROL
SIGNALS
STATE
10
Eectch98-Part1.fm
logic analyzer. The 8096 has a multiplexed address/data bus. The address/data bus
signals are on the service port connector (J3) along with a few others, possibly
including the address latch enable, read strobe, write strobe, and EPROM disable.
There are two hardware versions of the 8061 chip. One is a 40 pin DIP, with reduced
I/O and the other is a square LCC 68 pin package with all the functions implemented.
The multiplexed M-bus scheme used on the 8061 is not new, but the slave program
counter used on the 8763 is. It appears that the address / multiplexing scheme is
similar to that of the 8085 which has AD0 .. AD7 and then A8 .. A15 so the 8085
latches the address information A7:0, and maintains A8:15 while it is using AD0 ..
AD7 as D7:0 ....
It is speculated that the only internal EEC memory you could possibly get would be
the FLASH memory, if it was ever used. Look for a PLCC package, probably 32 pin,
that should be a standard 28F010 12V write, erase/5V read Flash available from TI,
Intel, AMD, and others. Might be labeled 81C65 or 81C62.
LEGEND
ADDR
ADDRESS
I/O
ASSY
ASSEMBLY
LO
INPUT/OUTPUT
LOW
A-BUS
ADDRESS BUS
LSB
BIDIRECT
BIDIRECTIONAL
MBus
MEMORY BUS
BUFF
BUFFER
EPROM
CTRL
CONTROL
MUX
MULTIPLEXER
D-BUS
DATA BUS
RAM
HI
HIGH
RPn
unused
35
A4
unused
36
A5
/RESET
37
A7
HSO9
38
A6
HSO8
39
A2
HSO7
40
A0
HSO6
41
A1
HSO5
42
A3
HSO4
43
AVCC
10
HSO3
44
VSS
11
HSO2
45
NC
12
HSO1
46
VBB
13
HSO0
47
HSI0
VSS
48
HSI1
15
xtal2
49
HSI2
16
xtal1
50
HSI3
17
LSO7
51
HSI4
18
LSO6
52
HSI5
19
LSO5
53
HSI6
20
LSO4
54
HSI7
21
LSO3
55
VCC
22
LSO2
56
NC
23
LSO1
57
DI
24
LSO0
58
IT
14
GND
11
Eectch98-Part1.fm
I/O1
59
/ST
26
I/O0
60
/PAUSE
27
EXT INT
61
MB0
28
VCC
62
MB1
29
AVSS
63
MB2
30
A10
64
MB3
31
A11
65
MB4
32
A9
66
MB5
33
A8
67
MB6
34
A12
68
MB7
OCP4
13
MB4
OCP3
14
MB3
OCP2
15
MB2
OCP1
16
MB1
OCP0
17
MB0
NC-RCV
18
NC
VCC
19
NC
NC-\XMT
20
/ST
ENA
21
IT
10
MB7
22
DI
11
MB6
23
NC
12
MB5
24
VSS
/OE
3
4
GND (?)
5
6
GND (?)
KAPWR
13
CPU-65, J3-13
MB4
14
CPU-64, J3-11
MB3
15
CPU-63, J3-9
MB2
16
CPU-62, J3-7
MB1
17
CPU-61, J3-5
MB0
18
VCC
19
GND (?)
20
21
IT
DI
10
CPU-68, J3-19
MB7
22
11
CPU-67, J3-17
MB6
23
12
CPU-66, J3-15
MB5
24
/ST
GND
VSS
J3-22, 1K to +5V
/TSTSTB
13
CPU-65, J3-13
MB4
J3-16, 10K to +5
/EPROMDIS
14
CPU-64, J3-11
MB3
RP0
15
CPU-63, J3-9
MB2
RP1
16
CPU-62, J3-7
MB1
RP2
17
CPU-61, J3-5
MB0
RP3
18
1k to +5V
VCC, VPP
VCC
19
+5V
VCC, TEST
3
4
GND
5
6
7
+5
12
Eectch98-Part1.fm
GND
RP4
20
CPU-59, J3-21
J3-12
/MRESET
21
CPU-58, J3-23
/ST
IT
10
CPU-68, J3-19
MB7
22
CPU-57, J3-25
DI
11
CPU-67, J3-17
MB6
23
12
CPU-66, J3-15
MB5
24
/CE
GND
VSS
ROM PORT
OCP
MB
EER
DAR
DI
DIRECTION INDICATOR
IT
INSTRUCTION TRANSFER
STB
STROBE
13
Eectch98-Part1.fm
The 8061 uses the same address space for program and for data memory and
can execute instructions from any memory address. Its addressing range
is 64k locations and the first 256 locations are on-chip and refer to
the internal register file. All other memory resides externally.
0F
0E
0D
0C
0B
0A
09
08
07
06
05
04
03
02
01
00
H.S. TIME
H.S. TIME
H.S. BUFFER
H.S. MASK
H.S. DATA
I/O STATUS
INT. PEND
INT. MASK
H.S. COMMAND
H.S. MASK
NU
I/O STATUS
INT. PEND
INT. MASK
TIMER
NU
A/D HI
A/D LO
I/O PORT
L.S. PORT
WATCHDOG
A/D COMMAND
I/O PORT
L.S. PORT
ZERO REG
NU
READ
WRITE
ENGINEERING
CONSOLE
CALIBRATION
CONSOLE
E000H
C000H
PROGRAM
MEMORY
(40k)
INTERRUPT VECTORS
2010H - 201FH
2000H
ENGINEERING
CONSOLE (4k)
CALIBRATION
CONSOLE (4k)
KAM (512)
FUTURE USE (1536)
EXTERNAL RAM (768)
1000H
0C00H
0A00H
0400H
0100H
00FFH
INTERNAL
REGISTERS
(238)
0000H
8096
8061
8065
10
nu
nu
E3
BR
nu
ROMBANK
nu
F1
nu
RETI
RETEI
F4
nu
nu
BANK0
F5
nu
nu
BANK1
F6
nu
nu
BANK2
FD
NOP
nu
BANK3
FF
RST
NOP
NOP
8061/5
DESCRIPTION
DIFFERENCE
00
SKIP
SKP
01
CLR
CLRW
clear word
rename
rename
02
NOT
CPLW
complement word
rename
03
NEG
NEGW
negate integer
rename
04
nu
05
DEC
DECW
decrement word
rename
06
EXT
SEXW
rename
07
INC
INCW
increment word
rename
08
SHR
SHRW
rename
09
SHL
SHLW
rename
0A
SHRA
ASRW
rename
14
Eectch98-Part1.fm
OP-CODE 8096
8061/5
DESCRIPTION
DIFFERENCE
0B
nu
0C
SHRL
SHRDW
0D
SHLL
SHLDW
rename
0E
SHRAL
ASRDW
rename
0F
NORML
NORM
10
ROMBANK
rename
rename
not in 8096
11
CLRB
CLRB
clear byte
same
12
NOTB
CPLB
complement byte
rename
13
NEGB
NEGB
negate byte
same
14
nu
15
DECB
DECB
decrement byte
same
16
EXTB
SEXB
rename
17
INCB
INCB
increment byte
same
18
SHRB
SHRB
same
19
SHLB
SHLB
same
1A
SHRAB
ASRB
rename
1B
nu
1C
nu
1D
nu
1E
nu
1F
nu
20-27
SJMP
SJMP
short jump
same
28-2F
SCALL
SCALL
short call
same
30-37
JBC
JNB
rename
38-3F
JBS
JB
rename
40-43
AND
AN3W
split
44-47
ADD
AD3W
split
48-4B
SUB
SB3W
split
4C-4F
MULU
ML3W
split
50-53
ANDB
AN3B
split
54-57
ADDB
AD3B
split
58-5B
SUBB
SB3B
split
5C-5F
MULUB
ML3B
split
60-63
AND
AN2W
split
64-67
ADD
AD2W
split
68-6B
SUB
SB2W
split
6C-6F
MULU
ML2W
split
70-73
ANDB
AN2B
split
74-77
ADDB
AD2B
split
78-7B
SUBB
SB2B
split
7C-7F
MULUB
ML2B
split
80-83
OR
ORRW
logical or words
rename
84-87
XOR
XRW
rename
88-8B
CMP
CMPW
compare words
rename
8C-8F
DIVU
DIVW
rename
90-93
ORB
ORRB
logical or bytes
rename
94-97
XORB
XRB
rename
98-9B
CMPB
CMPB
compare bytes
same
9C-9F
DIVUB
DIVB
rename
A0-A3
LD
LDW
load word
rename
A4-A7
ADDC
ADCW
rename
A8-AB
SUBC
SBBW
rename
AC-AF
LDBZE
LDZBW
rename
B0-B3
LDB
LDB
load byte
same
15
Eectch98-Part1.fm
OP-CODE 8096
8061/5
DESCRIPTION
DIFFERENCE
B4-B7
ADDCB
ADCB
rename
B8-BB
SUBCB
SBBB
rename
BC-BF
LDBSE
LDSBW
rename
C0/2/3
ST
STW
store word
rename
C1
nu
C4/6/7
STB
STB
store byte
same
C5
nu
C8-CB
PUSH
PUSHW
push word
rename
CC/E/F
POP
POPW
pop word
rename
CD
nu
D0
JNST
JNST
same
D1
JNH
JLEU
rename
D2
JGT
JGT
same
D3
JNC
JNC
same
D4
JNVT
JNVT
same
D5
JNV
JNV
same
D6
JGE
JGE
same
D7
JNE
JNE
same
D8
JST
JST
same
D9
JH
JGTU
rename
DA
JLE
JLE
same
DB
JC
JC
same
DC
JVT
JVT
same
DD
JV
JV
same
DE
JLT
JLT
same
DF
JE
JE
jump if equal
same
E0
DJNZ
DJNZ
same
E1
nu
E2
nu
E3
BR
branch indirect
not in 8061/5
E4
nu
E5
nu
E6
nu
E7
LJMP
JUMP
long jump
rename
E8
nu
E9
nu
EA
nu
EB
nu
EC
nu
ED
nu
EE
nu
EF
LCALL
CALL
long call
rename
F0
RET
RET
same
F1
-----
not in 8096
F2
PUSHF
PUSHP
push flags
rename
F3
POPF
POPP
pop flags
rename
F4
BANK 0
F5
BANK 1
F6
BANK 2
F7
TRAP
INT
F8
CLRC
CLC
F9
SETC
STC
rename
FA
DI
DI
disable interrupt
same
FB
EI
EI
enable interrupt
same
same
16
Eectch98-Part1.fm
OP-CODE 8096
8061/5
DESCRIPTION
DIFFERENCE
FC
CLRVT
CLRVT
FD
NOP
BANK 3
NOP 8096/8061
different
FE
PREFIX SIGND/ALT
rename
FF
RST
different
NOP
same
The bank selection opcodes are 8065 -- as that is the difference between them, memory bank selection capabilities.
00
10
20
30
40
50
60
70
00
SKP
ROMBANK*
SJMP
JNB0
AN3W d
AN3B d
AN2W d
AN2B d
01
CLRW
CLRB
SJMP
JNB1
AN3W =
ANDB =
AN2W =
AN2B =
02
CPLW
CPLB
SJMP
JNB2
AN3W @
AN3B @
AN2W @
AN2B @
03
NEGW
NEGB
SJMP
JNB3
ANEW ()
AN3B ()
AN2W ()
AN2B ()
04
(ua)
(ua)
SJMP
JNB4
AD3W d
AD3B d
AD2W d
AD2B d
05
DECW
DECB
SJMP
JNB5
AD3W =
AD3B =
AD2W =
AD2B =
06
SEXW
SEXB
SJMP
JNB6
AD3W @
AD3B @
AD2W @
AD2B @
07
INCW
INCB
SJMP
JNB7
AD3W ()
AD3B ()
AD2W ()
AD2B ()
08
SHRW
SHRB
SCALL
JB0
SBEW d
SB3B d
SB2W d
SB2B d
09
SHLW
SHLB
SCALL
JB1
SB3W =
SB3B =
SB2W =
SB2B =
0A
ASRW
ASRB
SCALL
JB2
SB3W @
SB3B @
SB2W @
SB2B @
0B
(ua)
(ua)
SCALL
JB3
SB3W ()
SB3B ()
SB2W ()
SB2B ()
0C
SHRDW
(ua)
SCALL
JB4
ML3W d
ML3B d
ML2W d
ML2B d
0D
SHLDW
(ua)
SCALL
JB5
ML3W =
ML3B =
ML2W =
ML2B =
0E
ASRDW
(ua)
SCALL
JB6
ML3W @
ML3B @
ML2W @
ML2B @
0F
NORM
(ua)
SCALL
JB7
ML3W ()
ML3B ()
ML2W ()
ML2B ()
90
A0
B0
C0
D0
E0
F0
00 ORRW d
ORRB d
LDW d
LDB d
STW d
JNST
DJNZ
RET
01 ORRW =
ORRB =
LDW =
LDB =
(ua)
JLEU
(ua)
RETI/RETEI*
02 ORRW @
ORRB @
LDW @
LDB @
STW @
JGT
(ua)
PUSHP
03 ORRW ()
ORRB ()
LDW ()
LDB ()
STW ()
JNC
(ua)
POPP
04 XRW d
XRB d
ADCW d
ADCB d
STB d
JNVT
(ua)
BANK0*
05 XRW =
XRB =
ADCW =
ADCB =
(ua)
JNV
(ua)
BANK1*
06 XRW @
XRB @
ADCW @
ADCB @
STB @
JGE
(ua)
BANK2*
07 XRW ()
XRB ()
ADCW ()
ADCB ()
STB ()
JNE
JUMP
INT**
08 CMPW d
CMPB d
SBBW d
SBBB d
PUSHW d
JST
(ua)
CLC
09 CMPW =
CMPB =
SBBW =
SBBB =
PUSHW =
JGTU
(ua)
STC
0A CMPW @
CMPB @
SBBW @
SBBB @
PUSHW @
JLE
(ua)
DI
0B CMPW ()
CMPB ()
SBBW ()
SBBB ()
PUSHW ()
JLC
(ua)
EI
0C DIVW d
DIVB d
LDZBW d
LDSBW d
POPW d
JVT
(ua)
CLRVT
0D DIVW =
DIVB =
LDZBW =
LDSBW =
(ua)
JV
(ua)
BANK3*
0E DIVW @
DIVB @
LDZBW @
LDSBW @
POPW @
JLT
(ua)
ALT*/SIGND/S
0F DIVW ()
DIVB ()
LDZBW ()
LDSBW ()
POPW ()
JE
(ua)
NOP
Interrupt
High-Speed Input #0
16-Bit Address
0x201E
17
Eectch98-Part1.fm
Priority:
Interrupt
16-Bit Address
High
High-Speed Input #1
0x201C
High
0x201A
Low
External Interrupt
0x2018
Low
0x2016
Low
A/D End-Of-Conversion
0x2014
Low
0x2012
0x2010
Lowest
READ
WRITE
0000:0001 ZERO
R/O
0002
0003
I/O bi-directional
0004:
A/D LO
A/D channel #
0005:
A/D HI
watchdog timer
R/O
0008:
INTERRUPT MASK
INTERRUPT MASK
bit 7: HSI0
bit 6: HSI1
INTERRUPT STATUS
(same mask as above)
IO STATUS
IO STATUS
HSI sample
R/O
000C:
000D:
STACK POINTER
18
Eectch98-Part1.fm
29
27
25
23
21
19 17
15
13
11
30
28
26
24
22
20 18
16 14
12
10
MCU PIN
CPU 8061
29
PWR GND
40,60
27
VPWR
37,57
25
DI
57
22
22
23
IT
58
21
21
21
STROBE\
59
20
20
19
D7
68
10
10
17
D6
67
11
11
15
D5
66
12
12
13
D4
65
13
13
11
D3
64
14
14
D2
63
15
15
D1
62
16
16
D0
61
17
17
KA5V
VREF (+5)
battery +
7
26
30
PWR GND
28
VPWR
26
BS0
24
BS3
22
TSTSTB\
20
PROGRAM
18
RAMDISABLE\
16
EPROMDISABLE\
14
ERASE
12
MRESET\
10
RESET\
PAUSE\
60
EXTINT
VCC
notes
37,57
battery +
1K TO +5 only
10K TO +5 only
9
9
1K TO +5 only
IC4-74001 pin 13
25
19
Eectch98-Part1.fm
Mustang
No
A9L
1
Kapwr
'91
Ranger
2.3
Kapwr
'91 4.9,
5.0, 5.8 Fseries w/o
E4OD
Bty to load
BOO
VSS +
IDM
VSS -
ECT
FPM
9
10
ACC
11
AM 2
'91 4.9,
5.0, 5.8 Fseries w
E4OD
Bty to load
'91 7.3
diesel Fseries w
E4OD
Bty to load
Description
keep-alive power
VSS +
VSS
VSS
VSS
IDM
elect sw to
ignition coil
elect sw to
ignition coil
elect sw to
ignition coil
VSS -
VSS return
VSS return
VSS return
ECT
engine coolant
engine coolant
FPM
DATA -
EEC data -
EEC data -
ACC
compressor
clutch feed
compressor
clutch feed
thermactor
diverter valve
thermactor
diverter valve
12
4X4 lo-range
indicator
14
MAF (CA
only)
15
MAF RTN
(CA only)
4X4 lo-range
indicator
16
IGN GND
IGN GND
Ignition ground
17
STO/MIL
STO/MIL
check engine
lamp
check engine
lamp
check engine
lamp
20
CSE GND
CSE GND
GND
GND
GND
Case ground
21
ISC/BPA
ISC/BPA
ISC
ISC
20
Eectch98-Part1.fm
No
Mustang
A9L
22
FP
23
KS
24
PSPS
25
ACT
26
VREF
27
EVP
28
29
HEGO
30
NDS
'91
Ranger
2.3
FP
'91 4.9,
5.0, 5.8 Fseries w/o
E4OD
'91 7.3
diesel Fseries w
E4OD
Fuel pump
KS
Knock sensor
PSPS
PSPS
PSPS
ACT
ACT
ACT
VREF
pwr to sensors
pwr to sensors
HEGO
NDS
EEC data +
EEC data +
HEGO
EGO
EGO
NDS/CES
canister purge
solenoid
canister purge
solenoid
32
EVR
EGR valve
EGR valve
34
DOL
35
EEC to xmsn
36
SPOUT
37
VPWR
SPOUT
tach feed
VPWR
electronic
pressure ctl
electronic
pressure ctl
dedicated GND
dedicated GND
38
40
Description
KS
31
33
'91 4.9,
5.0, 5.8 Fseries w
E4OD
PWR GND
PWR GND
dedicated GND
41
Power ground
42
43
ACD
A/C demand
A/C demand
MAP
MAP feed
MAP feed
MAP feed
SIG RTN
TAPS
44
tach retn
45
MAP
46
SIG RTN
47
TPS
TPS
TAPS
48
STI
STI
49
HEGOG
HEGOG
51
AM 1
thermactor dump
valve
thermactor dump
valve
TAPS
EEC to test
conn #1
Self-test input
52
SS
xmsn throttle
valve sol #1
xmsn throttle
valve sol #1
53
CCO
clutch sw
clutch sw
54
WAC
coast clutch
sol
coast clutch
sol
55
56
PIP
57
VPWR
PIP
VPWR
58
59
INJ 1
INJ 1
INJ 1
INJ 1
INJ 2
INJ 2
INJ 2
INJ 2
60
PWR/GND
PWR/GND
dedicated GND
dedicated GND
Power ground
21
Eectch98-Part2.fm
SOFTWARE
Compiled by Tom Cloud <[email protected]>
(font is Courier New)
THE BASICS
The EEC-IV original objectives included "calculating all required engineering command values and output the required real time commands for spark timing, exhaust gas
recirculation valve positioning and for turning fuel injectors on or off in a
sequentially firing configuration, in a total time of 2.5 milliseconds or less."
EEC-IV programs are 57k in length and EEC-V programs are 114k and they both begin
with:
FF
FA
NOP
DI
The EEC-IV tables can be located by looking at the cal pointers (located somewhere
in the 30 or 50 bytes of EPROM after 2000). The table segment addresses are in
there. Another helpful hint is that Ford likes the binary point method of scaling.
INTERNAL DIAGNOSTICS
Two types of diagnostics are performed by the EEC (this was written for early 80s
model units so it may be expanded now). They are On-Demand and Continuous diagnostics. On-Demand is conducted during key-on/engine-off and during engine running
modes to permit the microprocessor to test itself. Continuous, as the name implies,
is on-going whenever the system is in operation. Beginning in the latter part of
1983, the EEC-IV began to remember conditions found during continuous testing, even
after the key is turned off with a special custom memory chip called Keep Alive Memory (KAM). The KAM chip, which contains 128 bytes of read/write memory, is powered
by a separate low current connection to the vehicle battery. Faults, even intermittent ones, are recognized and stored away for recall during dealer service.
FUEL CONTROL
There are two basic methods of fuel delivery: throttle body injection and manifold
injection, and the methods of determining how much fuel to be delivered is determined using speed density, air volume or mass air techniques. The volume or mass
air approaches require sensors to determine those values. The Air Flow sensor used
in production EFIs typically compensates for temperature and density changes in the
intake air mass, then the oxygen sensor is used to fine tune the mixture. Almost
all use barometric compensation in one form or another. Some systems take a barometric reading from the MAP sensor after the ignition key is turned on, but before
the engine starts, and store this as a reference. This can also be updated at WOT,
since manifold pressure is essentially = barometric pressure at this point (with
EEC-IV Technical Notes: Software
22
Eectch98-Part2.fm
some flow related pressure drop). Some systems have a separate barometric sensor in
addition to MAP. Some MAPs are not absolute sensors at all, but differential sensors, referenced on one side to the atmosphere. So as the atmospheric pressure
changes, the MAP reference point changes as well. Some compensation is possible
with the fuel pressure regulator, since it is usually referenced to manifold pressure and thus atmospheric indirectly. This helps regulate the pressure across the
injector so the amount of fuel delivered is related to only the injector pulse
width. Some systems have no barometric pressure compensation at all.
The EEC does 4 point interpolation on all tables. There is a minimal number of
cells in the fuel lookup tables. The EEC doesnt look up injector on time, it
calculates the injector pulse width by looking at the desired Lambda and then, using
the mass of air entering the engine and the injector size, it calculates the duty
cycle needed to get the desired A/F ratio. (Lambda is an engineering term where
stoich is 1, anything smaller than 1 is rich, anything larger than 1 is lean. To get
A/F numbers from Lambda, multiply lambda value by 14.64. For example, an A/F ratio
of 14.05:1 is a lambda of .85 lambda.)
The ECU controls both the fuel mixture and the timing with the fuel mixture operating in either "open loop" or "closed loop" mode. Anything external to the EEC that
tries modify the fuel mixture at points where the engine is in closed loop operation will cause the computer to attempt to compensate. Thats why trying to change
the A:F ratio and "fool the computer" cause more problems than its likely to solve.
Timing and WOT fuel settings arent closed loop functions, and can be changed without the computer trying to correct them. This is why units that connect between the
cable and the ECU arent very effective at modifying fuel mixtures.
Closed loop operation can sometimes be altered without problems. This has allowed
some manufacturers to market cars and parts that are fully emissions legal (e.g.
Kenne-Belle, Saleen, etc). After-market devices that go between the engine harness
and the EEC interfere with closed loop. Software modules that connect to the service connector (Hypertech, Superchips, etc.) do not interfere with closed loop rather they can define new values for closed loop. The EEC will do whatever its
told -- its a computer running a program and your data can be substituted for the
factorys through the service port connector. The EEC cannot learn around a software module.
Closed loop operation basically consists of a controller with a target A/F ratio,
HEGO information as its feedback and the injectors as the main control mechanism.
The factory target A/F ratio is 14.64:1, but this can be changed.
Approximately 900 items can be changed or logged in a 93 5.0 Mustang. For example,
during a shift, the EEC might look at spark, load, TP, fuel, and transient fuel. By
logging this data, you can tell exactly where in the spark tables the EEC is travelling and tune just those cells. Most people would normally tweak the whole curve
down or try and tune in areas the EEC isnt even looking at. With data-logging, you
can see exactly where its pulling its data from.
Examples of some of the functions controlled by the EEC are: A:F ratio in closed
loop, transient fuel, EGR, Canister Purge, Thermactor, adaptive control system, control of OBD-I and OBD-II testing (on/off/change test values...), fuel, spark, MAFs,
VE tables, injectors, rev limits, speed limits, electronic transmission control, and
lots more.
If you have a later car (91 or newer), there is an integrated controller module
(ICM) (12B577 basic #) located in the engine compartment. It is a black metal box
about 8"X6"X1.5" and runs the cooling fan, the fuel pump, and the EEC power.
A contributor wrote:
"Ive been hacking away at the Taurus code, and I think I have
23
Eectch98-Part2.fm
most of the code broken down into chunks. It looks as though Ford calculates AIRFLOW from the speed-density calculation, then re-calculates AIR MASS PER CHARGE from
it. Im having a hard time figuring out the spark timing algorithms, probably half
way through the PFE EGR system, and Ive looked at the O2 system. The adaptive learn
stuff is weird. Ive looked briefly at the self-test. The timer scheduler is very
weird. They ran out of HSO slots by the looks of things, so they wrote some clever
code to get around that."
24
Eectch98-Part2.fm
1) It lets the EEC know how fast the engine is turning (frequency alone).
2) It gives a base signal to be sent back to the TFI after being delayed a bit.
This delay or phase change (relative to the PIP) is what lets the EEC control timing. But, indirectly, the TFI is doing most of the work.
The return signal from the EEC to the EDIS is unrelated to the PIP.
cates to the EDIS unit the amount of spark advance required.
It purely indi-
Knock Sensor
It looks like the SES/STO line is used to set the knock sensor threshold by pulsing
the line to control the knock threshold. This only applies to systems using knock
sensors. Does anyone know of any other rogue use of the STO line? If yes, does
anyone have another suggestion on a line to use to sneak data out on? I am assuming that the EEC everyone is concentrating on does not have a CART like the Taurus
one does.
ON
ON
OFF
OFF
OFF
OFF
Air management #1
OFF
Air management #2
OFF
pins 31,32,34,35,54,55
OFF
25
Eectch98-Part2.fm
tion and there are likely to be others that have yet to be found. The actual memory
locations, where known, are listed for the A9L.
Dependent Variable
Independent Variable
Function
A9L
Raw Load
6CB2
MAF Transfer
MAF Voltage
6DE2
RPM
7504
ECT
7532
ACT
7540
TP - A/D Counts
RPM
7B80
ACT
7B48
Spark Advance
ACT
74EE
Spark Advance
Barometric Pressure
7528
RPM
Seconds/Degree
779C
Battery Voltage
7748
Battery Voltage
7760
RPM
7346
RPM
782A
RPM
7846
729A
ECT
Pulsewidth [ms]
787A
Battery Voltage
Injector Offset
7B30
RPM
7DE8
Dashpot[lb/min]
732A
TP
ACT
ECT
Transmission TV Pressure
TP
TP
Upshift Speed
TP
Downshift Speed
TP
Idle Airflow
EEC SCALARS
Scalar
A9L
Injector Size
Injector Slope
Minimum Injector Pulse Width
Accelerator Pump Multiplier
Open Loop Fuel Multiplier
Part Throttle Timing Adder
Dwell Minimum
Dwell Maximum
ACT Minimum for Adaptive Control
ACT Maximum for Adaptive Control
Minimum ECT for Deceleration Fuel Shutoff
Minimum RPM for Deceleration Fuel Shutoff
Minimum Load (MAP) for Closed Loop
Hi-load Timeout to Open Loop
26
Eectch98-Part2.fm
Scalar
A9L
* 7C16
7A82
7A84
Speed Limit A -- ON
* 7A86
* 7A87
* 7A88
* 7A89
Scalar Examples
Scalars for 86-93 Mustang from Calibrator Demo
19.64
Injector Slope
0.0072494
19.641
28.8
0.40
Injector Breakpoint
1.0014e-005
0.0014
1.00
-15
0.50000
1.00
0.20000
3.0518
100
228
200
220
204
149.75
208
.0050049
140
672
672
CID
301.04
CID
301.04
EGR Multiplier
555
EGR Multiplier
10000
961
10000
6100
10000
6100
6250
127.5
127.5
127.5
127.5
27
Eectch98-Part2.fm
EEC TABLES
Parameter
Variable
Variable
A9L
01CB
ECT
Time
7C40
ECT
Load
7BF0
RPM
Load
Injector to Fire
RPM
Load
7574
RPM
Load
75C4
Load
7160
71B9
7614
Injector Port
71B1
ECT
Borderline Compensation
ACT
ECT
ACT
Borderline Compensation
Lambda
Lambda
E
C
T
33
48
63
77
90
110
125
8.0
12.0
18.0
20.0
200
1.5
1.5
2.0
3.0
4.5
150
1.5
1.5
2.0
3.0
4.5
8.0
12.0
100
2.0
2.0
3.0
4.5
8.0
12.5
18.0
29.0
50
4.0
5.0
6.0
8.0
12.5
17.0
25.5
34.0
30
5.0
8.0
10.0
12.0
16.5
21.0
27.0
45.0
12.0
14.0
16.0
18.0
26.0
30.0
38.0
55.0
-30
21.0
23.0
26.0
28.0
31.0
34.0
39.0
56.0
30
60
90
120
150
180
210
240
28
Eectch98-Part2.fm
T
I
M
E
45.00
35.00
1.000
1.25
0.875
0.500
0.375
0.875
0.875
0.250
0.500
1.000
25.00
1.250
1.500
1.125
1.000
1.000
1.250
1.250
0.875
1.000
1.250
15.00
1.625
1.625
1.500
1.375
1.250
1.375
1.375
1.125
1.375
1.625
10.00
2.250
2.125
2.125
1.875
1.875
1.875
1.875
1.250
1.875
2.250
5.00
2.750
2.750
2.375
1.875
1.875
1.875
1.875
1.500
1.875
2.750
3.00
2.875
3.625
2.625
1.875
1.875
1.875
1.875
1.625
1.875
2.875
0.00
3.375
4.125
3.000
1.875
1.875
1.875
1.875
1.375
1.875
3.375
L
O
A
D
%
30
60
90
120
150
180
210
90
10.500
10.500
12.500
12.500
12.750
13.125
13.500
13.500
13.500
13.500
80
11.250
11.250 12.7500
12.750
13.125
13.500
13.750
13.750
13.625
13.500
70
12.125
12.125
13.500
13.500
13.875
14.375
14.125
14.250
13.625
13.625
55
12.750
13.875
14.250
14.375
14.875
14.875
15.250
16.000
16.000
15.000
40
13.625
14.375
14.375
14.375
14.875
15.250
15.250
16.000
16.000
14.750
30
14.125
14.250
14.250
14.375
14.500
14.750
14.750
15.250
15.250
14.375
15
17.625
17.625
17.000
16.625
16.500
16.375
16.000
15.250
15.250
15.250
17.875
17.875
17.625
17.250
16.625
16.375
16.000
15.250
15.250
15.250
420
420
420
420
420
420
420
464
464
464
420
420
420
420
420
420
420
464
464
464
380
380
380
380
380
380
420
420
464
464
352
352
352
352
352
380
400
400
400
400
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
352
29
Eectch98-Part2.fm
700
900
% 15 28.00 28.00 28.00 31.25 33.25 34.25 34.25 34.25 28.25 28.25
05 28.00 28.00 28.00 27.25 29.00 30.00 30.00 30.00 30.00 30.00
50
75
40
60
30
50
20
40
30
10
23
90
0
11
00
13
00
15
00
20
00
25
00
30
00
40
00
70
50
15
5
The Base Spark Timing Table is stored at 7574 (30068 decimal) as unsigned byte values. Divide by 4 to convert to decimal.
RPM
500
700
900
75
11.50
11.50
13.00
13.00
14.25
17.00
27.25
27.25
27.25
27.25
60
11.50
11.50
13.00
13.00
14.25
18.25
27.25
27.25
27.25
27.25
50
O
A 40
D 30
17.25
18.50
18.50
18.50
20.75
23.00
30.00
31.25
31.25
31.25
23.00
24.25
28.75
37.00
39.00
39.00
38.00
37.00
32.25
32.25
28.75
30.00
34.50
42.75
43.75
41.5
41.5
43.75
32.25
32.25
23
28.00
28.00
33.00
42.75
42.75
43.75
43.75
43.75
32.25
32.25
% 15
28.00
28.00
28.00
32.25
34.25
35.25
35.25
34.25
28.25
28.25
05
28.00
28.00
28.00
27.25
29.00
30.00
30.00
30.00
30.00
30.00
1100
1300
1500
2000
2500
3000
4000
30
Eectch98-Part2.fm
700
900
1100
1300
1500
2000
2500
3000
4000
75
9.25
9.25
13.00
13.00
15.50
18.25
23.50
23.50
23.50
23.50
60
9.25
11.50
13.00
13.00
15.50
18.25
23.50
23.50
23.50
23.50
50
O
A 40
D 30
9.00
10.25
11.50
12.75
15.00
19.75
25.50
25.50
25.50
25.50
16.00
16.00
16.00
16.00
18.50
24.25
31.25
31.25
31.25
31.25
23.00
24.25
23.00
27.50
35.75
37.00
38.00
38.00
38.00
38.00
23
25.00
26.00
30.50
38.75
40.25
42.00
43.75
43.75
43.75
43.75
% 15
28.00
28.00
28.00
31.25
33.25
34.25
34.25
34.25
34.25
34.25
05
28.00
28.00
28.00
27.25
29.00
30.00
30.00
30.00
30.00
30.00
Raw Load
0
0.04998779296875
0.100006103515625
0.600006103515625
0.75
1.99996948242188
31
Eectch98-Part2.fm
Flow kg/hr
10.75
10.75
10.75
10.75
0.571044921875
10.75
0.75
14.75
0.884033203125
18.75
1.091064453125
25.75
1.181884765625
29.00
1.321044921875
35.25
1.468017578125
42.75
1.573974609375
49.25
1.69091796875
57.50
1.802978515625
65.00
1.889892578125
71.25
1.989013671875
79.00
2.154052734375
Flow kg/hr
800
600
400
94.75
2.31591796875
112.25
2.449951171875
127.25
2.58203125
144.00
2.694091796875
159.25
2.909912109375
192.00
3.14892578125
233.25
3.35498046875
274.25
3.5439453125
315.00
3.885986328125
394.25
4.177001953125
470.25
4.443115234375
548.75
4.76806640625
659.25
15.999755859375
659.25
200
0
0
Advance
0.00
10.25
1000.00
10.25
1800.00
22.25
2150.00
25.75
2600.00
26.75
3500.00
26.75
5000.00
30.25
16383.75
30.25
40
30
20
10
0
0
1000
2000
3000
4000
RPM
Table 32: WOT Spark Advance vs RPM
5000
6000
The WOT Spark Advance vs. RPM function is located at 7504 hex for the A9L and is
composed of 8 interleaved X-Y values, each 2 bytes in length, each unsigned and each
in two binary point format (divide the value by 4 to get a resolution of .25). The
advance is in degrees BTDC.
32
Eectch98-Part2.fm
ECT
Advance
-256
86
120
200
236
-2
246
-4
254
-4
Advance
-256
-256
-256
150
240
-6
254
-6
200
0.953125
452
0.296875
852
1020
Multiplier
1600
0.90625
2400
0.96875
3200
0.9453125
3800
0.9765625
4400
0.953125
6000
0.9453125
33
Eectch98-Part2.fm
RPM
Multiplier
16383.75
0.9453125
Fuel
Multiplier
-256
0.640625
-256
0.640625
-40
0.640625
0.812500
76
1.000000
254
1.000000
Spark
Advance
-256
-256
160
190
-2
254
-2
Spark
Adder Deg
12
23.500
26.500
27.750
31.875
34
Eectch98-Part2.fm
Seconds/
Degree
RPM
0
2.0000
2.0000
992
2.0000
3008
1.5000
4000
1.0000
8160
1.0000
Dwell
0.0000
589.75
10.0000
589.75
12.0000
524.25
14.0000
393.25
15.0000
367.00
4095.9375
367.00
Dwell
0.0000
655.25
10.0000
655.25
12.0000
485.00
14.0000
439.00
15.0000
393.25
4095.9375
393.25
RPM
Dashpot Clip
(lb/min)
0.00 0.12011718750
500.00 0.12011718750
1500.00 1.00000000000
2000.00 1.60009765625
16383.75 1.60009765625
35
Eectch98-Part2.fm
The Maximum Dashpot Clip Function parameters are stored at 7346 as unsigned, 16-bit,
intertwined X and Y values. To convert them to decimal, divide the the RPM values by
4 and the dashpot clip values by 4096.
RPM
Fuel Multiplier
0.00
1.000000
0.00
1.000000
650.00
1.000000
750.00
1.203125
1200.00
1.203125
1500.00
1.000000
16383.75
1.000000
Fuel Multiplier
0.00
0.00
0.00
0.00
0.00
0.00
16383.75
0.000
0.000
0.000
0.000
8191.875
ECT
Pulse Width
(mS)
-65536
39.69140625
-20
39.69140625
22.41406250
20
14.48828125
40
10.75390625
70
5.83593750
36
Eectch98-Part2.fm
Pulse Width
(mS)
ECT
150
2.35546875
180
2.04687500
65534
2.04687500
RPM
0
1075.00
1100.00
16383.75
0.003417968750
0.0620117187500
0.002929687500
0.3500976562500
0.001953125000
0.4499511718750
0.007080078125
0.6499023437500
0.044921875000
0.7500000000000
0.062500000000
37
Eectch98-Part2.fm
Dashpot[lb/min]
15.999755859375
Data Pointers
There are 8 pointers at 2022h:
V2020: DW
DW
DW
DW
DW
DW
DW
DW
DW
L0108
L8C00
L8E5A
L8FD6
L93A8
L9430
L97A8
L9A7E
L9E5A
;2022
;2024
;2026....
08E5AH
functions/maps/scalars
L8E5A: DW 08FD6H
functions/maps/scalars
L8FD6: DW 093A8H
functions/maps/scalars
L93A8: DW 09430H
functions/maps/scalars
L9430: DW 097A8H
functions/maps/scalars
L97A8: DW 09A7EH
functions/maps/scalars
L9A7E: DW 09E5AH
functions/maps/scalars
L9E5A: DW 09EA2H
;ORG09EA2H
FILL0FFH,0015EH
;end
Value
Address
672 RPM
704A
672
704C
Notes
0054H = 84 and 84 * 8 = 672
38
Eectch98-Part2.fm
(Note that, in Intel format, the LSB is first, so its actually as "0054", and
5416 = 8410. Multiply by 8 to get 67210.
Speed Limiters
ROM addr
0x7A86
0x7A87
0x7A88
0x7A89
:
:
:
:
:
Data
FF
FF
FF
FF
There are two speed limiters here, and an ON and OFF value (With hysteresis, I
think. Which means once you hit the speed limiter you need to slow down to the off
value before you can accelerate again)
When data = FF the speed limiter is off, otherwise the conversion is as follows:
0FFH --> 255, then divide by 2 and you get 127.5
Not sure which is on and which is off.
I think its
Speed Limiter A: 0x7A86 ON; 0x7A87 OFF
Speed Limiter B: 0x7A88 ON; 0x7A89 OFF
The ONs and OFFs may be swapped!
Rev Limiter
Max RPMs seems to be PIP filter related!
to the EEC group.
At address 0x7C16 I have for data C103 (reverse bytes to get hi-byte first, 03C1).
H03C1 --> D961 which I think is the PIP filter. When I cut that number in half, my
rev limit is half, so it definitely affects the rev limit.
: 007D
: 307F
half fuel ON
half fuel OFF
A9L Tables
(Gary Anderson wrote) "Just so you guys remember where Tom got the data:"
a9l.v5.out
"Accel Enrichment Fuel [lb/min]
39
Eectch98-Part2.fm
40
Eectch98-Part2.fm
:17.25,18.5,18.5,18.5,20.75,23,30,31.25,31.25,31.25
:23,24.25,28.75,37,39,39,38,37,32.25,32.25
:28.75,30,34.5,42.75,43.75,41.5,41.5,43.75,32.25,32.25
:28,28,33,42.75,42.75,43.75,43.75,43.75,32.25,32.25
:28,28,28,32.25,34.25,35.25,35.25,34.25,28.25,28.25
:28,28,28,27.25,29,30,30,30,30,30
"end
"Limp Mode Spark Table [Deg BTDC]
"RPM vs. Load
"table:30228,10,8,1,d4,0
:9.25,9.25,13,13,15.5,18.25,23.5,23.5,23.5,23.5
:9.25,11.5,13,13,15.5,18.25,23.5,23.5,23.5,23.5
:9,10.25,11.5,12.75,15,19.75,25.5,25.5,25.5,25.5
:16,16,16,16,18.5,24.25,31.25,31.25,31.25,31.25
:23,24.25,23,27.5,35.75,37,38,38,38,38
:25,26,30.5,38.75,40.25,42,43.75,43.75,43.75,43.75
:28,28,28,31.25,33.25,34.25,34.25,34.25,34.25,34.25
:28,28,28,27.25,29,30,30,30,30,30
"end
"Injector Output Port
"Injector Port vs.
"table:29105,8,1,1,1,0
:0,0,0,0,2,2,2,2
"end
"EEC Load Scaling
"func:27826,24,2,d32768,0,2,d256,0
Raw Load:0,0.04998779296875,0.100006103515625,0.600006103515625,0.75,1.99996948242188
Table Row Pointer:0,0,1,6,7,7
"end
"MAF Transfer
"func:28130,120,2,d4096,0,2,d4,0
MAF
Voltage:0,0,0,0,0.571044921875,0.75,0.884033203125,1.091064453125,1.181884765625,1.321044921875,1.468
017578125,1.573974609375,1.69091796875,1.802978515625,1.889892578125,1.989013671875,2.154052734375,2.
31591796875,2.449951171875,2.58203125,2.694091796875,2.909912109375,3.14892578125,3.35498046875,3.543
9453125,3.885986328125,4.177001953125,4.443115234375,4.76806640625,15.999755859375
Mass Flow Kg/
hr:10.75,10.75,10.75,10.75,10.75,14.75,18.75,25.75,29,35.25,42.75,49.25,57.5,65,71.25,79,94.75,112.25
,127.25,144,159.25,192,233.25,274.25,315,394.25,470.25,548.75,659.25,659.25
"end
"WOT Spark Advance vs. RPM
"func:29956,32,2,d4,0,2,d4,1
RPM:0,1000,1800,2150,2600,3500,5000,16383.75
WOT Spark Advance Deg BTDC:10.25,10.25,22.25,25.75,26.75,26.75,30.25,30.25
"end
"WOT Spark Advance vs. ECT
"func:30002,14,1,m2,1,1,d4,1
Engine Coolant Temp:-256,86,120,200,236,246,254
WOT Spark Advance Deg BTDC:3,3,0,0,-2,-4,-4
"end
"WOT Spark Advance vs. ACT
"func:30016,12,1,m2,1,1,d4,1
Intake Air Charge Temp:-256,-256,-256,150,240,254
WOT Spark Advance Deg BTDC:0,0,0,0,-6,-6
"end
"Accelerator Enrichment Multiplier vs. TP
"func:29121,10,1,m4,0,1,d128,0
Throttle Position-A/D Counts:0,200,452,852,1020
Accelerator Enrichment Multiplier:1,0.953125,0.296875,0,0
"end
"WOT Fuel Multiplier vs. RPM
"func:31616,32,2,d4,0,2,d128,0
RPM:0,1600,2400,3200,3800,4400,6000,16383.75
WOT Fuel Multiplier:1,0.90625,0.96875,0.9453125,0.9765625,0.953125,0.9453125,0.9453125
"end
"Open Loop Fuel Multiplier vs. ACT
"func:31560,12,1,m2,1,1,d64,0
Intake Air ChargeTemp:-256,-256,-40,0,76,254
41
Eectch98-Part2.fm
42
Eectch98-Part2.fm
min]:0.00341796875,0.0029296875,0.001953125,0.007080078125,0.044921875,0.0625,0.0625
"end
------
d4
-- the scale of the value, in this case divide by 4 to get lb/min of fuel that each entry represents. m is used in other tables to specify multiply each entry.
0
88
54
32
20
9C
6C
48
30
54 5C
E0 30 38 40 48 68-78 98 DC 14 20
B4 10 14 18 20 32-44 66 88 08 08
74 06 06 08 0C 12-20 30 50 06 06
48
68
28
0C
08
70
30
12
0C
7C
42
20
12
5C
38
20
14
08
06
06
68
40
28
18
0C
08
08
70
48
30
20
12
0C
0C
7C
68
42
32
20
12
12
88
78
54
44
32
20
20
9C
98
6C
66
48
30
30
E0
DC
B4
88
74
50
48
43
Eectch98-Part2.fm
28
31
34
39
56
3 4.5
3 4.5
8
8
12
12
20
18
The rows are stored last first, so reversing rows gives the table as displayed:
1.5 1.5
2
1.5 1.5
2
2
...
4
...
5
...
12
...
21 23 26
3 4.5
3 4.5
28
31
8
8
12
12
18
20
34
39
56
0
2
d4
FF FF 79 00-20 4E 79 00 B0 36 6B 00
A0 28 6B 00 98 21 67 00-20 1C 59 00 A0 0F 29 00
00 00 29 00
FF
00
4E
00
36
00
28
00
21
00
1C
00
44
FF
00
4E
00
36
00
28
00
21
00
1C
00
FF
79
20
79
B0
6B
A0
6B
98
67
20
59
Eectch98-Part2.fm
A0
29
00
29
0F
00
00
00
0F
00
00
00
A0
29
00
29
0
10.25
1000
10.25
1800
22.25
2150
25.75
2600
26.75
3500
26.75
5000 16383.75
30.25 30.25
45
Eectch98-Part3.fm
SENSORS
Compiled by Tom Cloud <[email protected]>
(font is Courier New)
EGO
Can the HEGO respond quickly enough to monitor each cylinder during engine operation? Cylinder-by-cylinder HEGO function can sometimes be seen during testing on
engine dynamometers, but only at certain points. HEGO response time is 300 to 1500
milliseconds for a delta Lambda step of 0.1, either rich-to-lean, or lean-to-rich.
Driven into rich or lean saturation, the sensor can require several seconds to
recover. Assuming best case 300 milliseconds response time, in a V8 firing 2 cylinders per crankshaft revolution with stereo EGOs, the highest RPM one could hope to
discern individual exhaust pulses would be about 300. Getting this information from
the HEGO into EEC is also made difficult by the low pass filtering on the HEGO
inputs, which are typically -3dB at 1 to 20 Hz, application dependent. This is to
filter out HEGO buzz, which is the rapid output oscillation that HEGOs produce when
at stoichiometry.
Another problem that cylinder-by-cylinder mixture correction would create is with
closed loop control bandwidth: An engine is basically an air pump with a finite
response time to external stimulus, such as moving the throttle plate. Lets say
its about 1 second. Basic control systems theory says that if you put said air pump
into a closed loop control system, the control system bandwidth must be slower than
the air pump response time, else the system will hunt, or be unstable.
With regards to lean operation with an O2 sensor, the O2 sensors output is not particularly useful far from stoich. The time-honored way of biasing the mixture is to
vary the switch voltage threshold (in software), and to low-pass filter the O2 sensor signal (again in software) and try to keep its average to a calculated value.
This can vary the mixture sufficiently to optimize the operation of a catalyst. A
normal (heated or unheated) O2 sensor cannot tell you if the mixture is rich enough
for best power or not. The O2 sensor just goes to RICH, and you cant tell whether
you are at 9:1 or 14:1 from the sensor though in the 14 to 15:1 region you may get
some indication. Typically, the system extrapolates from the highest load at closed
loop fuel trim value and applies this same trim value when power enrichment is on.
This simple method works because injectors tend to be linear. If, at some operating point, it takes an 8 ms valid injection time (take the offset of the injector
away) for a 16:1 mixture, then a 16 ms injection time would, ideally, give you an
8:1 mixture.
The L03 1989 Caprice (GM) uses a strategy called lean on cruise. This alternates
five minute periods of operation at about 16.5:1 with one minute intervals of stoich operation. This allows the ECM to run lean most of the time, but correct for
changes in conditions. Interestingly enough, the O2 voltage does not spike much
when going from open to closed loop: the engines operating conditions dont change
that much.
EGR
The EGR reduces pumping loss by reducing manifold vacuum. It does, however, lower
NOx by reducing the concentration of O2 in the cylinder. In essence, it lowers the
oxygen content of the air by some 10 to 15%. This added inert gas absorbs the
energy from burning the fuel and oxygen, releasing it on the expansion stroke. It
EEC-IV Technical Notes: Sensors
46
Eectch98-Part3.fm
ACT
This is snagged from the graph in the Calibrator demo program. To determine air
temp you can measure voltage at the ACT (air charge temp sensor). Reference is 5.0
volts.
68
86
104 122 140 158 176 194 212 230 248
Air TempoF 50
Voltage
3.52 3.06 2.62 2.16 1.72 1.35 1.04 .80 .61 .47 .36 .28
Table 52: ACT Transfer Function
TFI / PIP
Normally, the distributor
contains the TFI (Thick
Film Ignition) module and a
hall effect pickup with a
vane stator. The PIP (Profile Ignition Pickup)
Signal begins when the
hall-effect timing pickup
switch sends a signal to
the TFI module. Modification by a schmitt trigger
converts this signal to a
logic compatible output
that is then sent to the
EEC, which is responsible
for
Early EECs used a sectored wheel (vanes) in the
distributor with the number of vanes being equal to
half the number of cylinders. Later EECs utilize a
36 tooth wheel, with a
missing tooth for synchronization, whose output is pre-processed by a unit known as
the EDIS (Electronic DIStributor). The EEC processes the PIP signal and subsequently feeds a properly advanced or retarded signal back to the TFI ignition module
to fire the plug.
47
Eectch98-Part3.fm
KNOCK SENSOR
(basic part number: 12A699)
5.4K
5.7K
6.45K
6.0K
9.5K
BLK
GRY
BLK
BLK
WHT
usage
5.8L
2.3L
2.9L
3.0L
4.9L
thread
Ford/Mercury
(Turbo) Tbird
Ranger/Bronco II
Taurus/Sable, Aerostar
Econoline/Bronco
1/2-13 UNC
M12 x 1.5mm-6g
M10 x 1.5mm-6g
M10 x 1.5mm-6g
M10 x 1.5mm-6g
Knock Sensor
VSS
VSS gets used for many things, even in the manual gearbag calibrations.
1. Used to drive coast-down strategies. EEC will use longer throttle dashpots if it
sees a non-zero signal from the VSS at closing throttle. This prevents lift-throttle snatch, especially in lower gears and at lower road speeds.
2. Drives radiator fan strategies. Fan is usually turned off above 45 MPH unless
coolant temp is above fan-on setpoint.
3. Cruise control on vehicles with the cruise control integrated into the EEC,
instead of a separate electronic module..
The engine should run fine without the VSS. I have disconnected the VSS in my 89
SHO and 98 Contour V6 to get rid of the long dashpot. If the strategy doesnt see a
VSS signal, it drops the throttle immediately, which puts ME in control of the shift
rev-matching, not the bloody computer.
The cruise control is separate from the EEC, but they share the same sensor. For a
manual transmission MAF Mustang, the VSS is used to maintain an 1100 idle when
coasting to a stop until you drop below ~8 mph. Ive known a few people who converted their speed density cars to MAF that had stalling problems when pushing in
and holding the clutch at speed until the VSS sensor was hooked up. The speed density cars did not use the sensor. Im not aware of the sensor being used for
anything else except on the 93 Cobra, where it was used to change the timing curve
when above 100 something miles per hour.
AFM
Modern bypass MAFS have the best resolution in the first 40% of their total flow,
with some resolution losses of very low flows at idle and just off-idle.
Raymond Brantley wrote:
1 kg/hr is about .0081 CFM. And this is at 20oC (68oF) at 1 atm. (sea level). A
mass air meter is that; a MASS air flow meter, not a volume meter. The units make
sense [Kg/hr], if youre an old time, red-blooded American engineer or scientist
that would be [slug/hr] where 1 slug = 14.59 Kg.
Here are the conversion factors for CFM to/from KG/HR. They are based on the Ideal
Gas Law:
KgHr = InHg * CFM * 36.2 / (TempF + 460)
CFM = KgHr * (TempF + 460) / (InHg * 36.2)
48
Eectch98-Part3.fm
Airflow in Meter
Kg/Hr
Voltage
13.307
18.377
23.446
32.318
36.437
44.358
53.863
62.101
72.557
82.062
89.983
99.805
119.766
141.945
160.955
182.184
201.511
243.017
295.296
347.258
399.220
499.341
595.661
595.661
695.149
835.193
.57
.75
.88
1.09
1.18
1.32
1.47
1.57
1.69
1.80
1.89
1.99
2.15
2.32
2.45
2.58
2.69
2.91
3.15
3.35
3.54
3.89
4.18
4.18
4.44
4.77
Testing AFMs
To test a MAF, supply it with +12V and ground. The output will vary from roughly
0.25V to 0.5V at no flow, up to 4.75 to 5.00V at full flow.
John Lloyd <[email protected]> sent the following MAF calibration tables
"I calibrated an air meter the other day in the lab...
between the hi and lo flow masters but it may be of use?
A slight discontinuity
49
Eectch98-Part3.fm
Vs=5.0
Tamb=19C
19-Mar-97
L/min
Lo meter
0
25
30
40
50
60
70
80
90
100
120
140
160
180
200
110
160
0
volts
1.113
1.113
1.113
1.113
1.113
1.113
1.262
1.463
1.824
1.882
2.262
2.515
2.63
2.83
3.014
2.106
2.629
1.113
Hi meter
200
250
300
350
400
450
500
550
600
650
200
400
200
volts
3.045
3.339
3.564
3.766
3.854
3.971
4.076
4.158
4.201
4.245
3.097
3.868
3.087
L/min Lo
meter
0
25
30
40
50
60
70
80
90
100
120
AFM1
1.113
1.113
1.113
1.113
1.113
1.113
1.262
1.463
1.824
1.882
2.262
AFM2
0.2
0.25
0.25
0.25
0.25
0.25
0.45
19-Mar-97
29-Apr-97
Hi meter
200
250
300
350
400
450
500
550
600
650
680
AFM1
3.045
3.339
3.564
3.766
3.854
3.971
4.076
4.158
4.201
4.245
2.75
AFM2
1.16
1.73
2.09
2.35
2.58
50
Eectch98-Part3.fm
L/min Lo
meter
140
160
180
200
110
160
0
AFM1
2.515
2.63
2.83
3.014
2.106
2.629
1.113
AFM2
0.68
0.83
0.98
1.15
Hi meter
400
200
AFM1
AFM2
3.868
3.087
51
Eectch98-Part4.fm
/STB is used to tell the memory that it is time to "LATCH" the 8 bits of
information on the MB bus (If the 8061 is driving the bus), or that it is time to
52
Eectch98-Part4.fm
put the next byte of data on the MB bus (if the MEMORY is driving the MB Bus).
IT can be thought of as the "Instruction Transfer" line. What it really does is
choose whether the 8061 is accessing the SPC (if IT is high) or the DAR (if IT is
low).
DI can be thought of as the "Direction Indicator" for the MB bus. If DI is high,
then memory has the rights to the MB bus. If DI is low then the processor has
the rights to the MB Bus.
- This tells the memory system that it has rights to the MB bus.
IT
0
1
0
1
0
1
0
1
/STB
1
1
1
1
S
S
S
S
53
Eectch98-Part4.fm
NOTE:
"S" indicates a "STROBE" of the /STB line. /STB is active low, and is
never low more than a single machine state. There are three machine states per processor "clock" cycle.
PLDs
The "simple" PLD devices today usually have what is called a macrocell associated
with each output. The macrocell has an AND/OR array that is fed into a flip-flop.
The output associated with the macrocell can be programmed to take either the output of the flip-flop or directly from the AND/OR array, so they can be either
REGISTERED or COMBINATORIAL. The flip-flops can usually be configured as RS, Ttype, D-type, and on some, JK-type flip flops. As the devices get more complex, you
can have buried macrocells that have no external outputs, but can be used to build
state machines inside the part.
Since the 8061 is using an extreme example of a multiplexed bus, the PLD has to use
registered outputs. Actually, thats not entirely true. You can build transparent
flip-flops from the combinatorial logic because the output of each of the macrocells is fed back into the device and can be used as an input as well. So you could
do simple latching without registered outputs, but you also have to implement a
counter for the 8061, so registered outputs are necessary. In the case of Wesleys
cal-pak things, it gets a little more complex. He routed the output of the EPROM
into the EPLD (or at least he used to), so the pins that are connected to the 8061
address/data bus have to alternate between inputs to the address latches and an output buffer from the EPROM.
54
Eectch98-Part4.fm
goes to an HSO port. Currently, there is a piece of code that is added to the
interrupt routine that allows sending an address to the EECIV via the STI line and
then echoes out the result from the STO line. It needs two hooks into the EEC -- one
for a periodic interrupt (for the STO data) and the other for the HSI interrupt.
WARNING! The sensor +5 volts is the SAME as the CPU +5 volts. Any accidental connection of the +5 ref of the TPS sensor to the battery via a test light, and
spitzensparken and poppencorken.
The biggest problem I can see when re-calibrating an EECIV is that there is virtually no way of figuring out what it is up to. Perhaps a scan port patch would be
useful? How I think you would need to do that is enable the EER, and modify a few
bytes of Ford code to get a hook for ours. Then out of the STO you can get scan tool
data like you see on a GM. The limitation here is someone needs to figure out the
use of any interesting memory locations and the scaling factors.
This means when you get data, the SES lamp flickers.
I think J3 pin 12 MRESET and 22 TSTSTB are the ones to use with the pause pin to
read the ROM from J3. You have the unit full on and in pause mode by putting a low
on J3 pin 8 and then putting a low on pin 12 and releasing (to reset memory program
counter I guess) and then keep strobing pin 22 TSTSTB low and reading MB after each
strobe and it seems to be reading the ROM contents. It appears STROBE pin 21 is for
reading and control from CPU but MSTROBE is for memory dump.
Another contributor wrote:
In my opinion, the whole memory was set up to be high speed, yet only 8 bits wide.
A conventional computer has to use the bus to apply an address, and then another bus
to read the data at that address. It appears that, in an EEC, the CPU can just
request "the next program byte" -- as pointed to by the "Slave Program Counter" so
there is no need to send an address. There is a second register, the "Data Address
Register", which is in charge of the data. It, however, doesnt increment by
itself. The advantage of having both of these registers is that one can read an
instruction, download the address of some data thats wanted, read the data, and
then read the next instruction WITHOUT SENDING AN ADDRESS FOR THAT NEXT INSTRUCTION. I still have to be able to load that Slave PC with another address though, in
the case of jumps and interrupts and stuff like that.
Im guessing that getting the high and low bytes of data is even easier than Im
showing. Why else would they call it a "16K X 16bit ROM"? If you have to ask for
the high and low bytes separately it would be more accurate to call it a "32K X 8bit
ROM"
55
Eectch98-Part5.fm
SD TO MAF CONVERSION
Information on MAF conversion sent to me by Bob Nell [email protected]
Mass Air Flow meter calibrated for the injector size (using mismatched parts
can cause part throttle detonation and drivability problems).
MAF bracket and mounting screws (3).
MAF 4-wire connector, wiring to go to the EEC connector and EEC connector pins
for two of the wires.
MAF ductwork -- the tubing that goes from the engine to the MAF, from the MAF
to the air cleaner and then to the intake scoop. Some clamps will also be
needed to hold it in place.
Extra EEC connector pins for hooking up the VSS and FPM2 signals.
The first step will be to remove the old speed density computer from behind the kick
panel on the passenger side. Remove the kick panel, the retaining screw on the lower
right of the ECM, push the wires out of the way and then, using a 10 mm wrench,
remove the ECM.
There are unused female pins (sockets) in the harness end of the EEC connector.
Seven of these will be needed to add the necessary inputs (it can be done with four,
but its not recommended). Looking at the connector, there is a red "H" piece of
plastic that needs to be popped out of the connector to allow the pins to be
inserted/removed. It can be pushed out from behind (the wire side) then a small
pick will be needed to allow the pins to be removed.
To be added:
Eectch98-Part5.fm
The VSS signal can be taken from the VSS or it can be tapped off the speed control
amplifier, which is located near the dead pedal, and is the yellowish box in the
corner by the drivers left foot. The DG/W wire is VSS+ and the black wire is VSS To hook up the Fuel Pump Signal:
Splice into the PK/BL wire that goes into the Fuel Pump Relay (located under the
drivers seat on pre-93 Mustangs) and run it to pin #19 on the EEC.
I don't know if anybody will use these, but it's nice to have the pt#'s
Engine Harness & Controls Package Includes: Injector Harness & Intake
Mounted Sensor Package( ACT,ECT,EGR Pos. Sens., EGR), along with O2 sens.
harness
Includes (2) O2 sensors, BAP sensor, EGR, TIB, and TAB solenoids. Fuel, air
Eectch98-Part5.fm
Includes MAF Meter, EEC-IV computer, MAF inlet and outlet hoses, and MAF
meter mounting bracket
Eectch98-Part5.fm
be better off with 100 F capacitor with a .1 F disc ceramic in parallel with it.
The larger capacitor is adequate to provide the long drinks the CDI pulls from the
battery voltage, while the smaller disc ceramic works up to hundreds of MHz and will
help suppress the very fast rise time voltage spikes that are the true source of the
radiated noise.
Also, keep in mind that the EEC stops working when the input voltage drops below
about 8 volts -- another reason to keep a good battery and to not share power distribution paths with the starter.
The starter and charging circuit current loop should not include the engine management ground current loop, and vice-versa. As much as possible, the ground current
path for the alternator and the starter should be kept entirely separate from the
ground current paths for everything else. The best arrangement would be a heavy
(e.g. 2 AWG) ground wire from the battery negative to the engine block at or near
the starter and a similarly large wire from the battery positive to the starter
relay. The +12 volt power for the ECM and the accessories can be picked off at
either the starter relay or directly from the battery terminal. The ECM/accessory
ground should be taken directly from the battery negative.
Note that steel and iron are poor conductors and that much of the ECM sensing circuitry uses the engine or chassis for grounds. To head off problems before they
start, heavy, stranded copper wire ground straps are recommended between any component that has a sensor bolted to it (e.g. the intake or the block) and to the ground
at the battery. Solid copper tubing can be run along the chassis and/or frame and
bolted to it at several points to assure a good ground to even the remote fuel pump
and sensor -- just remember that stranded welding cable should be used anywhere the
conductor can vibrate, move or flex so it wont break over time. (If youre not sure
about why this is necessary, measure the resistance from some sensors grounded case
back to the battery ground and keep in mind that the voltage dropped across that
same path is E = I * R. So, a resistance of only .1 ohm will have one volt induced
across it if 10 amps were to travel through that path, and the resistances are often
much higher than that.)
TUNING
(by Bruce Plecan with editing by Joe Boucher and then by me)
Introduction
This purpose of this document is to assist someone in the tuning stage of an Electronic Fuel Injection (EFI) project. It contains discussions about the monitoring
equipment required and the methods and strategies for the actual tuning. The information is based on the experiences of tuning a GM EFI setup on a small block.
However, the methods should be applicable to most any engine.
This paper doesnt reveal the location of the maps and tables in the ecm software
but it does discuss their functions. The maps and tables for some ecms can be
found on the internet. For example, the Syclone/Typhoon and the Buick T-Type fanatics have found most, if not all, the needed information to alter the EFI systems for
the extreme modifications on their cars.
Look out, here comes a warning. You can really mess up an engine if you dont
understand what is going on and are not careful and methodical about tuning your EFI
setup. This is not lawyer gibberish, this is for real. You can turn that expensive, close tolerance machine into a pool of molten crap real quick. I personally
know of a kid who had too much money and not enough smarts. In the early days of
EFI, he bought an O2 sensor monitor and a device to alter the O2 feed back signal to
the ECM. He didnt hook up the O2 monitor properly, started twisting the knob on
EEC-IV Technical Notes: Modifications/Upgrades59
Eectch98-Part5.fm
the signal modifier, leaned the fuel mixture too much, and melted the pistons. It
can be done! After all the time and effort you have put into achieving this stage,
it would be a shame to ruin something because your enthusiasm carried you away and
you tried to tune too fast.
List Of Tables
Tables, Maps, Switches seen or heard of: Main Fuel (VE or LV8); Fuel Enrichment
WOT; Main Spark (rpm vs. kPa or gms/sec); Spark added WOT Idle Speed; IAC steps (by
cool temp); WOT enable TPS %; TCC lock/unlock by road speed; TCC disable by TPS %;
TPS Enrichment (sensitivity, quantity, duration); Injector constant; AFR % enrichment vs. Coolant temp; EGR temp enable; EGR enable % TPS; EGR timing correction
table; EGR fuel correction table; Speed limited MPH; RPM Limiter; Degrees retard by
knock sensor by MAP; Degrees retard by knock by rpm (WOT); Turbo Boost Control; All
diagnostic malfunction disables. Not all ECMs use all these tables!!
DISCUSSION OF TABLES
The following tables are for a 3020 lb. car:
Engine; AL headed (vette 58cc chamber), 355 CID SBC, 9.5:1 CR
Cross fire intake; 2" butterflies, .25" lid spacer 90lb/hr injectors
Cam specs; 270 Comp Cam, .470 lift 270 adv dur, 224 @.050 110 3.42 gears
Tranny; 700R4, 2800 rpm non-lock-up stall
Exhaust; Edelbrock TES manifolds, very low restriction cat, 3"single ex (Walker).
ECM ; GM 1227747 (no internal mods, OEM v-8 netres [a resistor pack])
Some details are not mentioned (gotta keep an edge).
30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
400
600
800
1000
1200
1400
1600
1800
2000
2200
2400
2800
3200
3600
0
0
-4
-6
-6
-6
-6
-6
-6
-6
-6
0
0
0
0
0
-4
-6
-6
-6
-6
-1
-1
-1
-1
0
0
0
0
0
-4
-6
-6
18
24
27
30
30
30
26
24
22
0
0
-4
-4
8
20
24
28
30
30
30
26
24
22
0
0
-2
0
10
20
20
24
26
26
26
26
24
22
12
12
12
12
14
18
18
22
22
22
22
22
22
22
16
16
16
12
14
14
14
17
16
18
18
22
22
20
16
16
16
12
12
12
12
12
12
16
16
18
20
20
16
16
16
11
11
11
10
10
12
14
14
18
18
20
12
12
12
8
8
8
8
8
10
12
12
17
18
18
8
8
8
6
6
6
8
8
8
10
12
16
18
18
8
8
6
4
4
4
8
8
8
11
12
14
18
18
8
8
4
4
4
4
6
8
8
8
10
14
16
16
8
8
4
4
4
4
6
6
8
8
10
14
17
16
8
8
4
4
4
4
6
6
6
6
10
14
17
16
Eectch98-Part5.fm
RPM
800 1200 1600 2000 2400 2800 3200 3600
Advance 0
0
0
1
6
6
6
6
Table 59: Power Enrich Spark (RPM vs. Added Spark Advance)
20 30 40 50 60 70 80 90 100
400
800
1200
1600
2000
2400
2800
3200
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
0
0
0
25
51
49
50
50
16
16
29
46
49
49
52
53
16
18
45
50
51
51
54
55
36
39
50
51
53
54
55
57
41
47
52
54
57
56
57
59
50
52
57
58
59
59
60
61
54
54
60
60
62
62
64
64
(MAP
vs.
RPM)
RPM
0 400 800 1200 1600 2000 2400 2800 3200 3600 4000 4400 4800 5200 5600 6000
Add Fuel 10 10 41 40
41
41
39
37
35
35
37
39
41
41
31
16
Table 61: Volumetric Efficiency WOT Enable (RPM vs. Additional fuel factor)
RPM
0 400 800 1200 1600 2000 2400 2800 3200
% TPS 35 27 26 25
24
23
22
21
20
Table 62: %Throttle Position Sensor for Wide Open Throttle (RPM vs. % factor)
These tables are very different from the OEM setup. But, for this engine combination, it works. The items to note are the lean/retard overrun (high vacuum values
when you lift your foot off the accelerator pedals at speed) areas. Glance at the
spark table to see when the engine wakes up. Note that the VE table values can add
up to over 100%. Also, because the values in the %TPS for full throttle table are
low, and with the existing VE in the first table, the system will change the air
fuel ratio to rich instantly. Might also note the funny timing under 2800 rpm.
Remember the 2800 rpm stall converter. With this combo the engine can light em at
will in 1st, and 2nd. The car runs in the 13s but you can see how mild the cam and
engine combination is.
Tuning Tools
In order to know if your wonder toy is about to melt down on one end of the air fuel
ratio spectrum or put a smile on an Arab Sheiks face on the other end of the spectrum, you need to monitor the fuel injection system and some of its sensors.
Heres a list of tools:
* Digital Volt Meter (DVM) - (10 meg ohm impedance) for monitoring the Throttle
Position Sensor
* Vacuum Gage - For idle and part throttle analysis;
* Tachometer - If you dont know, youve got a lot of learning to do;
* Performance analyzer - To give you an unbiased reference of the cars performance
changes other than the uncalibrated seat of your pants;
* Scan Tool - To know what values the ecm is using internally;
Eectch98-Part5.fm
From some personal notes from the early-mid 80s there were many 2 gas analyzers
that went to market for the then pending inspections for CA. Here are some conclusions drawn from some GM training center notes and a Radio Shack engine book. First
from a slip of paper, circa 83, that lists O2 sensor volts relative to AFR Air Fuel
Ratio, and one from 2-3 years ago from Cyberdyne, who manufacturers a 10 led AFR
Monitor. The voltages match i.e.: 1v=17:1; .3v=16; .5v=14.9 ; .7v=13.8:1;
.9v=12.7:1. Also, going by the RS book are some differences in response time vs.
temp, and differences in sensor voltage depending on load. So yes there are variables, and yes the results will vary with mounting locations, and loading. But for
high performance tuning as an INDICATOR, there are no reservations on using one as a
guide. The double check would be doing plug cuts. If you are working on a 20:1 AFR
engine, then you would have to use a wide ratio O2 sensor, or if it was exposed to a
limited amount of exhaust gas and needed heating and thermal compensation then you
need the double wammy wide ratio O2 stuff. For what the average DIY will be
attempting, a good ole GM single wire mounted in iron manifold, and a 3 wire used in
tubular headers will work just fine. So while the MEs, and EEs discuss the merits of both for a lot of us just building the 10 LED O2 monitor like is shown in the
GN T-type tech area will work fine (http://ni.umd.edu/gnttype/www/buick.html). Also,
the GNs have a bunch of cars running 10s,11s, that regularly use unleaded with a
heated O2 and have "fair results" (10s with A/C actually is better than fair in my
book).
Where To Start
Hopefully, when starting with any custom ecm or drive train combination, youll have
something to start with, and better yet at least an EPROM from the same engine
series. If not, then well cover both anyway, again with the GM OEM, because thats
what was experimented with.
Regardless of what youre working on, you have to pick a spot to start with. This
involves pulling numbers out of the hat to begin with. The more you do, the smaller
the hat gets, because you can rule out some things.
Idle
A suggestion is start at idle. For a SBC the initial timing for the distributor is
6 degrees before BTDC. How do you setup 6d without a timing light? On GM style
distributor there is a set of little arrows inside the distributor. On a V-8, 8 on
the reluctor, and 8 on the sensor ring. Just line the marks up and tighten the distributor clamp.
The engine fires when the arrows are ever so slightly past each other in the direction of rotation. The second you get to about 400rpm is when the engine starts
running off your ecm control. Less than that and on a cold day the engine will
windmill when its cranking. Fill in the 400-800 RPM areas of the timing map with
EEC-IV Technical Notes: Modifications/Upgrades62
Eectch98-Part5.fm
16d (Table 1). Also, fill in the lower rpm VE tables (Table 3) with 30, and try to
start the engine without grinding the starter too much. The engine will warm up
enough to wake up the O2 sensor, look at the scanner, and see where the BL is, and
IAC Counts. The IAC Counts are a vacuum leak. So they are critical to a decent
idle.
Now you have some idea of where the mixture is, and what the kPa is from reading the
scan tool. From experience you cant run the same numbers everywhere at idle. On the
high side of idle kPa go richer, i.e.; with an engine that idles at 60 kPa if it is
30 there, at 65-70 it would be 32, and at 50-55 28. Yes, the 30 is a lot but its
easy to go lean, and clean up the idle, then having stall all the time, and having
to wait for the prime shot to burn out.
Next, lean the VE values (Table 3) down till the O2 is swinging (value moving back
and forth through .45 volts), the IAC is less than 10, and you have a min idle
speed. For the initial butterfly opening I cut a strip of paper 1/4" wide and set
the throttle idle setting so the paper is pulls through the butterfly opening with a
minimum of effort and without tearing. Now the engine starts and will idle. This
is a good start.
Light Cruise
This section is on how to do light throttle cruising set ups, using GM ECMs. This
is for an engine using a slightly hotter than stock cam, healthy ignition and assuming that some roughing out of the fuel timing tables have already been done.
The objectives are: Advance timing as much as possible consistent with minimum
throttle opening; and use just enough fuel to run 128 or slightly lower BL numbers.
For monitoring the engine, a digital volt meter (DVM) is attached to the Throttle
Position Sensor (TPS), a vacuum gauge is hooked up to the manifold (but this is
almost redundant of the TPS), a scan tool is hooked up for looking at the Block
Learn (BL) numbers, and a 10 element LED display is attached to the oxygen sensor.
With this wired up it is easy to now start changing the timing of the 40 kPa areas
of the fuel map by rpm for cruise. On a flat road with the car in top gear, find
the cruise speed at 40 kPa and note the DVM signal from the TPS. Add timing and
repeat the road test at the same TPS value. Observe whether the vacuum value is
above or below the original signal. Repeating this procedure will reach a limit
where the knock sensor will start retarding timing. Next, drop off as much timing
going to the 20 side (overrun), which richens the O2 readings and helps to cut the
fuel on overrun, so the car slows when you take your foot off the gas. On some of
the OEMs you almost have to hit the brakes to slow the car.
From the 40-50 kPa vacuum value, again depending on your car, drop off as little
timing going toward 100 kPa (full throttle), as possible. Run enough fuel in the VE
table so that when pulling slight grades the motor doesnt chug (love that technical language). Also use a minimum amount of timing for the WOT spark value.
A suggestion is stay on the low side of the BL 128 at cruise so the engine is
instantly smooth and pulling when the gas is nudged. There is no difference in MPG
between this and 128. If you have the capability for pulse width modulation (PWM)
of the EGR Id turn this off during the initial tinkering so that you dont chase
too many items at one time. Just doing the spark and fuel can be an exercise in
patience. Also, with a big cam just off idle and just as you go to light cruise at
say 30-35 mph, you may have a dodo area (in this area of the PROM maps, BLs are
lousy regardless of timing AFR). What is happening is the engine is starting to
wake up, the intake tract length is starting to work, and the engine is reducing its
self EGR. Pulling from 1600 rpm in high gear, smoothly from a roll might be the best
performance test possible. Some engines just dont like to lug down to 1400.
Eectch98-Part5.fm
Perform the light throttle cruise initial tuning in whatever gear is 1:1, or less
(overdrive). Doing the tuning while giving the engine the advantage of gearing
might leave you having to do a major retune.
On some of the EPROMs you can lower the TPS enable settings. If youre running an
auto tranny watch it. If you have a throttle value (TV) cable sensing transmission
you must have enough line pressure increase to keep from smoking the tranny to handle the extra HP at low TPS settings.
WOT
General Concepts
Remember, this is from personal experience, and the example vehicle is the vehicle
used in the light cruise tuning. DONT DO THIS WITHOUT ADULT SUPERVISION. In other
words, be careful, patient and methodical. To review, starting with a GM ECM with
initial programming set to 10-14 degrees WOT maximum retard. Set the decay rates
slow. Set the total timing amounts to 30 degrees. Set the WOT AFR to 11.5. Hook
up a scan tool, LED O2 sensor display, and performance analyzer.
Now adjust the F/P so that you can drive at WOT. Watch the O2, as you drive (OK
glance at it). After the pass is over, look at the knock counts. If the O2 sensor
was plenty rich (all ten LEDs Lit), and no knock counts advance all timing 2 degrees
and lean the WOT A/F mixture to 11.7
Repeat driving test.
A few words about the last item, analyzing performance requires something self-triggering, and easy to use. A home-grown performance analyzer is described in Appendix
A.
Now adjust the F/P so that you can drive at WOT. Watch the O2, as you drive (OK
glance at it). When the pass is over, look at the knock counts. If plenty rich (all
ten LEDs Lit), and no knock counts, advance all timing step 2 degrees and lean to
11.7
Repeat driving test.
Plenty of LED, and no knock counts, add 2 degrees more timing and lean the mixture
to 11.9.
Somewhere now youll start either slowing down, or tripping the knock sensor.
ally the knock starts triggering between 2000-2600 rpm.
Usu-
The WOT AFR stored in the prom can be a wide range of values depending on your
injector sizing, and PSI. Remember this is an ECM calculation and has nothing to do
with reality.
During all of this do some plug cuts, and learn how to read the removed plugs. If
the F/P is changed then the fuel VE values at part throttle in the prom tables will
have to be adjusted. Some juggling back and forth between the values in the VE table
and the WOT AFR will be expected.
Now, the ecm has been told a huge lie. This means we didnt know where the injector
constant lives. The TPS Enrichment (EFI talk for carb accelerator pump) location was
unknown, so for this application huge injectors were used. The engine is running a
90#/hr injector, with an injector constant in the EPROM size of 65. This is not the
best way to do this. But, by creative use of Fuel Pressure Regulators, and time
consuming recalibration of the VE tables, the system was made to work, but some of
the constants look really strange, i.e. WOT AFR of 13.5. The actual AFR is closer to
12.5 -- the 13.5 only exists in the ECMs mind.
Eectch98-Part5.fm
To achieve the EPROM files for this setup, burning 400 chips was not required to get
it right, 400 chips were burned to get it PERFECT. More than likely 98% of the world
would never notice the difference in the last 100+, and the first couple of 100 was
figuring out how to do the above.
PS When doing the above settle for the least amount of timing consistent with the
best performance. Trying to run maximum timing results in hitting the knock sensor
and having varying ETs. IF you run too much timing you may have to disable the knock
sensor diagnostics because the car is so happy with yesterdays tuning, and today the
ECM is using the OEM specs and cant run the diagnostics, and the fault codes get
pinged. (This setup is that way)
Eectch98-Part5.fm
Eectch98-Part5.fm
only way out of not being able to tune the accelerator pump features of TBI, since
no commercial program Ive heard of allows this to be done. However, once you have
things rather close you can try other chips from other applications, and put your
tables on them. From the good old days, a big block always took more accelerator
pump than a small block (hint).
Again rich you buy spark plugs, lean its internal engine parts. For Spark, not
enough timing, and you foul spark plugs, too much advance its internal engine
parts. (too long, too retarded, overheating)
If TPS enrichments arent changeable then try setting the VE high and low, (to try
having different BLs), then this BL will start to work as an enrichment during TPS
transitions. The reason this works is that the ECM will start moving the IAC counts
around.
When tuning remember the IAC is a vacuum leak.
Less is better.
Eectch98-Part5.fm
Attachment A
There are some nice $100-$150 performance analyzer units out there, and they dont
have to be perfect, just reliable. What I did was use the VSS and a Radio Shack Stop
Watch.
The VSS was tapped at the ECM and that was feed to a LM339.
The stopwatch was taken apart and wires added for the power supply and across the
start and stop buttons. The power wires went to an LED that was the ON indicator.
The LED voltage drop of 1.5 was enough to run the watch even though it originally
had a 1.6v battery (use a 100?fd at the input). The timer runs off a 7805 volt reg.
Wire the on + off wires to a 4066. Wire each side of a 556 to be a monostable ON/
OFF pulse for the 4066.
Going back to the 339. Tie its output to a counter set to divide by six. There are
3 pulses per tire revolution, so this will take two tire revolutions to start the
timer, which helps reduce false triggering from wheel spin. At the reset connection tie that to a second divide by 10 and use that to trigger the first of the 556
for the start 4066. Wire the second divide by 10 to a third one, so that you have a
total of divide by 100, and that will be the stop 4066/556 pulse. So now you have a
timer that ignores the first 2 revolutions of the rear tire and then counts 200 revolutions to stop the timer figure 6 rolling diameter ya have a 600 portable drag
strip in car that eliminates error due to wheel spin. (There is something wrong in
the math, but paced out it was a little over 1/8 mile.
That was 7 years ago.)
Could be the last divide by 10 was actually set at 8. Breadboard a 555 pulse generator and burn it in. The watch should run to .001 ever time. No I dont have a
schematic, and it was a cobble together, but it has been working for 7 years, and I
Eectch98-Part5.fm
EPEC
The following information about SVOs add-on processor that augments the eec came
from Super Fords web site:
http://www.d-p-g.com/superford/april_97/eZ.htm
EPEC consists of the EPEC processor module, a 6 ft. EPEC-to-PC serial interface
cable, an EEC-IV module to EPEC module cable called a Wiring Harness Adapter, a
short harness to connect to the Input/Output devices, several floppy disks containing the Windows calibration software and a small manual mainly for start-up use.
$1395 and a lap-top or other PC is all thats required.
Sam Guido at General Systems Research is the architect of EPEC, which is often
referred to as the "Super Extender" by SVO insiders. It purportedly gives everyone
the power to make the Mustang EEC-IV engine management do what you want.
For the first time, fuel and spark functions are completely under the control of the
operator. It is also a sophisticated data logger, so examining whats happening
inside your EEC-IV system, like air temperature, air mass, rpm, etc., is now possible with great accuracy.
SVO is pretty sure the EPEC module will work with any EEC-IV controlled engine,
though its been tried only on the Mustang. Other applications may require that one
modify the interconnecting harness supplied with the EPEC. Also, other differences
in strategies among the various versions of EEC-IV, like EGR operation for example,
may require one to toggle on or off certain functions at certain times, but what and
when is something youll have to discover on your own.
The EPEC is easy to install, thanks to the dedicated wiring harness, and should be
operational as fast as you can access your EEC-IV computer and plug in the harnesses -- say 10 minutes. More time consuming will be wiring the seven input/output
devices to the short EPEC harness. These are devices you select, such as nitrous
triggers and timers, along with data logging hardware such as MAP sensors, thermocouples, etc. The EPEC instruction manual is not in a printed format but is
delivered on floppy disks. A short, printed, manual of start-up instructions is
packaged with each kit.
EPECs Windows software offers simple operation.
is plotted.
EPEC works by turning off certain EEC-IV functions and substituting its own. This
means EEC-IVs adaptive programming is taken off line, so the EEC isnt constantly
battling the EPEC over engine control. Its ability to switch off most of EEC means
it has far too much latitude with fuel and spark to remain even remotely within
emissions guidelines so it will never be CARB exempted.
For example, to work with the fuel system, you start with the Fuel heading, click
and hold the mouse to reveal a menu, select from that menu and flip through the layers of fuel control. Highlight the function you want by clicking the mouse key,
enter the parameter you desire and thats about it. Fueling is not handled by
spelling out a specific injector pulse width, for example. Instead, there are 11
fuel control parameters available, each with a percentage scale you can easily dial
in. The fuel control parameters are:
Idle A/F Ratio: Controls closed throttle A/F ratio based on rpm.
Eectch98-Part5.fm
Part Throttle A/F Ratio: Controls part throttle A/F ratio based on rpm.
Wide Open Throttle (WOT) A/F Ratio: Controls WOT A/F ratio based on rpm.
Air Charge Temperature (ACT) Multiplier: Richens or leans the fuel based on inlet
air temperature.
Engine Coolant Temperature (ECT) Multiplier: Richens or leans the fuel based on
engine coolant temperature. In other words, its the choke.
Throttle Position (TP) Multiplier: Richens or leans the fuel based on throttle
opening.
Manifold Absolute Pressure (MAP) Multiplier: Richens or leans the fuel based on
manifold pressure, either vacuum or boost.
Transitional Fuel Enrichment (TFE): This richens the fuel when opening the throttle, like a carburetors accelerator pump.
Injector Offset Adder: This corrects for injector offset; the time it takes for
the injector to open.
Programmable Output Fuel Multiplier: Richens or leans the fuel based on the output state of each of the four available output channels. What you hook up to these
channels is up to you.
Analog Input Fuel Multiplier: Richens or leans the fuel based on the input voltage of each of the three available channels. You decide what you want these channels
connected to.
Setting up each of these fuel control parameters means the EPEC wants to know when
the enrichment (or leaning) should begin, how much enrichment you want and when to
turn it off. It might ask for an either/or decision, such as, do you want this form
of enrichment if these other three enrichments are already underway? It can be complex, as there are many layers to go through. There is a stock default setting
saved so you can get back to a standard calibration with minimal keystrokes. Also,
you can save several custom calibrations of your own to save reinventing the
calibration.
The spark functions are:
Idle Spark Adder/Subtractor: Advances or retards spark based on rpm at idle.
Part Throttle Spark Adder/Subtractor: Advances or retards spark based on rpm at
part throttle.
Wide Open Throttle (WOT) Spark Adder/Subtractor: Advances or retards spark based
on rpm at WOT.
Air Charge Temperature (ACT) Spark Adder/Subtractor: Advances or retards spark
based on air inlet temperature.
Engine Coolant Temperature (ECT) Spark Adder/Subtractor: Advances or retards spark
based on engine temperature.
Barometric Pressure (BP) Spark Adder/Subtractor: Advances or retards spark based
on barometric pressure.
Throttle Position (TP) Spark Adder/Subtractor: Advances or retards spark based on
throttle opening
Manifold Absolute Pressure (MAP) Spark Adder/Subtractor: Advances or retards spark
based on manifold pressure (load). Requires fitment of a GM MAP sensor.
Eectch98-Part5.fm
Boost Retard Subtractor: Retards spark in degrees per lb. of boost based on rpm.
Nitrous Spark Retard Subtractor: Retards spark during nitrous oxide operation (two
stages).
Programmable Output Spark Adder/Subtractor: Advances or retards spark based on the
output state of each programmable output channel. You select what device these channels are connected to.
Analog Input Spark Adder/Subtractor: Advances or retards spark based on the input
voltage of each analog input channel. You decide what device to connect to these
channels.
EPEC offers a 16-channel data logger that is fully programmable, so you can choose
what data to log, at what time, for how long and through which limits. The amount of
memory in the EPEC is limited, of course, so the more functions logged and the
longer information is logged, the fewer data points and the slower the hertz (points
per second) youll get. There is plenty of memory for logging drag strip runs in
useful time frames with many parameters, however. Essentially any data the EEC
takes in can be logged, plus whatever you hook to the four programmable outputs and
three analog inputs. By looking at things like the mass air meter and oxygen sensor
signals, along with the usual rpm measurements, interesting phenomenon and correlations can be seen.
Because EPEC is already monitoring rpm and has its own clock, its a cinch to let it
control nitrous solenoids or other time/rpm dependent gear. Thus it makes a fullfunction nitrous controller. Theres also a spare I/O wire from EPEC which can turn
on something as simple as a bulb (Make your own shift light?), or any other device.
Sam believes racers will use it to turn on a second data logger rigged to chassis
inputs such as driveshaft speed, suspension travel and so on.
EPEC can also perform all ignition boost retard functions. This requires a MAP sensor (also useful for data logging). It recognizes the common GM MAP sensor, so the
hardware is easily available. EPEC can also easily handle rev-limiting duties under
its regular menu, including two-step functions.
Source:
Ford Motorsport SVO
44050 N. Groesbeck Highway
Clinton Township, MI 48036-1108
(810) 468-1356
Eectch98-Part6.fm
REFERENCE
Compiled by Tom Cloud <[email protected]>
(font is Courier New)
EEC APPLICATIONS
A9L is the most common 89-93 MAF 5-speed computer catch code.
T4M0 is the most common 94-95 MAF 5-speed/E0D computer catch code.
J4J1 is the catch code on 94-95 Cobra computers.
ZA0 is the catch code used on the Cobra-R.
AKC0 is used by FMS for the Lightning Mass Air conversion.
engine
5.0
5.?
5.8
5.8
2.9
1.9
1.9
2.3
2.3
2.9
2.9
5.0
5.0
2.9
3.0
5.0
5.0
460
5.0
2.3
5.8
5.0
4.0
4.6
5.8
5.8
5.0
vehicle
truck CA
truck CA
truck CA
Bronco,F-x50
Scorpio
Escort
Escort
Mustang
Tempo
Ranger
Scorpio
TBird
Mustang
Ranger
Taurus
Bronco
Bronco
F350
Bronco
TBird Turbo
Bronco,F-x50
F-150
Ranger/Explr
Crown Vic
Bronco,F-x50
Bronco,F-x50
Mustang
MAF
MAF
MAF
MAF
88
88
SD
91
SD
93
E4OD
E4OD
E4OD
4.1
3.55
4.1
39D1
7GYA
8AM
8BB
8CC
8DN
8DR
8GHB
8KC
8LD
8ML
8NC
8PZ
8PZ
8SE
5-spd 3.55 8TP
8UA
A0C3
E4OD 3.55 A1C
A1S
A2J1
A2Z
A2Z1
5-spd 2.73 A3M
Part Number
F5TF-12A650-HB
F5TF-12A650-GB
F5TF-12A650-BYA
E9AF-14A624-AA
3-21A-R10
F3ZF-12A650-DA
72
Eectch98-Part6.fm
engine
5.0
5.0
5.0
5.0
5.0
5.0
1.9
1.9
5.0
1.9
3.0
4.0
1.9
1.9
5.8
4.0
3.8
3.0
3.0
3.8
3.8
4.0
5.8
3.8
4.0
5.8
5.0
5.8
4.6
4.6
5.8
5.8
5.0
5.0
2.8
2.9
2.9
3.0
4.0
5.8
5.0
5.0
5.0
3.0
3.0
5.8
vehicle
Mustang
Mustang
Mustang
Mustang
Mustang / CA
Mustang
Escort
Escort
TBird
Escort
Ranger
Ranger/Explr
Escort
Escort
Lightning FMS
Ranger/Explr
TBird SC
Taurus SHO
Taurus SHO
Cougar
TBird
Ranger/Explr
Bronco,F-x50
TBird SC
Ranger/Explr
Bronco,F-x50
Bronco
Bronco,F-x50
Crown Vic
Crown Vic
Lightning
Lightning
Mustang
Mustang
Ranger
Ranger
Ranger
Cougar
Ranger/Explr
Bronco,F-x50
TBird
Mustang
Mustang
Taurus
Taurus
Bronco,F-x50
n/a
MAF
93
93
MAF
Part Number
E9ZF-12A650-AA
F8TF-12A650-NA
F3ZF-12A650-FA
F3ZF-12A650-FB
F3ZF-12A650-EA
F3ZF-12A650-EB
73
Eectch98-Part6.fm
engine
5.8
5.0
460
5.0
5.0
5.0
4.6
5.0
5.8
4.0
4.0
5.0
4.6
1.9
2.3
2.3
5.8
5.0
5.8
5.0
5.0
3.2
4.0
2.9
460
3.0
5.0
5.8
4.0
5.0
4.0
3.0
5.0
1.9
4.6
2.3
2.3
2.3
2.3
2.3
2.9
3.8
4.6
vehicle
Bronco,F-x50
MK7
Mustang
Van
Mustang
Mustang
TBird
Crown Vic
Mustang
Bronco,F-x50
Ranger/Explr
Ranger/Explr
TBird
Crown Vic
Escort
Mustang
Mustang SVO
Bronco,F-x50
Mustang
Bronco,F-x50
TBird
TBird
Taurus SHO
Ranger/Explr
Ranger
F350
Ranger
Cobra
Bronco
Ranger/Explr
TBird
Probe V6
Ranger/Explr
Taurus SHO
Bronco
Escort
Crown Vic
TBird Turbo
TBird Turbo
TBird Turbo
TBird Turbo
TBird Turbo
Ranger
TBird SC
MK7
Crown Vic
87
SD/SFI
87
SD
94-95
95
SD
D9L1
D9S
DA1
DAD
DC
DE
DG1
DH
DX3
E0D
E0E
E0L
E1X
E3Y2
F1X
FB2
FB2
FK1
GJ1
GT
H2M
H2M1
H3Z
HAG0
5-spd
HD
J2C1
J2Z
J4J1
E4OD 3.55 JOG1
K1P0
KF
KLO7
L0D
L0S
L12D
L1X
L2W
LA
LA2
LA3
LB2
LB3
LDP1
LOE1
M1L1
M2C
Part Number
E7SF-12A650-A1B
74
Eectch98-Part6.fm
engine
3.0
3.8
1.9
5.0
5.0
3.0
3.8
4.0
4.0
4.0
5.0
4.0
2.3
2.3
2.3
2.3
2.3
2.3
2.3
4.0
2.9
2.9
3.8
2.0
5.0
5.0
2.3
2.3
2.3
2.3
5.8
3.8
5.0
1.9
4.0
4.0
4.0
5.0
2.3
5.0
5.0
5.0
1.9
3.8
vehicle
Ranger
TBird SC
Escort
TBird
G.Marquis
Ranger
TBird
Ranger/Explr
Ranger/Explr
Ranger/Explr
TBird
Ranger/Explr
Mustang SVO
Mustang SVO
Merkur Turbo
Merkur Turbo
Mustang SVO
Mustang SVO
Mustang SVO
Ranger/Explr
Ranger
Bronco II
LTD
Probe 16V
Econoline
Mustang
TBird Turbo
Mustang SVO
TBird Turbo
TBird Turbo
Bronco,F-x50
TBird SC
Mustang
Explorer
Escort
Ranger/Explr
Ranger/Explr
Ranger/Explr
Mustang
Mustang SVO
Mustang
Mustang
Mustang
diesel pickup
Escort
TBird SC
86
SD
94-95 MAF
A4LD
EOD
86
86
86
SFI
89
M2T
M2Y
M2Z
MC2
MN
MOM2
MP
NAP2
OLD2
P0X0
P3M
PAN1
PC1
PE
PF2
PF3
PJ
PK
PK1
RAT1
RM2
RP
SX
T
T2T
T4MO
TA
TE
TE
TF
U2U1
U2Y
U4PO
UB
UB
UMP1
VAN
VET1
VH2
VJ1
VJ1
VM1
VR1
W1D
W1E
W1M
Part Number
E6EF-12A650-B1A
E6SF-12A650-H1C
F1TF-12B565-CA
75
Eectch98-Part6.fm
engine
5.0
5.8
460
3.0
3.8
4.0
5.8
3.8
3.8
3.0
4.0
5.0
4.0
3.8
4.0
5.8
3.8
5.8
2.3
2.3
2.3
vehicle
Bronco
Bronco,F-x50
F350
Taurus SHO
MK8
TBird SC
Ranger/Explr
Bronco,F-x50
TBird
TBird SC
Taurus SHO
XR7
Ranger/Explr
Cobra
Ranger/Explr
TBird SC
Ranger/Explr
Bronco,F-x50
TBird
MK8
Cobra-R
TBird Turbo
Mustang SVO
TBird Turbo
93
Part Number
FEZF-12A650-CA
TERMS
Abbrev.
A/C
ACCS
ACC
ACT
ACV
AOD
AXOD
BOO
BP
CANP
CCO
CDR
CFI
CID
CKT
DIS
Meaning
Air Conditioning
A/C Cycling Switch
A/C Clutch Compressor
Air Charge Temperature sensor
Thermactor Air Control Valve
Automatic Overdrive Transmission
Automatic Transaxle Overdrive
Brake On/Off switch
Barometric Pressure sensor
Canister Purge solenoid
Converter Clutch Override
Crankcase Depression Regulator
Central Fuel Injection
Cylinder Identification sensor
Circuit
Direct Ignition System (see also EDIS, TFI)
Table 64: EEC Related Terms
76
Eectch98-Part6.fm
Abbrev.
Meaning
DVOM
Digital Volt/Ohm Meter
E4OD
Electronic 4-speed OverDrive Transmission
ECA
Electronic Control Assembly (processor, computer) (see MCU)
ECM
Electronic Control Module (see MCU)
ECT
Engine Coolant Temperature
ECU
Electronic Control Unit (see MCU)
EDF
Electric Drive Fan relay assembly
EDIS
Electronic DIStributor (see also DIS, TFI)
EEC
Electronic Engine Control
EGO
Exhaust Gas Oxygen sensor (see HEGO)
EGR
Exhaust Gas Recirculation system
EGRC
EGR Control solenoid or system
EGRV
EGR Vent solenoid or system
EVP
EGR Position sensor
EVR
EGR Valve Regulator
FI
Fuel Injector or Fuel Injection
FDM
Fuel Delivery Module
FP
Fuel Pump
FPM
Fuel Pump Monitor
GND or GRND Ground (see also PWR GND)
HEDF
High Speed Electro Drive Fan relay or circuit
HEGO
Heated EGO sensor
HEGOG
HEGO Ground circuit
HO
High Output
HSC
High Swirl Combustion, engine type
IDM
Ignition Diagnostic Module
IGN
Ignition system or circuit
INJ
Injector or Injection
ISC
Idle Speed Control
ITS
Idle Tracking Switch
KAM
Keep Alive Memory
KAPWR
Keep Alive Power
KOEO
Key On Engine Off
KOER
Key On Engine Running
KS
Knock Sensor
L
Liter(s)
LOS
Limited Operation Strategy (computer function)
LUS
Lock-Up Solenoid
MAF
Mass Air Flow sensor, meter or circuit
MA PFI
Mass Air Sequential Port Fuel Injection system
MCU
Microprocessor Control Unit
MIL
Malfunction Indicator Light
MPFI
Multi Port Fuel Injection
NDS
Neutral Drive Switch
NGS
Neutral Gear Switch
NPS
Neutral Pressure Switch
Table 64: EEC Related Terms
77
Eectch98-Part6.fm
Abbrev.
OCC
OHC
OSC
PCM
PFE
PFI
PIP
PSPS
PWR GND
RWD
SC
SIG RTN
SIL
SPOUT
SS
STAR
STI
STO
TAB/TAD
TAPS
TFI
TGS
THS
TP/TPS
TTS
VAF
VAT
VBATT
VM
VOM
VPWR
VREF
VSC
VSS
WAC
WOT
Meaning
Output Circuit Check
Over Head Camshaft (engine type)
Output State Check
Powertrain Control Module
Pressure Feedback EGR sensor or circuit
Port Fuel Injection
Profile Ignition Pickup
Power Steering Pressure Switch
Power Ground circuit (see also GND)
Rear Wheel Drive
Super Charged (engine type)
Signal Return circuit
Shift Indicator Light
Spark Output Signal from ECA
Shift Solenoid circuit
Self Test Automatic Readout (test equipment)
Self Test Input circuit
Self Test Output circuit
Thermactor Air Bypass/Diverter Tandem solenoid valves
Throttle Angle Position Sensor (see TP/TPS)
Thick Film Ignition system (see DIS, EDIS)
Top Gear Switch (cancels SIL operation in top gear)
Transmission Hydraulic Switch
Throttle Position Sensor
Transmission Temperature Switch
Vane Air Flow sensor or circuit
Vane Air Temperature
Vehicle Battery Voltage
Vane Meter
Analog Volt/Ohm Meter
Vehicle Power supply voltage (regulated 10-14 volts)
Voltage Reference (ECA supplied reference voltage 4-6 volts)
Vehicle Speed Control sensor or signal
Vehicle Speed Sensor or signal
WOT A/C Cut-off switch or circuit
Wide Open Throttle
Table 64: EEC Related Terms
78
Eectch98-Part6.fm
AFTER-MARKET SUPPLIERS:
Connectors for the EEC are apparently proprietary also, though some have said they
are available through Amp, Farnell and DigiKey.
There seem to be two channels of ECM availability:
1 - OEMs and the companies they authorize, who together provide remanufactured ECMs
through dealer channels;
2 - and those involved in the remanufacturing of ECMs for the true automotive
aftermarket.
- A1 Cardone
- Echlin
- Micro-Tech Automotive
- Standard Motor Parts
Some of these companies catalog and offer product (or repair service) on almost 800
different ECM configurations for Ford-made vehicles in the model years from 19771993. Some of these are consolidations of applications, where units have proven and
tested to be comparable. Foreign made vehicles sold under the Ford nameplate would
add to this population of ECMs, since the above count is only Ford units.
For an idea of what the EEC does, and what can be done with it, get a demo of Mike
Wesleys calibrator for the EEC-IV at:
http://www.tiac.net/users/goape/index.htm
79