Piton
Junior Member
Posts: 94
|
Post by Piton on Jan 10, 2023 20:27:14 GMT
I'll link delete.
|
|
|
Post by dino2gnt on Jan 10, 2023 22:04:58 GMT
|
|
Piton
Junior Member
Posts: 94
|
Post by Piton on Jan 10, 2023 22:16:24 GMT
There is this firmware in the database, folder DrbData/f0503201.7aa
|
|
|
Post by dino2gnt on Jan 11, 2023 0:21:11 GMT
Hello, multi-table with a constant-value switchover point... Two part throttle fuel, two WOT fuel. Two PT spark, two WOT spark. Neat. Wonder what MAP sensor was in those...
|
|
Piton
Junior Member
Posts: 94
|
Post by Piton on Jan 11, 2023 14:16:44 GMT
|
|
|
Post by invujerry on Jan 11, 2023 14:32:35 GMT
Hello, multi-table with a constant-value switchover point... Two part throttle fuel, two WOT fuel. Two PT spark, two WOT spark. Neat. Wonder what MAP sensor was in those... If I'm not mistaken, it's a 2 bar map sensor, similar/same as the SRT-4/PTGT sensor connector wise, but similar voltage scale as the turbo dodge stuff. Realistically, any 2 bar sensor would work. These sensors are also available at RockAuto for pretty cheap. www.rockauto.com/en/partsearch/?partnum=5033224abwww.rockauto.com/en/partsearch/?partnum=5149056aa
|
|
|
Post by dino2gnt on Apr 12, 2023 17:58:48 GMT
This Stratus code is weird. There's high boost and low boost tables for both part and wide open throttle, each with an input scale that handles half the MAP range, like 0-128 -> 0-255 (low), and 128-256 -> 0-255 (high) but I can't figure out what unit it's in. OBD2 says that the output of PID1-0B is kPa, (and yesm these are MxDM, so their OBD2 compiance is questionable, even though the code is there)
So for the Strat we've got:
ROM:2DAD2 MAPVoltsToAUnit: ; CODE XREF: sub_DEF6-90Ep ROM:2DAD2 ; sub_20A20+7Ap ... ROM:2DAD2 ldab byte_7000 ; 0xFC ROM:2DAD6 mul ROM:2DAD8 addd word_7001 ; 0x34A ROM:2DADC bcc locret_2DAE2 ROM:2DADE ldd #0FFFFh ROM:2DAE2 ROM:2DAE2 locret_2DAE2: ; CODE XREF: MAPVoltsToAUnit+Aj ROM:2DAE2 rts ROM:2DAE2 ; End of function MAPVoltsToAUnit Whereas this function in the 1 bar code is: ROM:2DA0A MangleMAPValue: ; CODE XREF: sub_DED0-91Ap ROM:2DA0A ; SaveFreezeFrame+7Ap ... ROM:2DA0A ldab #0F4h ROM:2DA0C mul ; rD = rA * rB (0xF4 or 244) ROM:2DA0E addd #15DCh ; D += 0x15DC (5596) ROM:2DA12 bcc locret_2DA16 ; If < 32768, go ROM:2DA14 ldaa #0FFh ROM:2DA16 ROM:2DA16 locret_2DA16: ; CODE XREF: MangleMAPValue+8j ROM:2DA16 rts ROM:2DA16 ; End of function MangleMAPValue And shit, I just realized that one returns rD and the other returns rA so now I need to re-read all this code and reevaluate the changes I made in the 1bar ROM to wortk with the 2bar sensor ... :rubberduck:
|
|
|
Post by admin on Apr 12, 2023 18:03:45 GMT
I like being dumb in this thread. Whenever Dino posts it's pure gold!
|
|
|
Post by dino2gnt on Apr 12, 2023 22:02:50 GMT
Yeah, I was in a bit of a hurry when I was typing that out ;-)
Turns out it doesn't matter, because the all the Xrefs in 05032017 for subr 2DAD2 all do staa after the subroutine, so there's no post-processing of the result that I can see. it just doesn't seem to align with a unit I recognize.
I also learned that a 50ms loop reading 14-40 will block the ADC enough to stall the car out or keep it from starting
|
|
|
Post by dino2gnt on Apr 13, 2023 1:26:15 GMT
One thing that I have been struggling with that I could use a second (or third) set of eyes on is MAP maximum fuel cut. This is something we've solved for decades with a voltage clamp or a check value, but that feels like a waste when I have the code in front of me and can modify it.... Originally, I had thought that the subroutine for calculating MAP vacuum was involved, when it checks upper and lower limits, and switches to a failsafe Alpha-N (TPS & RPM-based) calc for "limp in":
ROM:2DADE CALC_MAP_VAC: ; CODE XREF: ROM:AA02p ROM:2DADE ; CALC_MAP_VACj ROM:2DADE brclr ADCSTAT_CCF, Z, #1, CALC_MAP_VAC ROM:2DAE4 ldaa ADC_RJURR0 ROM:2DAE8 staa MAP_VOLTS_ADC, Z ROM:2DAEC ldab RPM_word ROM:2DAF0 cmpb #6Eh ; 3500 RPM ROM:2DAF2 bcc loc_2DB0E ROM:2DAF4 cmpb #13h ; 600 RPM ROM:2DAF6 bcs loc_2DB0E ROM:2DAF8 ldab AdjustedTPS, Z ROM:2DAFC cmpb byte_4AB0 ; Throttle threshold - MAP electrical check 0x3D ROM:2DB00 bcc loc_2DB0E ROM:2DB02 cmpa MAP_MAX ; 0xFD if rA is greater than MAX_MAP ... ROM:2DB06 bcc loc_2DB14 ROM:2DB08 cmpa MAP_MIN ; 0x02 ROM:2DB0C bcs loc_2DB14 ROM:2DB0E ROM:2DB0E loc_2DB0E: ; CODE XREF: CALC_MAP_VAC+14j ROM:2DB0E ; CALC_MAP_VAC+18j ... ROM:2DB0E brclr unk_6B4, Z, #20h, loc_2DB1A ; Set if MAP or BARO errors are present ROM:2DB14 ROM:2DB14 loc_2DB14: ; CODE XREF: CALC_MAP_VAC+28j ROM:2DB14 ; CALC_MAP_VAC+2Ej ROM:2DB14 jsr TPS_RPM_TO_MAP ROM:2DB18 bra loc_2DB26 ROM:2DB1A ; ---------------------------------------------------------------------------
Thus, if MAP voltage exceeds 0xFD, we throw out the value and calculate a new value based on other inputs. I assumed this value was off enough at maximum that the transition from MAP to limp-in MAP was somewhat violent; fuel cut at the boost transition is not smooth. You can also see that the function checks for some error flags at 0xF86B4 which are set elsewhere for MAP and BARO errors. However, after rewriting this subroutine so that it will never switch to Alpha-N, I'm still seeing fuel pulled back in a very narrow range near atmosphere and I'm not sure where it's coming from. Here's what I'm running today:
ROM:2DADE sub_2DADE: ; CODE XREF: ROM:AA02p ROM:2DADE ; sub_2DADEj ROM:2DADE brclr ADCSTAT_L, #1, sub_2DADE ROM:2DAE4 ldaa RJURR0 ROM:2DAE8 staa MAP_Volts ROM:2DAEC ldab RPM ROM:2DAF0 cmpb #0FFh ; Any RPM ROM:2DAF2 bcc loc_2DB1A ROM:2DAF4 cmpb #13h ; Well, any RPM over 600. ROM:2DAF6 bcs loc_2DB1A ROM:2DAF8 ldab AdjustedTPS ROM:2DAFC cmpb byte_4AB0 ; Throttle threshold 0x16 (almost any throttle position) ROM:2DB00 bcc loc_2DB1A ROM:2DB02 cmpa byte_4AAC ; MAP max ROM:2DB06 bcc loc_2DB16 ROM:2DB08 cmpa byte_4AAB ; MAP min ROM:2DB0C bcs loc_2DB16 ROM:2DB0E brclr unk_6B4, Z, #20h, loc_2DB14 ; If these are set, so what? branch zero. ROM:2DB14 ROM:2DB14 loc_2DB14: ; CODE XREF: sub_2DADE+30j ROM:2DB14 bra loc_2DB1A ROM:2DB16 ; --------------------------------------------------------------------------- ROM:2DB16 ROM:2DB16 loc_2DB16: ; CODE XREF: sub_2DADE+28j ROM:2DB16 ; sub_2DADE+2Ej ROM:2DB16 bset unk_C30, Z, #40h ; Set the Open Loop flag instead of being stupid ROM:2DB1A ROM:2DB1A loc_2DB1A: ; CODE XREF: sub_2DADE+14j
I've gone far enough as to disable / remove the error code masks for MAP high / MAP low / BARO out of range (which should also prevent the bits in 0xF86B4 from being set), and I've also tried NOP'ing the jump to the subroutine at 0x21E08 which contains all the BARO range checks. (the car did not like this at all, so I reverted it).
The PT fuel map is additionally fattened up in the 0-boost area to make sure there's plenty of fuel in boost (and there is) but if I hover right near 0, I can see on the wideband that the ECU pulls way back on the fuel for a split second until the MAP either moves higher or lower than the zero spot. It's fine when the MAP is maxed out.
I've logged the MAP voltage ADC value and I don't see anything weird; there's no drops in the 8-bit value, nor in the calculated vacuum value when the fuel drops out. Same with the output of the base fuel table lookup at 0x11F40 (0xF87E2 in RAM), so it's not something from the table as far as I can see. I have _not_ logged calculated IPW, though, but I am planning to.
This is one of those long standing annoyances about the FJ SBEC3 that I am trying to solve, and I'd rather not have to take the long way around (the long way around being me rescaling everything to work with a 2-bar / SRT4 MAP sensor to push the high end of the map far enough out that I don't run into it, which I have also started working on...)
Would love to hear anyone else's thoughts on it.
|
|
|
Post by invujerry on Apr 19, 2023 17:52:12 GMT
The only input I have on that, is that they didn't do anything similar on the 95 ecu's. You could run no map clamp and it would throw a code, but not fuel cut. However, on the turbo-dodge ECU's, when you went over 14 psi (2 bar) it would hit a super violent fuel cut. So bad it would break parts on some cars. I also haven't experienced fuel cut in an SRT-4 even when hitting 20PSI on a stock 2 bar map, it just keeps guessing and running lean.
|
|
|
Post by dino2gnt on Apr 19, 2023 18:05:25 GMT
Yeah, my '95 2GNT wouldn't even throw a code, but the FCC ECU in it is a different MCU and firmware from everything else...
I'm still trying to track it down, I took the voltage clamp off my '99 a few months ago and have been slowly fighting it out with the fuel cut. It's just a slight lean hiccup now with the code I posted above but I want it completely gone, preferably with less effort than rescaling everything for an SRT4 MAP sensor.
I've been logging the high byte of the IPW along with several other parms, trying to correlate the data to a hiccup to determine if the ECU is actively reducing injector pulsewidth or if there's something else going on. So far I haven't found anything definitive, but I haven't finished going through the latest logs.
|
|
|
Post by invujerry on Apr 19, 2023 22:33:13 GMT
From what I remember it absolutely cuts voltage like RPM limiter. It’s really weird that it even does that.
I think rescaling for a 2 bar would be helpful, until you want over 14psi :/.
I’m really racking my brain trying to figure out how to make use of that turbo stratus cal for my own uses.
|
|