Instructions to change fuel maps on 14CUX Griffith, Chimaera

Instructions to change fuel maps on 14CUX Griffith, Chimaera

Author
Discussion

rangerovering

8 posts

115 months

Wednesday 8th September 2021
quotequote all
Steve,

Many thanks for replying, I have memories of the 20AM not being suitable before but couldn't remember why.

I will PM Joolz and see what he says.

I picked up a Jag 5AM on ebay, same part number etc but when I looked at it last night there is no adjustment screw in the casting for the CO trim! Does anyone know what the Jag system was like? Apparently the 1990-1992 cars have the CO screw in place on the MAF but this '92 one doesn't...

Cheers

CGCobra

49 posts

93 months

Thursday 9th September 2021
quotequote all
Hi all

First of all apologies for being off-line for a while, been a busy time recently. I see there is a page or two of interesting looking posts to have a look through since I was last around.

Secondly, apologies for this post being a bit "off topic" but it does kind of fit in and this is the most knowledgeable place I know so most likely to get an answer.

What I'm looking for is some software which will let me veiw the binary content of a file, such as the bin files used to create the PROM.
I've so far been looking at a bin file content as hexadecimal in Notepad++ but now I actually want to see the "1"s and "0"s.ideally with each byte displayed on a separed line, or possibly with several bytes on each line separated by a space or some other character.
I've had a look on the Internet but not found anything suitable.

Anyone got any suggestions?

davep

1,143 posts

284 months

Friday 10th September 2021
quotequote all
Have you tried HxD with its Data inspector feature selected:


CGCobra

49 posts

93 months

Saturday 11th September 2021
quotequote all
Hi Dave

