P01 and P59 ignition driver hardware
-
dubcrazy8392
- Posts: 38
- Joined: Fri Jul 18, 2025 10:57 pm
- cars: -1981 6.0L LQ4 swapped C10 (aka lumpy)
-2000 silverado 2500 (daily work horse that does it with style)
Re: P01 and P59 ignition driver hardware
i figured it out actually. the code logic for this has to be written a very specific way or the forcing forcing of the dwell time to 0 for the spark cut poisons the TPU in the ECU locking the coil dwell to 0 till the next key cycle where everything reset. i was plagued by this stuck at 0 when using a spark cut rev limiter constantly and sometimes at complete random the 0 would stick during launch control at like 3000RPM. i wrote a custom PID into the ECU so i could watch the actual dwell time among a few other variables, thats how i discovered the dwell time was getting stuck at 0. thanks for the input guys. now im on to my next P59 project and thats idle auto tune that uses a similar concept to how the HPT does their live tuning by copying mapping to RAM and how the fuel trims are treated and stored at key off by storing the last settings in the parameters part of the flash for next start up. so far the testing on that has been very successful. basically its a PID loop that knows the desired RPM and it changes the desired idle air flow mapping in RAM to keep the engine at target idle. ive been testing it on my 81 C10 with 6.0L and TSP BFD chop monster cam which is a tough bastard to get be reasonable and just idle without dipping or trying to stall. with this it actually acts fairly normal but has that cam chop from hell at idle lol. once i get to a safe point with the auto idle project im going to post up a windows based tool on here that will patch pretty much any P01 or P59 with the code to make it work. all you have to do is rough in your idle tuning manually and once the auto idle tuner is active it will take care of the rest on its own.
-
AngelMarc
- Posts: 613
- Joined: Sat Apr 08, 2023 11:23 am
- cars: A CB450 running to 8,000RPM with a P59.
-
dubcrazy8392
- Posts: 38
- Joined: Fri Jul 18, 2025 10:57 pm
- cars: -1981 6.0L LQ4 swapped C10 (aka lumpy)
-2000 silverado 2500 (daily work horse that does it with style)
Re: P01 and P59 ignition driver hardware
like this. having it do its normal dwell time calculations before anything spark cut touches the dwell in RAM. this was the TPU gets more frequent updates from the dwell time table and slightly less 0 dwell. the sound of this one is almost like a cylinder selective cut vs the other ways i had it that where more like a hard on/off mechanical sounding cut like the defualt fuel cut rev limiter. also the one thing i noticed is that ECU's with intel flashes seem to be less tolerant to this than ones with AMD flash chips. still why u was chasing the dwell drivers themselves in the hardware level they can give bad feedback to the TPU on this so i wondered if delco had like used different manufacturers throughout the lifespan of the P01/P59. i seen this years ago in VW/audi ME7 ECU's where the spark cut in early built ME7.5 would cause the fuse to pop for the coils when the dwell cut was set to hard 0.0ms. pull the driver out of a later parts ECU and install it into the older ECU and the problem went away completely. i mean we see delco did play games with flash chips by changing manufacturers so who's to say they didnt do the same on the driver chips for various things? i wish i could get my hands on some factory GM/delco P01/P59 internal documentation. that would be a huge help doing this stuff. having the actual board schematics with all the hardware labled and referenced would be awesome! i know it existis too, they called them red book and blue book or something like that but the gate keepers of those documents absolutely will not let anyone see them in their entirety. i have a post on here trying to trade some holy grail bosch documentation for them but no one bit. smh.
Code: Select all
OS7:000D0946
OS7:000D0946 ; =============== S U B R O U T I N E =======================================
OS7:000D0946
OS7:000D0946
OS7:000D0946 SPARK_CUT_WRAPPER: ; CODE XREF: DWELL_UPDATE_A+82↑p
OS7:000D0946 ; SPARK_EVENT_HANDLER+15E↑p ...
OS7:000D0946 4EB9 0003 B82A jsr DWELL_TIME_ROUTINE ; Jump to Subroutine
OS7:000D094C 48E7 E080 movem.l d0-d2/a0,-(sp) ; Move Multiple Registers
OS7:000D0950 3238 A562 move.w (RAM_RPM).w,d1 ; Move Data from Source to Destination
OS7:000D0954 4A39 000E 0008 tst.b (HRD_LIMIT_SW).l ; Test an Operand
OS7:000D095A 6708 beq.s loc_D0964 ; Branch if Equal
OS7:000D095C B279 000E 0D2A cmp.w (CONST_HRD_LIMIT_RPM).l,d1 ; Compare
OS7:000D0962 622C bhi.s loc_D0990 ; Branch if High
OS7:000D0964
OS7:000D0964 loc_D0964: ; CODE XREF: SPARK_CUT_WRAPPER+14↑j
OS7:000D0964 4A39 000E 0006 tst.b (LC_ENABLE_SW).l ; Test an Operand
OS7:000D096A 670E beq.s loc_D097A ; Branch if Equal
OS7:000D096C 4A38 B5EC tst.b (RAM_LC_DISABLE).w ; Test an Operand
OS7:000D0970 6708 beq.s loc_D097A ; Branch if Equal
OS7:000D0972 B279 000E 0D30 cmp.w (CONST_LC_RPM).l,d1 ; Compare
OS7:000D0978 6216 bhi.s loc_D0990 ; Branch if High
OS7:000D097A
OS7:000D097A loc_D097A: ; CODE XREF: SPARK_CUT_WRAPPER+24↑j
OS7:000D097A ; SPARK_CUT_WRAPPER+2A↑j
OS7:000D097A 4A39 000E 0007 tst.b (NLS_ENABLE_SW).l ; Test an Operand
OS7:000D0980 671A beq.s loc_D099C ; Branch if Equal
OS7:000D0982 4A38 B5ED tst.b (RAM_ENABLE_NLS_FLAG).w ; Test an Operand
OS7:000D0986 6714 beq.s loc_D099C ; Branch if Equal
OS7:000D0988 B279 000E 0DC0 cmp.w (CONST_NLS_RPM).l,d1 ; Compare
OS7:000D098E 650C bcs.s loc_D099C ; Branch if Carry Set
OS7:000D0990
OS7:000D0990 loc_D0990: ; CODE XREF: SPARK_CUT_WRAPPER+1C↑j
OS7:000D0990 ; SPARK_CUT_WRAPPER+32↑j
OS7:000D0990 4278 B31A clr.w (RAM_DWELL_CURRENT).w ; Clear an Operand
OS7:000D0994 4278 B31C clr.w (RAM_DWELL_MAX).w ; Clear an Operand
OS7:000D0998 4278 B31E clr.w (RAM_DWELL_MIN).w ; Clear an Operand
OS7:000D099C
OS7:000D099C loc_D099C: ; CODE XREF: SPARK_CUT_WRAPPER+3A↑j
OS7:000D099C ; SPARK_CUT_WRAPPER+40↑j ...
OS7:000D099C 4CDF 0107 movem.l (sp)+,d0-d2/a0 ; Move Multiple Registers
OS7:000D09A0 4E75 rts ; Return from Subroutine
OS7:000D09A0 ; End of function SPARK_CUT_WRAPPER
OS7:000D09A0-
dubcrazy8392
- Posts: 38
- Joined: Fri Jul 18, 2025 10:57 pm
- cars: -1981 6.0L LQ4 swapped C10 (aka lumpy)
-2000 silverado 2500 (daily work horse that does it with style)
Re: P01 and P59 ignition driver hardware
just a little update. this code flow half works. doesnt crash the TPU at 3000RPM anymore but it most definitely does at or above 6000RRPM. working on a completely new solution to this problem and will be posting it here in the near future.
-
antus
- Site Admin
- Posts: 10076
- 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: P01 and P59 ignition driver hardware
cool, thanks for keeping us in the loop!
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