Z32, knock gauge gone

Nistune topics related specifically to the 6303 cpu

Moderator: Matt

idslave
 

Posts: 2
Joined: Tue Sep 20, 2011 10:21 am

Z32, knock gauge gone

Post by idslave »

After installing NIStune I turned on the car but didn't start it and I found my knock gauge in the consult view was all over the place. I used the resistor bypass and was still getting crazy readings, and then I got an error message "knock thread timeout" and from that time the knock gauge has disappeared, nothing happens in the knock warning panel. This is a new OEM knock sensor and subharness, and since this issue I've also replaced the knock board in the ECU. No change.
Torque
 

Posts: 639
Joined: Wed Jun 16, 2010 10:08 am

Re: Z32, knock gauge gone

Post by Torque »

Hello ..

You have to explain some more ..
There is no working knock detection for the Type2/Z32 ECU.

What exactly is happening?
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

In the later versions (ie 0.10.x onwards) the code was rewritten to only display 'knock gauge' for those ECUs that it actually works on

So for Z32 I have not found the register to trigger knock counting in Nistune firmware yet to reporting a knock count

Only thing so far for Z32 is if the ECU starts using knock maps I highlight those maps being used

After November when I am on Nistune full time I will put Z32 as part of further investigations
Torque
 

Posts: 639
Joined: Wed Jun 16, 2010 10:08 am

Re: Z32, knock gauge gone

Post by Torque »

Hmmmm ...

Could you set up some 'BEEP' or alert to inform Z32 users that the knock maps are used.
(is it ignition or fuel-maps?)
It would be immensely helpful while road-tuning ..
:)


Matt wrote:In the later versions (ie 0.10.x onwards) the code was rewritten to only display 'knock gauge' for those ECUs that it actually works on

So for Z32 I have not found the register to trigger knock counting in Nistune firmware yet to reporting a knock count

Only thing so far for Z32 is if the ECU starts using knock maps I highlight those maps being used

After November when I am on Nistune full time I will put Z32 as part of further investigations
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

Yeah I can add that in

Its independent for both maps. Ie there are separate areas of memory I monitor for each map. In theory they could be independent but so far in practice we see them switch same time (dare say the triggering code just sets both to switch simulatenously)
idslave
 

Posts: 2
Joined: Tue Sep 20, 2011 10:21 am

Re: Z32, knock gauge gone

Post by idslave »

How strange, so basically I shouldn't have seen that knock gauge in the first place?
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

Its partially the reason why I had to do a bunch of changes in the 0.10 versions to separate the consult, wideband and extra gauges. The extras were showing up all the time even when they werent used - causing confusion
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

All knock related items are disabled (unless the ECU supports them) now (including not showing knock count)

I've added in another tone for switch over to knock maps just now

Knock warning timeout error messages have had the cause found and problem rectified
Torque
 

Posts: 639
Joined: Wed Jun 16, 2010 10:08 am

Re: Z32, knock gauge gone

Post by Torque »

Hi Matt,

So we get a BEEP when knock maps are being used/ accessed?
Have you checked this under real world conditions, is it any useful?

Is the switch to knock maps permanent (until on/off) or does the ECU tip-toe in and out?
Also are ignition and fuel knock maps switched simultaneously?

Questions, questions ...


Cheers from London,

Andrew
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

You will get 3 x hi/low quick tones through the speakers. I've added in a sound class into the latest build which also tones on consult/wideband connect/disconnect

I've checked on the bench so far by triggering the knock sensors and confirmed it changes to knock maps and does the sound. In the vehicle I would need to get my R34 to detonate ...

Knock maps from what I have observed stay switched. They appear to be switched simulateously even though there are separate flags for each one. The tone plays on whichever moves to knock first
Torque
 

Posts: 639
Joined: Wed Jun 16, 2010 10:08 am

Re: Z32, knock gauge gone

Post by Torque »

Exciting!

Can't wait to test this..

Will this release be a major release change then?

Cheers ..
Matt
Site Admin
 

Posts: 8961
Joined: Sun Jan 29, 2006 1:45 am
Location: Adelaide, Australia
Contact:

Re: Z32, knock gauge gone

Post by Matt »

Will be 0.11 release initially for beta testing once I iron out some issues that have been introduced :?
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: Z32, knock gauge gone

Post by RomChip200 »

But before switching definitively to the knock maps, the ECU is going to retard timing, up to 6°, keeping the regular timing map, chasing from 1° to 6° depending on engine conditions. Above 6°, after a while, it goes to knock maps and stays there.