Thanks for suggesting that, unfortunately it's not quite what I'm after (unless I didn't understand correctly - but I will investigate), that is displaying the content as a hexadecimal listing, what I'm looking for is a listing of the bytes in binary code so I can demonstrate the contents of a computer memory at its lowest level.
Would actually be great if I could show the binary and the hex side by side similar to how that shows the Decoded Text alongside the hexadecimal listing.

davep

1,143 posts

284 months

Saturday 11th September 2021
quotequote all
CGCobra said:
Hi Dave

Thanks for suggesting that, unfortunately it's not quite what I'm after (unless I didn't understand correctly - but I will investigate), that is displaying the content as a hexadecimal listing, what I'm looking for is a listing of the bytes in binary code so I can demonstrate the contents of a computer memory at its lowest level.
Would actually be great if I could show the binary and the hex side by side similar to how that shows the Decoded Text alongside the hexadecimal listing.
CG look at the screen more closely. When you step through the hex code field on the left the binary value is shown in the highlighted binary field in the Data inspector. The Data inspector also shows the instruction details when applicable.

The way I read a PROM is to have a number of active windows displayed: HxD with Data inspector selected as shown, an annotated listing of the Assembler code (a single MS Word file containing concatenated build files) and the Motorola Instruction reference manual. Using this method when evaluating the code in detail you can quickly work out the Op Code binary values in the respective accumulator, register or counter.

CGCobra

49 posts

93 months

Sunday 12th September 2021
quotequote all
davep said:
CG look at the screen more closely. When you step through the hex code field on the left the binary value is shown in the highlighted binary field in the Data inspector. The Data inspector also shows the instruction details when applicable.

The way I read a PROM is to have a number of active windows displayed: HxD with Data inspector selected as shown, an annotated listing of the Assembler code (a single MS Word file containing concatenated build files) and the Motorola Instruction reference manual. Using this method when evaluating the code in detail you can quickly work out the Op Code binary values in the respective accumulator, register or counter.
Thanks Dave
I see what you mean. That may do the job for me although what I was hoping for was to see the binary as a listing similar to the way this is showing the Hex' codes but I can probably use this in a simlar way.

davep

1,143 posts

284 months

Monday 13th September 2021
quotequote all
CG if you do intend using HxD to analyse 14CUX PROMs note that, as standard, the Data inspector tool only supports Intel x86 disassembly. Since 14CUX uses the Motorola M6803 instruction set it would be really useful to have Motorola MC6800 supported as well. Help is at hand with this Disassembly plug-in, full details here: https://github.com/DigicoolThings/HxD_DasmDataInsp...

Here's an example showing all CPU definition plug-in files installed in HxD, with MC6800 highlighted:



Edited by davep on Monday 13th September 13:55

spitfire4v8

3,991 posts

181 months

Tuesday 26th April 2022
quotequote all
Been a while since this topic was discussed so here's another post just to get the clever brains engaged again smile

Lambda control limits for load and revs.

I have a cat car in which is very affected by the lambda trim cycling rich/weak. You can feel the loss of power as the mixture goes weak.
The effect is slight at light throttles, but as load is applied the effect gets more exagerated. I'm about to go through the map and optimise it, but the trimming being done in absolute terms isnt great (cycling around the zero point) so I'm not hopeful that a straight remap will sort it .. so ..

What I'd like to do is to try and see if I can reduce the point at which the ecu comes out of lambda control. On full throttle and over 3000 odd rpm it all smooths out, come back to lambda control areas of the map and the effect of the rich/weak trimming returns. The effect is like the driver increasing and decreasing their foot on the throttle .. not a misfire .. just an increase and decrease in power as the mixture cycles. I remember going to the factory with a similar car back in the HHC days but other than fitting a chip for a japan spec car (with presumably tighter controlled fuelling) there wasn't anything JR himself could do easily.

Is it a configurable parameter as discussed in this article which came I think initially from John Ravenscroft and printed in Sprint magazine? Or is it somehow held remote from the prom and therefore not changeable? The article suggests correct ECU rather than prom for the change. See here:

"Full throttle operation: The throttle must be hard up against the stop to enable full throttle enrichment, corresponding to a voltage 4.6V on the throttle potentiometer, otherwise the engine will run lean by 5-10% depending on RPM. NB. A few engines were produced, or converted to run with large throttle diameters (usually 4.3 to 5.OL). It is very important that these engines run the correct ECU which will enable full load enrichment at 3.6V"

I'm assuming that the same point is used for disabling lambda control AND applying full load enrichment.


Similarly there must be a parameter for the revs at which lambda control is disabled.

Has anyone found these locations ?

cheers all and welcome back to the thread! biggrin


blitzracing

6,387 posts

220 months

Wednesday 27th April 2022
quotequote all
Confused. The lambda cycling is way too fast to be felt as power on and off especially at higher gas flow rates if it's still cycling around the mid point? Is it just old probes that have become less responsive ?

spitfire4v8

3,991 posts

181 months

Wednesday 27th April 2022
quotequote all
Sadly not .. has had pretty much everything swapped in and back out again so far incl lambdas , ecu , all ht side, etc etc... and i can watch the outputs go 0volts when the power drops off (presumably worst when both probes have gone zero - i only have one DVM but can see whichever probe it;s in go zero volts when the power drops off ) but also running the car on map2 with no lambda feedback is smooth.

It's a catted car though so don't want to send it out on map2 .. but as the effect is only really apparent under larger throttle openings I am hoping I can run all the light throttle under lambda control, but switch it out for when the effect becomes more of an issue at larger throttles.

How fast is lambda switching at say over 2000rpm mark? I've been out in it again this morning to try and work out just what sort of cycling time I have on the effect and it's actually around 2-3 seconds and very annoying - just as if you are pressing and releasing the throttle a good half inch of movement so quite a power variation. I've only got one voltmeter but I'm guessing the 2-3 seconds might be a phase thing when both probes happen to come in sync going weak/rich .. maybe the lambda cycling is too fast per lambda but when they come in phase the effect is every 2-3seconds. just guessing. But ...

Like I say .. on map2 it's smooth which kind of discounts anything physical on the car really ?


Edited by spitfire4v8 on Wednesday 27th April 09:48


Edited by spitfire4v8 on Wednesday 27th April 09:49

davep

1,143 posts

284 months

Wednesday 27th April 2022
quotequote all
Jools, what happens when you swap the EPROM over with a known good one?

The value I think you are interested in is stored at address offset 0xC0A7.

FYI, here's some theory:

The primary conditions that force Open loop fueling are based on the following:

(Condition byte X0087 has bits set, except 6 and 2, to force open loop) if:

MAF > 2.0 Volts AND Coolant Temp < 50 degrees C
MAF fault occurs
Throttle pot is > 91% (approx 4.6 Volts)
RPM > 3400 (value stored at 0xC0A7)

(bits_205B.2 if set, open loop is forced) when:

1) Road speed is > 4 KPH
AND
2) Bit X0086.7 is set
AND
3) Coolant temp is cooler than 83 deg C

(bits_205B.5 if set, open loop is forced) when:

