OKI M6260A Engine Control Counter IC
Technical reference for the OKI M6260A Engine Control Counter IC, a custom timing and I/O coprocessor used in Honda OBD0 and OBD1 ECUs.
The OKI M6260A (often marked as M6260A or 6260A) is a custom integrated circuit manufactured by OKI Semiconductor specifically for Honda Engine Control Units (ECUs). Officially designated as the Engine Control Counter IC, this chip was discontinued in the mid-1990s but remains a cornerstone of OBD0 and OBD1 ECU architectures.
Role and Core Functions
The OKI M6260A acts as a multi-purpose I/O coprocessor and timing manager. It offloads real-time, high-frequency operations from the main MCU (such as the OKI 66207). Its primary duties include:
- Engine Position & Speed Tracking: Monitoring raw distributor signals (TDC, CYP, CKP) to calculate RPM and trigger timing interrupts.
- Vehicle Speed Processing: Reading speed sensor pulses (VSS) to calculate vehicle speed.
- Injector Timing Output (Pre-drivers): Controlling the gate/base signals for the high-power fuel injector transistors (
Q18âQ21). - Ignition Timing Output: Directing the igniter trigger pulse (ignition coil trigger) to control spark timing.
- Auxiliary Output Driving: Driving auxiliary relays and solenoids (A/C clutch, main relay, EVAP purge, fast idle, Check Engine Light, etc.).
- Hardware Feedback Loop Monitoring: Verifying output states by reading loop-back diagnostic inputs.
Software Interface & Memory Registers
The main MCU communicates with the M6260A via its external data bus using memory-mapped I/O instructions (MOVX in 8051-style assembly). The M6260A occupies the address space from 0x2000h to 0x200Fh.
Write Operations to 0x2000h (Port Outputs)
Writing a byte to address 0x2000h directly toggles digital output lines on the M6260A.
Important
Logic State: Active-Low control. If the high bit (Bit 7) is 0, the corresponding output is turned ON (enabled). If Bit 7 is 1, the output is turned OFF (disabled).
| Port Value (ON) | Port Value (OFF) | Output Pin | Controlled Circuit / Component |
|---|---|---|---|
0x13 |
0x93 |
Pin 22 | Igniter Trigger Output (IC14) |
0x14 |
0x94 |
Pin 32 / 34 | Main Relay Driver |
0x15 |
0x95 |
Pin 33 | A/C Clutch Relay Driver |
0x16 |
0x96 |
Pin 45 | Q35 - Error LED on ECU board |
0x17 |
0x97 |
Pin 44 | Transistor Q33 Driver |
0x20 |
0xA0 |
Pin 43 | Fast Idle Valve / Solenoid |
0x21 |
0xA1 |
Pin 42 | Transistors Q31, Q45, CN1 Pin 11 |
0x22 |
0xA2 |
Pin 41 | Dash Check Engine Light (CEL/MIL) |
0x23 |
0xA3 |
Pin 40 | IC17 - Automatic Transmission Lockup |
0x24 |
0xA4 |
Pin 39 | Multipurpose auxiliary output |
0x25 |
0xA5 |
Pin 15 | TDC Sensor Input Logic Control |
Read Operations (Digital Inputs)
Reading addresses 0x2001h and 0x2002h returns the live logic status of digital inputs wired to the M6260A.
| Memory Address | Bit | Pin | Connected Input Signal |
|---|---|---|---|
0x2001h |
Bit 1 | Pin 60 | A/C Switch Status |
0x2001h |
Bit 3 | Pin 59 | Ignition Switch Start/Run Signal |
0x2001h |
Bit 4 | Pin 58 | Heater Fan Switch |
0x2001h |
Bit 5 | Pin 57 | Reverse Switch (Manual Trans models) |
0x2001h |
Bit 6 | Pin 56 | Clutch Interlock Switch |
0x2001h |
Bit 7 | Pin 55 | Brake Switch Input |
Counter & Pulse Accumulator Registers
Reading registers 0x2004 through 0x2007 retrieves hardware counters populated directly by the M6260A's distributor and VSS pulse-reading inputs.
| Register Address | Bit Width | Data Content | Input Pin | Source Sensor |
|---|---|---|---|---|
0x2004h |
8-bit | Engine Speed (RPM) Low Byte | Pin 64 | Crank/RPM Sensor Input |
0x2005h |
8-bit | Engine Speed (RPM) High Byte | Pin 64 | Crank/RPM Sensor Input |
0x2006h |
8-bit | Vehicle Speed (VSS) Low Byte | Pin 61 | VSS (Vehicle Speed Sensor) |
0x2007h |
8-bit | Vehicle Speed (VSS) High Byte | Pin 61 | VSS (Vehicle Speed Sensor) |
Note
Writing to address
0x2000hwith bits 4 and 5 set to 0 configures or resets these RPM/VSS counters and the internal Pulse Width Modulator (PWM) controllers. Address0x200Fhbehaves as a General Control Register for the M6260A's internal configuration.
M6260A Startup Initialization Sequence
During ECU boot-up, the software runs a precise byte-exchange routine to initialize the M6260A chip:
WRITE 0x00 -> [0x2000h] ; Clear/initialize outputs
WRITE 0x25 -> [0x2000h] ; Initialize TDC sensor routing
WRITE 0x96 -> [0x2000h] ; Command Error LED OFF (high bit active)
WRITE 0xA7 -> [0x2000h] ; Turn off auxiliary port
WRITE 0xE9 -> [0x200Fh] ; Configure general control register
READ [0x2003h] ; Read status register (expects 0x80)
WRITE 0xA0 -> [0x2000h] ; Command Fast Idle Solenoid OFF
READ [0x2003h] ; Read status register (expects 0x80)
WRITE 0x00 -> [0x2001h] ; Initialize Port 1
WRITE 0x01 -> [0x2003h] ; Enable interrupts/write control
READ [0x2003h] ; Read status register (expects 0x81)
WRITE 0x01 -> [0x2002h] ; Initialize Port 2
READ [0x2003h] ; Read status register (expects 0x80)
64-Pin Package Pinout Mapping
| Pin | Connection / Function | Pin | Connection / Function |
|---|---|---|---|
| 1 | GND | 64 | RPM Sensor Input |
| 2-9 | MCU Data Bus Bits 0-7 | 63 | BACK Chip Pin 33 |
| 10 | MCU Chip Enable (/CE) |
62 | CID (Cylinder ID) Sensor Input |
| 11 | MCU Address Bit 8 | 61 | VSS (Vehicle Speed Sensor) Input |
| 12 | MCU ALE | 60 | A/C Switch Input |
| 13 | MCU Write Enable (/WR) |
59 | Op-Amp IC 2904 Pin 7 |
| 14 | MCU Read Enable (/RD) |
58 | Resistor Network RM4 Pin 6 |
| 15 | TDC Sensor Input | 57 | Resistor Network RM4 Pin 4 |
| 22 | Igniter Trigger Output | 54 | Transistor Q18 (Injector 1) |
| 34 | Main Relay Driver | 53 | Transistor Q19 (Injector 2) |
| 33 | A/C Clutch Relay | 52 | Transistor Q20 (Injector 3) |
| 41 | Dash CEL Output | 51 | Transistor Q21 (Injector 4) |
| 46 | Logic VCC (+5V) | 45 | Transistor Q35 (Error LED) |