Old thread but here is how to fix the problem
http://www.skylinesaustralia.com/forums ... 32gtr-ecu/
Resize Injectors -> Idle /Startup ..
Moderator: Matt
-
- Posts: 426
- Joined: Mon May 11, 2009 7:58 pm
- Location: FRANCE
Re: Resize Injectors -> Idle /Startup ..
When speaking about the use of WARMUP_TIMING table, you forgot to speak about the initial temp (ambient temp when starting the engine). It still makes the conditions more strict:
if TempInitial>15°C and TempInitial<35°C and Temp>30°C and Temp<55°C and TP<44 and rpm<2600 ==> WARMUP_TIMING table is used !!!!
Refer to my post above and the code below (loc_1429 is the exit point when any condition doesn't apply):
Just put 0 (-50°C) into WARMUP_TIMING_TEMP_MAX to get rid of this, as this is the first condition tested in the code.
AFTER_START_TIMING_ADVANCE doesn't exist on Z32, only TIMING_ADVANCE and TIMING_RPM_SUBTRACT: these 2 tables are very useful to advance timing when warming up till a certain rpm. Both apply on cold and warm starts.
On the other hand, TIMING_RPM_SUBTRACT doesn't seem to exist on HCR32.
if TempInitial>15°C and TempInitial<35°C and Temp>30°C and Temp<55°C and TP<44 and rpm<2600 ==> WARMUP_TIMING table is used !!!!
Refer to my post above and the code below (loc_1429 is the exit point when any condition doesn't apply):
Code: Select all
CODE:CCEB loc_6664: ; ...
CODE:CCEB ldab engine_temp ; Engine temp+50 (°C)
CODE:CCEE cmpb WARMUP_TIMING_TEMP_MAX
CODE:CCF1 bcc loc_1429
CODE:CCF1
CODE:CCF3 ldaa engine_temp_initial ; Initial engine temp+50 (°C)
CODE:CCF6 cmpa #65
CODE:CCF8 bcs loc_1429
CODE:CCF8
CODE:CCFA cmpa #85
CODE:CCFC bcc loc_1429
CODE:CCFC
CODE:CCFE cmpb WARMUP_TIMING_TEMP_MIN
CODE:CD01 bcs loc_1429
CODE:CD01
CODE:CD03 ldab tp_filt ; Filtered tp
CODE:CD06 ldaa rpm_d4_lo ; rpm_div_4_lo=lo(Engine speed/50)
CODE:CD09 tim #%100, interp_flags ; Bit 6: 0=rpm, 1=tp_d2_filt
CODE:CD0C beq loc_6694
CODE:CD0C
CODE:CD0E addd #$A08
CODE:CD0E
CODE:CD11
CODE:CD11 loc_6694: ; ...
CODE:CD11 cmpb WARMUP_TIMING_TP_MAX
CODE:CD14 bcc loc_1429
CODE:CD14
CODE:CD16 cmpa WARMUP_TIMING_RPM_MAX
CODE:CD19 bcc loc_1429
CODE:CD19
CODE:CD1B aim #%11111011, interp_flags ; Bit 6: 0=rpm, 1=tp_d2_filt
CODE:CD1E ldaa rpm_lo ; rpm_lo=min(rpm,255)
CODE:CD21 ldx #IDLE_TIMING_NEUTRAL
CODE:CD24 jsr interp_16 ; X=table adress
CODE:CD24 ; A=value to look up
CODE:CD24 ;
CODE:CD24 ; A=output value
CODE:CD24
CODE:CD27 aim #%10111111, flags7 ; Bit 0: EGR off
CODE:CD2A jmp loc_1396
CODE:CD2A
CODE:CD2D
CODE:CD2D loc_1429: ; ...
Just put 0 (-50°C) into WARMUP_TIMING_TEMP_MAX to get rid of this, as this is the first condition tested in the code.
AFTER_START_TIMING_ADVANCE doesn't exist on Z32, only TIMING_ADVANCE and TIMING_RPM_SUBTRACT: these 2 tables are very useful to advance timing when warming up till a certain rpm. Both apply on cold and warm starts.
On the other hand, TIMING_RPM_SUBTRACT doesn't seem to exist on HCR32.
Re: Resize Injectors -> Idle /Startup ..
Pretty interesting ... thanks!
Re: Resize Injectors -> Idle /Startup ..
I said to do exactly that, set Min and Max temp to be - 50cRomChip200 wrote:When speaking about the use of WARMUP_TIMING table, you forgot to speak about the initial temp (ambient temp when starting the engine). It still makes the conditions more strict:
if TempInitial>15°C and TempInitial<35°C and Temp>30°C and Temp<55°C and TP<44 and rpm<2600 ==> WARMUP_TIMING table is used !!!!
Refer to my post above and the code below (loc_1429 is the exit point when any condition doesn't apply):
Code: Select all
CODE:CCEB loc_6664: ; ... CODE:CCEB ldab engine_temp ; Engine temp+50 (°C) CODE:CCEE cmpb WARMUP_TIMING_TEMP_MAX CODE:CCF1 bcc loc_1429 CODE:CCF1 CODE:CCF3 ldaa engine_temp_initial ; Initial engine temp+50 (°C) CODE:CCF6 cmpa #65 CODE:CCF8 bcs loc_1429 CODE:CCF8 CODE:CCFA cmpa #85 CODE:CCFC bcc loc_1429 CODE:CCFC CODE:CCFE cmpb WARMUP_TIMING_TEMP_MIN CODE:CD01 bcs loc_1429 CODE:CD01 CODE:CD03 ldab tp_filt ; Filtered tp CODE:CD06 ldaa rpm_d4_lo ; rpm_div_4_lo=lo(Engine speed/50) CODE:CD09 tim #%100, interp_flags ; Bit 6: 0=rpm, 1=tp_d2_filt CODE:CD0C beq loc_6694 CODE:CD0C CODE:CD0E addd #$A08 CODE:CD0E CODE:CD11 CODE:CD11 loc_6694: ; ... CODE:CD11 cmpb WARMUP_TIMING_TP_MAX CODE:CD14 bcc loc_1429 CODE:CD14 CODE:CD16 cmpa WARMUP_TIMING_RPM_MAX CODE:CD19 bcc loc_1429 CODE:CD19 CODE:CD1B aim #%11111011, interp_flags ; Bit 6: 0=rpm, 1=tp_d2_filt CODE:CD1E ldaa rpm_lo ; rpm_lo=min(rpm,255) CODE:CD21 ldx #IDLE_TIMING_NEUTRAL CODE:CD24 jsr interp_16 ; X=table adress CODE:CD24 ; A=value to look up CODE:CD24 ; CODE:CD24 ; A=output value CODE:CD24 CODE:CD27 aim #%10111111, flags7 ; Bit 0: EGR off CODE:CD2A jmp loc_1396 CODE:CD2A CODE:CD2D CODE:CD2D loc_1429: ; ...
Just put 0 (-50°C) into WARMUP_TIMING_TEMP_MAX to get rid of this, as this is the first condition tested in the code.
AFTER_START_TIMING_ADVANCE doesn't exist on Z32, only TIMING_ADVANCE and TIMING_RPM_SUBTRACT: these 2 tables are very useful to advance timing when warming up till a certain rpm. Both apply on cold and warm starts.
On the other hand, TIMING_RPM_SUBTRACT doesn't seem to exist on HCR32.
When do people advance timing on cold start? Weird that Nissan actually retard the ignition!