1) Bit X0086.7 is set
AND
2) Bit X008A.5 is zero (park, neutral or manual, not drive)
AND
3) Road speed < 4 KPH
AND
4) Coolant temp is cooler than 40 deg C

More bits that force open loop:

X0085.7 Low engine RPM (less than 505 RPM, or 375 RPM for op-pride cold weather chip)

bits_0089.7 Road speed low

bits_008C.3 (todo, bit bits_008C.2 seems to correlate to the open/closed condition)

X008A.6 Set at startup, timeout from 3rd row of coolant table (1 Hz dwn_cnt, also fueling component)

Plus a magic byte: 0xC099 Default is zero, set to non-zero to force open loop.

spitfire4v8

3,991 posts

181 months

Thursday 28th April 2022
quotequote all
davep said:
Throttle pot is > 91% (approx 4.6 Volts)
RPM > 3400 (value stored at 0xC0A7)
I do need to investigate this bit thanks for the info .. particularly the first line part that's the bit I'm really interested in, the throttle threshold.

In a strange twist to this episode though, a call from the current owner confirms the car was decatted by the previous owner .. so it's now running map 2 and happy as anything.

But I do need to investigate the throttle threshold as that will come in useful in the future )not being a fan of holding lambda 1 through so much of the large load sites anyway ..

cheers dave

PS i really didn't understand the rest of the info .. so I bow to the amazing tech knowledge of you guys in that area thumbup it's pretty much a foreign language to me. Ive only just got my head around counting in base 16 haha

Discoveryunlimited

3 posts

45 months

Thursday 6th October 2022
quotequote all
Long time follower of this forum, amazed at the work that has been done with the 14CUX.

Currently running it on a 4.8L Rover motor in a Range Rover classic. Have done the AFM upgrade to the Bosch 0 280 217 532. Running EV6 injectors with the 4 port spray, with the fuel rail now at 3.5bar for the injectors. Have also upgraded the plenum to the 4.6L top used in the later model P38 Gems. The top was the early one with the 180 count stepper motor. This one has finally packed in so having to now upgrade to a 200 count stepper motor, this of course means to ECU needs to be told to function stepper motor routines based of 200 step counts rather than 180.


So I have been back into Dan and Colin's rebuild project, I have been looking at stepperMtr2.asm and have found a reference of B4 (180 Dec) at line 321 and changed this to C8 (200 Dec) as below:

.LF796 subd #$80B4
bcs .LF79F

ldaa #$B4 ; $B4 is 180 decimal (Original) - Changed to C8 is 200 decimal for GEMS 200
bra .LF7A2

Then I have been into idleControl.asm, there are a few references in here:

First and second reference at lines 671 & 677 respectively as below:

.LD999 ldaa $00CC
beq .LD9D1
ldaa bits_2047
bita #$04 ; test bits_2047.2 (VSS fail bit, normally 0)
beq .LD9CB
ldaa iacvEctValue ; calc value based on coolant temp (100 -> 160)
adda iacvObsolete ; nothing changes this
cmpa #$B4 ; $B4 = 180 dec (orginal) - Changed to C8 for GEMs = 200 Steps
bcc .LD9B2
adda #$4B ; $4B = 75 dec
cmpa #$B5
bcs .LD9B4

.LD9B2 ldaa #$B4 ; $B4 = 180 dec (orginial) - Changed to C8 for GEMs = 200 Steps

.LD9B4 suba iacPosition
beq .LD9C7
bcc .LD9C2
ldaa #$01
staa $00CD
staa iacMotorStepCount
bra .LD9D1


Third and fourth reference at lines 818 and 820 respectively as below:

.LDA6C staa iacvDriveValue ; SM drive value
anda #$30 ; bits 5:4 are SM drive bits
staa $00CA ; store at 00CA
ldaa port1data ; P1.5 and P1.4 are SM drive signals
anda #$CF ; mask 5:4 to zero
oraa $00CA ; OR in new drive bits
staa port1data ; <-- drive stepper mtr
cmpb #$B4 ; compare IAC position with limit of 180 dec (Orginial) - Changed to C8 = 200 for GEMS
bcs .LDA80
ldab #$B4 ; if over, clip value to 180 (Original) - Changed to C8 = 200 for GEMS

.LDA80 cmpb #$00 ; compare IAC position with zero
bne .LDA86
ldab #$01 ; if zero, limit it to 1