Being informed the ECU starts to retard is the trick, particularly in the 2000-3000rpm/full throttle when TP exceeds a certain value (max torque). This is the area where I always got some furtive knock upon acceleration.

2 variables:
0x1614 is timing retard offset. Regular value is 0. ECU starts to decrease this variable when instantaneous knock occurs, down to 248 max. Later, the value can go up progressively to 255 when knock condition disappears and new acceleration without knock has been done successfully.
0x1610 specifies the threshold to switch to knock map. ECU starts to decrease this variable when knock occurs for a while, when reaching to 248, it switches and stays to knock map. The bit2 in 0x5A is then set to notify the switch to knock map.
0x1610 and 0x1614 are 2 bytes variables. We consider upper byte only.
0x1610 and 0x1614 evolve in parallel.
Torque
 

Posts: 639
Joined: Wed Jun 16, 2010 10:08 am

Re: Z32, knock gauge gone

Post by Torque »

Hi,

This sounds very interesting.

So would not 0x1614 be the address to check on knock events? (Matt?)

Also 0x1610 (the map switch threshhold) seems to be an interesting address!


Yes .. I experienced that the ECU reduces timing on the fly, and eventually utilizes the knock maps.
I also think that Eric mentioned a mini map (3 by 3) which sets the RPM range and knock sensitivity?

I still have the 2 knock sensors from the RB25 in parallel to the Z32 ECU. Possibly I should remove on of the sensors?
RomChip200
 

Posts: 426
Joined: Mon May 11, 2009 7:58 pm
Location: FRANCE

Re: Z32, knock gauge gone

Post by RomChip200 »

FYI, I added some routines in my ECU to switch on the engine warning light in the dash, depending on knock occurrence / car state (idle / gear engaged / gear engaged+throttle). It takes some time to be used to the warning light behaviour but what's important is that it lights up if knock occurs upon acceleration ! Very useful in daily use.

I have other routines for averaging narrow AFR values in a different manner (0x1700/0x1780 tables) to be able to track unwanted lean spots.

Here is the full listing for knock/engine light + special free variables to store occurrence:

Code: Select all


flags		EQU	0x40
flags6		EQU	0x55
flags10		EQU	0x5A
flags8		EQU	0x82
flags5		EQU	0x8B
port6_copy      EQU	0xE0

knock_count     EQU	0x14BD

engine_temp	EQU	0x140C
timing		EQU	0x1443
vq		EQU	0x1453 54
rpm		EQU	0x140A 0B
maf		EQU	0x1408 09
;tp		EQU	0x1417 18
tp1		EQU	0x151F 20
timing_offset2	EQU	0x1614 15
knock_value	EQU	0x1610 11

afr_const24     EQU	0xFEE7
fb_control      EQU	0xFF91 


ram2_checksum	EQU	0x16A0
word_398	EQU	0x16DE DF
ram2_mid2       EQU	0x16A0



; ************ Variables in ram2_checksum region ***************

base		EQU	0x16E8

tp_max		EQU	0x16E8
timing_tp_max	EQU	0x16E9
rpm_tp_max	EQU	0x16EA EB 
temp_tp_max	EQU	0x16EC
temp_max	EQU	0x16ED

kd_tp		EQU	0x16F0      save in case of knock detection (highlighted by timing_offset2)
kd_kvalue	EQU	0x16F1
kd_rpm   	EQU	0x16F2 F3
kd_timing       EQU	0x16F4
kd_temp		EQU	0x16F5



kr_tp           EQU	0x16F8      save in case of knock repetitive (highlighted by knock_value)
kr_kvalue       EQU	0x16F9
kr_rpm   	EQU	0x16FA FB
kr_timing       EQU	0x16FC
kr_temp		EQU	0x16FD


version_save	EQU	0x16FF

; Variables shifted in the memory space not covered by ram2_checksum
kd_count	EQU	0x169C
kr_count	EQU	0x169D
MILstatus	EQU	0x169E
toggle_rpm	EQU	0x169F



begin_var	EQU	base
end_var		EQU	version_save

; ******************************************
		 




main_loop 	EQU	0xC3FE


	org 0x0000
	fcb 0xFF		 dummy

PATCHS

	org 0xC0B3   in reset
	jmp var_reset

	org 0xC0C0     in reset
	jmp var_reset

	org  0xC43F    in main_loop
	nop
	nop
	jsr  test


END_PATCHS

	org 0xFFFF
	fcb 0xFF	dummy, just to reach 0xFFFF size 	




; --------------------------------------------------------------------------------------------------
	org 0xE000 	   for special bin in location #7
