99 Isuzu 3.5 anyone know about these ECUs?

American Delco GM ECUs and PCMs, ALDL, OBD 1.5.
kur4o
Posts: 1145
Joined: Sun Apr 10, 2016 11:20 am

Re: 99 Isuzu 3.5 anyone know about these ECUs?

Post by kur4o »

that is how you use more ROM memory than processor registers support.
You can run effectively more code than CPU can see.

It is just more code run on schedule by the cpu.

Tom H had developed some boot strap code that can read/write flash with simple interface hooked on cpu header. It is for LT1 pcm, but they all use same cpu flash chips and same internals, so lots of stuff can be easily ported.
User avatar
Maxzillian
Posts: 9
Joined: Sat Nov 29, 2025 8:36 pm
cars: 2000 Isuzu Vehicross
1987 Chrysler Conquest (LFX Swap)
Location: Wichita, KS

Re: 99 Isuzu 3.5 anyone know about these ECUs?

Post by Maxzillian »

Well, I think I'm throwing in the towel for now concerning the ALDL interface. The more I look at this it's really not user friendly to do in-vehicle and strikes me as something that was never intended for in-vehicle use. I could be reading the code incorrectly, but it looks to me like there are several pre-conditions that have to be met to open the serial interface and once it's there it operates in a while loop until the PCM is reset.

Namely there's this chunk of code that precedes when the baud rate and data format is set and appears to be looking for specific analog input conditions:

TPS must be above 4.79V
MAP must be below 0.2V
IAT must be above 4.79V
CLT must be below 0.2V

To accomplish this in-vehicle you'd need to unplug the MAP sensor (pull-down circuit), IAT sensor (pull-up circuit), ground the CLT sensor and hold the throttle at WOT during what I assume would be initial power-on. Despite meeting these preconditions on my bench setup I still can't get anything out of the ALDL comm and this setup is so user-unfriendly that I'm going to shift to the VPW interface going forward.

Code: Select all

SerialEnableCheck                               XREF[2]:     656f(j), 6574(j)  
6579 ce 10 03        LDX        #PortGDataDirection                             
657c 1c 00 01        BSET       0x0,IX=>PortGDataDirection,0x1                  
657f ce 10 03        LDX        #PortGDataDirection                             
6582 1c 00 02        BSET       0x0,IX=>PortGDataDirection,0x2                  
6585 ce 10 03        LDX        #PortGDataDirection                              
6588 1c 00 04        BSET       0x0,IX=>PortGDataDirection,0x4                   
658b 07                TPA
658c 0f                 SEI
658d c6 02            LDAB       #0x2                                              Select AN2 (TPS)
658f f7 10 30        STAB       ADControlStatus(ADCTL)                           
6592 bd 25 9d       JSR        12CycleWait
6595 f6 10 31        LDAB       ADR1                                             
6598 06                TAP
6599 17                TBA
659a 81 f5            CMPA       #0xf5                                             4.79V
659c 25 4d           BCS        ReturnJumpJump                             Branch if voltage is lower than 
659e 07                TPA
659f 0f                 SEI
65a0 c6 01            LDAB       #0x1                                              Select AN1 (MAP)
65a2 f7 10 30        STAB       ADControlStatus(ADCTL)                 
65a5 bd 25 9d       JSR        12CycleWait
65a8 f6 10 31        LDAB       ADR1                                
65ab 06                TAP                                                               Transfer from Acc A to CCR
65ac 17                TBA                                                               Transfer from acc B to acc A
65ad 81 0a            CMPA       #0xa                                               0.20V
65af 22 3a             BHI        ReturnJumpJump                             Branch if voltage is higher than
65b1 07                 TPA                                                              Transfer from CCR to acc A
65b2 0f                 SEI                                                                Set interrupt mask bit in CCR
65b3 f6 10 02        LDAB       PortGData                               
65b6 c4 f8            ANDB       #0xf8
65b8 ca 00            ORAB       #0x0                                               Intake air temp
65ba f7 10 02        STAB       PortGData                     
65bd c6 00            LDAB       #0x0                                                Select AN0
65bf f7 10 30         STAB       ADControlStatus(ADCTL)                   
65c2 bd 25 9d       JSR        12CycleWait
65c5 f6 10 31        LDAB       ADR1                                  
65c8 06                TAP
65c9 17                TBA
65ca 81 f5            CMPA       #0xf5                                                4.79V
65cc 25 1d            BCS        ReturnJumpJump
65ce 07                TPA
65cf 0f                 SEI
65d0 f6 10 02        LDAB       PortGData                                 
65d3 c4 f8            ANDB       #0xf8
65d5 ca 01            ORAB       #0x1                                                Engine coolant temp
65d7 f7 10 02        STAB       PortGData                           
65da c6 00            LDAB       #0x0                                                 Select AN0
65dc f7 10 30        STAB       ADControlStatus(ADCTL)              
65df bd 25 9d       JSR        12CycleWait
65e2 f6 10 31        LDAB       ADR1                                                ADR1 (AN0 analog conversion)
65e5 06                TAP                                                                 Transfer A to CCR
65e6 17                TBA                                                                 Transfer B to A
65e7 81 0a            CMPA       #0xa                                                0.20V
65e9 23 03            BLS        SerialConfigure                                  Branch if lower or same
The good news is I did at least do some hardware snooping and have some handy notes about the analog inputs:

AN0 is multiplexed using PG0, PG1 and PG2 as the addressing pins. The analog multiplexor is labeled as "16045153 B32230ME Hnn9743 4" I couldn't obtain a datasheet for this, but the pinout appears to match the Rohm BU4051BCF.

So I'll label AN0 as the multiple addressing options:

AN0:0x0 IAT
AN0:0x1 CLT
AN0:0x2 Unknown
AN0:0x3 Fuel tank pressure sensor
AN0:0x4 EGR valve position sensor
AN0:0x5 Fuel level sensor
AN0:0x6 Battery Voltage
AN0:0x7 Unknown
AN1 MAP
AN2 TPS
AN3 Unknown
AN4 High precision TPS? This tracks 0-5V as the TPS goes from 0-1.2V
AN5 Unknown, but probably O2 sensor as the open circuit voltage measures 2V
AN6 Unknown, but presumed O2 sensor
AN7 Unknown, but presumed O2 sensor
User avatar
antus
Site Admin
Posts: 10012
Joined: Sat Feb 28, 2009 10:34 am
cars: TX Gemini 2L Twincam 8psi
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Subaru WRX 2007

Re: 99 Isuzu 3.5 anyone know about these ECUs?

Post by antus »

Just a guess but the AN4 might be to do with idle. It might need the extra resolution to track in detail what the lowest voltage it sees is to toggle in to idle mode at slightly different voltages depending on TPS hardware or throttle stop variations.
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
User avatar
Maxzillian
Posts: 9
Joined: Sat Nov 29, 2025 8:36 pm
cars: 2000 Isuzu Vehicross
1987 Chrysler Conquest (LFX Swap)
Location: Wichita, KS

Re: 99 Isuzu 3.5 anyone know about these ECUs?

Post by Maxzillian »

I figured it probably had something to do with transmission control. The amount of load variation at low throttle openings are pretty high so it'd make some sense to me that there would be some focus down there; I've just never encountered something like that before.