.LDA86 stab iacPosition
ldaa iacvWorkingValue ; (4 of 5)
beq .LDA93 ;
bmi .LDA90 ;


So overall I have found 5 references to 180 that I have changed to 200. I have seen on here that the change has been done but I couldn't find what had been changed.

I have loaded into the car using running the Moates and it appears to be working well. I had to also adjust the coolant table moving everything up 20 steps, checked with stevesprints brilliant coolant simulator. Would be great to compare notes with someone who has done this change to the 200 count stepper motor and see if I have missed anything.

stevesprint

Original Poster:

1,114 posts

179 months

Sunday 16th October 2022
quotequote all
Thanks for your kind words and interest.

Well done, excellent especially as you’ve found more stepper 180 counts than I did a few years ago for an overseas request but still ran ok with a GEMs plenum.

The stepper is also fully re-opened during shutdown in shutDown.asm line 120 but interestingly it already set to re-open C8 = 200 steps which I increased to DC = 220 but sounds like you don’t need to and is only a precaution.

Good Luck, Steve

Discoveryunlimited

3 posts

45 months

Monday 17th October 2022
quotequote all
Thanks for the reply Steve. I did miss the one in shutDown.asm I will have a look at into that.

I did also see that you had been playing with the fuel temperature multiplier and had built a tool like the coolant one, any chance that one is available anywhere? I would like to play with that table a little but have not looked at it much until now with the stepper motor change. I feel the car is a little to rich at start up so would like to trim that out a bit.

I have also been starting thinking about the maf linearization, using the bosch MAF the voltage saturates much quicker for a given mass airflow which the 14CUX interprets as higher loads which is not correct. I spent a lot of time hunting for voltage vs mass airflow for MAFs and found a sheet in the BMW forums which has a stack (I have these in an excel sheet, if anyone wants it send me a message happy to pass it on), while the 0 280 217 532 isn't in there, there is a profile for a 0 280 217 533 which is the same diameter and I believe the same sensor in the unit, so I am making the dangerous assumption the chart profile is the same.

From this this the options I have been considering are:
1. Find a MAF that has an airflow profile that closer matches the 5AM - Path of least resistance and there is one, but has a 90mm inlet.
2. Possibly change the linearization that 14CUX performs......much much easier said than done I suspect, but would be most ideal.
3. Something like an arduino nano that maps Vin to a Vout given that we have the curves for both MAF's, not so happy with this as it does add an extra fail point to the system.

Interested to hear other people thoughts on this.

stevesprint

Original Poster:

1,114 posts

179 months

Sunday 23rd October 2022
quotequote all
Discoveryunlimited

Sorry for the delayed reply, I’ve been crazy busy in the garage lifting my Griff body and stripping the chassis for a full blasting, zinc and powered coating.

Maybe you are referring to the coolant temperature multiplier table at C45B or C791, however if your startup is rich I suggest you concentrate on reducing the 12 x 3 cranking fuelling table in the 5 maps.
for example
; 130 102 95 85 56 42 22 7 -2 -10 -14 -16 Coolant Temp in Deg C
DB $00,$12,$1B,$25,$47,$61,$90,$B0,$C8,$DA,$E4,$E8 ; <-- coolant temp sensor reading (low is hot, high is cold)
DB $0B,$0A,$07,$0D,$18,$18,$25,$30,$4E,$59,$6D,$75 ; <-- cranking fueling value above zero deg F (stored in X009B)
DB $1C,$0D,$06,$0A,$10,$12,$14,$1A,$2C,$31,$39,$44 ; <-- time fueling component, 1 Hz countdown (stored in X009C)


You’re right the Bosch MAF does saturates much quicker which is not idea, however I’m sure you’ve read I’ve been successfully using the Bosch MAF for several years now including 3 trackdays and found its output far more consistent with very high engine bay temperatures as its the electronics remain cool inside the intake airflow.


1. What size is your engine? A 4 litre will not max out a MAF with 90mm inlet and therefore will not reach the bottom of the fuel table plus the idle air speed will be too slow to measure accurately. The 0 280 217 532 Disc 2 4L you mention has the same replaceable sensor cartridge as the 0280 218 010 - 4.6L P38 MAF that I’m using and luckily is also used on BMW 5 & 7 series of the same era.


2. According to Dan The MAF behaviour is very difficult to model and based on King's Law for hotwire annemometers using a ‘4th order linearization polynomial equation’ & is a very impressive bit of coding for an ancient 8-bit processor without a math co-processor.