var_reset
	sei
	clr tp_max
	clr temp_max
	clr kd_count
	clr kr_count
	cli
	nop
	clr toggle_rpm     for all bins from here
	jmp main_loop		



; --------------------------------------------------------------------------------------------------
	org 0xE200 

test
	tim %1,flags5      1 if rpm >1000rpm ; bit 1 (high octane if 0) of flags6 is dependent of this flag
	bne go_test	
check_version
	sei
	ldaa VERSION+10
	cmpa version_save
	bne reset_all
	cli
	rts
reset_all
	staa version_save
	clra
	ldx #begin_var                       
resetvar
	staa 0,x
        inx
        cpx #end_var	 keep version intact
        bne resetvar
	jmp miloff


go_test
	ldaa rpm+1
	cmpa #240	  > 3000rpm ?
	bhi rpm_toggle
	tst rpm
	beq go_on
rpm_toggle
	ldaa #1
	staa toggle_rpm
go_on
	tst toggle_rpm
	bne no_clear
	clr kd_count	clear for each startup
	clr kr_count
no_clear
	ldaa engine_temp
	cmpa temp_max
	bls go_on2
	staa temp_max
go_on2
	sei
 	ldaa rpm+1
	cmpa #160	  > 2000rpm ?
	bhi tp_test
	tst rpm
	beq go_on3
tp_test
	ldaa tp1
	cmpa tp_max
	bls go_on3
	staa tp_max
	ldd  rpm
	std  rpm_tp_max
	ldaa timing
	staa timing_tp_max
	ldaa engine_temp
	staa temp_tp_max
go_on3
	cli
	ldaa flags6       bit0= throttle (1=released) bit1= high octane (if 0) bit2= gear (1= no gear) 
	anda #%101	       
	cmpa #%000
	beq accel	       gear is engaged and throttle is depressed
	cmpa #%001
	beq gear_engaged       gear is engaged and throttle is fully released
	cmpa #%101
	beq true_idle	       no gear and throttle is fully released

	bra test_miloff       real ECU error can be checked in idle (no gear) and throttle is depressed, if still on ==> ECU error
	
;----------------------------------
true_idle
	clr kd_count   	       throttle released + full idle, we may clear the flag for next time	

	tim %100,flags10       knock map in use ?
	beq milon
	bra test_miloff	

		
;----------------------------------
gear_engaged
	ldaa knock_value       repetitive knock situation ?
	beq test_miloff
	cmpa #252	       knock_value <=252 but still above 248 (knock map threshold)
	bls knock_repetitive
	cmpa #253	       came back to normal situation i.e. >=254 ?
	bhi back_to_normal
	rts
back_to_normal
	clr kr_count
	bra test_miloff
knock_repetitive
	sei
 	tst toggle_rpm
	bne rpm_condition_ok1
	bra milon
rpm_condition_ok1
 	tst kr_count
	beq kr_save
	bra milon
kr_save
	inc kr_count	         allow to track the latest occurence of knock repetitive i.e. <=252
	ldaa tp1
	staa kr_tp
	ldaa knock_value 
	staa kr_kvalue
	ldd rpm
	std kr_rpm
	ldaa timing
	staa kr_timing
	ldaa engine_temp
	staa kr_temp
	bra milon


 ;-----------------------------------------------------------

test_miloff
	tst MILstatus
	bne miloff
	rts	

milon
	ldaa #0x88
	staa MILstatus
     	oim %01000000,port6_copy
	cli
	rts

miloff
	clr MILstatus
	aim %10111111,port6_copy
	cli
	rts

;-----------------------------------------------------------
	
	
;----------------------------------
accel
	ldaa timing_offset2       instant knock situation and then, timing pulled ?
	beq test_miloff	
	cmpa #253	          >= 3° of retard
	bls knock_detected
 	bra test_miloff	          otherwise came back to normal situation i.e. >=254 ?
knock_detected
	sei
 	tst toggle_rpm
	bne rpm_condition_ok2
	bra milon
rpm_condition_ok2
	tst kd_count
	beq kd_save
	bra milon
kd_save
	inc kd_count      allow to track the latest occurence of timing pulled i.e. <=253
	ldaa tp1
	staa kd_tp		   	
	ldaa timing_offset2
	staa kd_kvalue
	ldd rpm
	std kd_rpm
	ldaa timing
	staa kd_timing
	ldaa engine_temp
	staa kd_temp
	bra milon




	org 0xE350      to check potential overlap with the tpu_param_1 table
******************************
VERSION fcc  'KNOCK v14.0_0'


Post Reply