Dan also said
“The AFM readings can be erratic. The 14CUX code seems to deal with this by keeping 2 readings, a high reading and a low reading and averaging or summing them in the code. More modern systems have Helmholtz canisters and I've wondered whether the 14CUX system might benefit from one”. Also the AFM gauze is very important & create a laminar air flow to help reduce the erratic readings.

Dan once suggested a look up table would be more flexible, save MPU clock cycles in the interrupt and less hard to implement but sadly is well beyond my limited programing abilities.

As a result I’m using the Bosch MAF with the same standard MAF maths/programmed equation but leaned off the main fuel table where the MAF voltage saturates quicker and also had to leaned off the throttle acceleration table at C3FB & C731, plus I tweaked the following row/load offset and multiplier

C1C7
- AFM Row Table Offset, shifts the whole table uniformly up/down
- increasing deceases active row
- LR/TVR = $001E Steve Bosch = $0036

C483 Map2 & C7B9 Map5
- Row Scalar/Multipler increases/decreases the usable range of the table
- Increasing uses more rows
- TVR 5AM 4.3L & 500L = $91, Steve Bosch = $EF

With any luck you maybe able to workout the other 3 MAF linearization equation coefficients/tuning parameters at
C1C3
C1C5
C1C9


3. You really don’t need a piggy back voltage converter like an Arduino Nano as I’ve proved we have a good workaround that’s more consistent and reliable but unfortunately does require a full remap.



I personally think it would be really cool to ditch the MAF for a MAP sensor and use the tune resistor input for air temperature input, but sadly that’s also well beyond my very limited programing capabilities.


Please let us know how it goes.
Cheers, Steve


Daryl357

25 posts

159 months

Monday 21st November 2022
quotequote all
A wealth of information in this thread ! I'm coming from the Bosch ME7 world so not entirely new to this but have a couple of questions.

I have a rather early '93 Chimaera 430 and the ECU has a 29/90 date code. Below are the pictures. Looks like 'Griffith' written on the masking tape.




The tune is R2305 / 1800 and the chip looks like it's had a hand soldered socket fitted. I understand from reading this thread that if the PCB has the modwire and the MVA5033 chip APR coded then this is an early ECU. What then is the latest software update I can install ?

I can upload a copy of my .bin file if anyone wants to add it to the records, I think it could be of interest as the car was one of the TVR press cars so could have had some factory tuning perhaps?

spitfire4v8

3,991 posts

181 months

Tuesday 22nd November 2022
quotequote all
stevesprint said:
I personally think it would be really cool to ditch the MAF for a MAP sensor and use the tune resistor input for air temperature input,
Steve this has been a plan of mine for quite some time but I too don't know what to do about an air temp correction .. though in the uk does it actually require one bearing in mind most UK tvr owners won't be driving in arctic or sahara conditions ...

davep

1,143 posts

284 months

Tuesday 22nd November 2022
quotequote all
Daryl357 said:
... I have a rather early '93 Chimaera 430 and the ECU has a 29/90 date code

... Looks like 'Griffith' written on the masking tape ...

... The tune is R2305 / 1800 ...
This is puzzling ... R2305 is an early Land Rover tune, which dates prior to 1990. The earliest TVR tune seen so far for the Griffith/Chimaera is R2422, used from 1992 onwards. What fuel map is your ECU currently running with?

Given the date information, it could be that TVR took a very, very early Griffith ECU that was laying around and installed it on your car for fine tuning/tweaking purposes. It would be interesting to see how the key parameter values are coded.

SteveSprint's remap site has plenty of updated bins to download and try. If it was me I'd get a more up to date 14CUX unit first.

Good luck.

Edited by davep on Tuesday 22 November 13:18

Daryl357

25 posts

159 months

Tuesday 22nd November 2022
quotequote all
davep said:
This is puzzling ... R2305 is an early Land Rover tune, which dates prior to 1990. The earliest TVR tune seen so far for the Griffith/Chimaera is R2422, used from 1992 onwards. What fuel map is your ECU currently running with?

Edited by davep on Tuesday 22 November 13:18
It's got a white resistor fitted and running Tune 5.

I did a comparision with the original LR_R2242_3.9_1991 map and there is not much different which surprises me. Only the 'temperature fuel multiplier' map has changed.



I also managed to take the car out up to the limiter and it's limiting at 5400 RPM, again that's standard LR right ? I'm certainly interested in finding a later ECU.