DIY PROMDo It Yourself PROM chip burning help. No PROM begging. No PROMs for sale. No commercial exchange. Not a referral service.
Welcome to ThirdGen.org!
Welcome to ThirdGen.org.
You are currently viewing our forum as a guest, which gives you limited access to view most discussions and access our other features. By joining our community, at no cost, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is free, fast and simple, join the ThirdGen.org community today!
I don't think you have to modify both. You only need to modify the second 0x40. From the AUJP code:
brclr *L00FE,#0x80,LC26B ; if NOT in park/neutral then go to LC26B
addb L862E ; add in the park/neutral RPM value
bra LC271 ; go to LC271
LC26B: cmpb #0x40 ; not in prk/ntrl, ck if RPM < 800
bls LC271 ; if RPM greater than or equal 800
ldab #0x40 ; then limit RPM to 800 rpm
LC271: brset *L00FD,#0x80,LC278
You only need to change address LC270 from 0x40 to your desired value. (e.g., 0x50 = 1000rpm)
Thanks guys. So the idle speed limiter is just that, it will not set the idle speed, just "cap" it. Was thinking about why GM put this in the code.....
I think is just like a carb's fast idle. The carb will have a raised idle when cold, tap the gas once and the high speed idle is reduced(so when you put the trans in gear it doesn't "clunk"). Same thing for the ECM, basically..
Actully if you only change LC26B the limiter would be completly eliminated. The limiting value at LC270 would never be loaded.
Changing the second value only would load the "Higher" limiter of what ever you set IF the value exceeded 800.
Changing both would be the best way. That way the branch to the limit only happens IF you exceed the limit set.
The issue I'm thinking of is what happens after this value is set?
Can the lookups deal with a value higher than 800 in the tables?
I looked a little but got distracted with work.
(I'll look some more later)
On second thought. You are correct.....change both values.
The code checks against the RPM limit, and uses the desired clamp RPM value as the new RPM. Yes, change both values............
As an example, Suppose only the LC270 value is changed to 1000rpm. suppose the engine rpm is 1200 rpm is park, the driver switch to drive and the rpm drops to 900rpm.....which exceeds 800 RPM.........and then 1000 rpm is used as the new RPM.......but the real engine rpm is 900rpm.
Overall, change both values.
The table can go above 800 rpm. I believe this code was added so that you wouldn't get run away idle speeds.....safety first I guess.
Yes, The $50 would equal 1000 rpm max value and would load the second $50 if your idle exceeds 1000.
I still have not looked into the subsequent table lookups to see if there is any effect except going to the limit value (if they are setup to max at 800)
I Still need to do that check.
Edited to fix the values (I forgot it was half)
$50 would be 1000 RPM.
Tested it and it worked perfect. For some reason my car has a problem idling at 800rpms right now(at this point I'm suspecting the plugs). At any rate, I wanted to raise the idle anyways. Thanks for the help!
Originally posted by junkcltr I believe this code was added so that you wouldn't get run away idle speeds.....safety first I guess.
Or just an absolute fail safe since such large max IAC counts can be commanded. Which really aren't needed anyway, for a well tuned, and maintained vehicle, IMO.
I believe it was put there by GM to limit "creeping" when in gear with an automatic. In places with a cold climate during winter (like how it can get in most of Canada), without the 800 rpm limit when in Drive, the engine typically idles well over 1,000 rpm when started for the first few minutes before the engine gets fully warmed. It can take over 5 minutes in typcial Canadian winters for the engine to warm up sufficiently so the stock idle tables would give a 800 rpm (or less) reading.
when you look at the stock stall speed of the factory converters being 1800 rpm the limit may have been imposed to keep from overheating the transmission fluid.
Originally posted by JP86SS Actully if you only change LC26B the limiter would be completly eliminated. The limiting value at LC270 would never be loaded.
Changing the second value only would load the "Higher" limiter of what ever you set IF the value exceeded 800.
Changing both would be the best way. That way the branch to the limit only happens IF you exceed the limit set.
The issue I'm thinking of is what happens after this value is set?
Can the lookups deal with a value higher than 800 in the tables?
I looked a little but got distracted with work.
(I'll look some more later)
Just as an idea, how about figuring out how to remove the routine?. While it's neat just editing it to be OK, why not remove it, and then eventually, after repeatedly making changes that remove the unused code, maybe generate something, *new*.
Originally posted by Grumpy Just as an idea, how about figuring out how to remove the routine?. While it's neat just editing it to be OK, why not remove it, and then eventually, after repeatedly making changes that remove the unused code, maybe generate something, *new*.
Long term plans of course!
baby steps... baby steps...
Its all in the theory of evolution. (trying to keep the theory part at bay)
Originally posted by Grumpy Just as an idea, how about figuring out how to remove the routine?. While it's neat just editing it to be OK, why not remove it, and then eventually, after repeatedly making changes that remove the unused code, maybe generate something, *new*.
Not sure if that would be a good thing. My big cammed 406 likes to idle higher than stock when cold. Without an idle speed limiter (in gear), cold start would be a pita when going from park to drive/reverse. It seems that all auto calibrations would have this routine(every ecm). What do you think?
I'm going to assume two thing and correct me if I'm wrong. 1)no manual bins have/use this code. 2) the AUJP will ignore this routine when the manual bit is selected...
You could also just change the first line you want gone to BRA to wherever you want it to pick back up (although NOPs would be cleaner.) Doing it's the easy part....figuring out what you can get rid of without compromising other parts of the code is the problem.
A quick glance at the IAC routine in the ANHT hack showed no such limiter.
LC250: pshx ; CRef: $C24B
pshx
pshx
pshx
tsy
bclr L00FE,#$20 ; CLR b5, PID CMD STEP ACTIVE (IAC Md Wd #2)
ldaa L005D ; FILTERED COOLANT TEMP
ldx #$8632 ; IAC CMD SPEED vs COOL TABLE
jsr LE3D8 ; 2D LOOK UP, NO OFF SET (Is LE3D0 in ANHT)
tab ; Moves the contents of A to B (A stays same)
brclr L00FE,#$80,LC26B ; BR IF NOT b7, PK/NEUT, 1 = NEUT
; (IAC Md Wd #2)
; ... else
addb L862E ; 100 RPM ADDED IF IN PK/NEUT
bra LC271 ; BRANCH ALWAYS
; Code in ANHT changes from here (below is ANHT code)
; -----------------------------------------------------------------------------
;LC269: BRSET L00FD,#$80,LC270 ; BR IF AC STATUS OFF
; ADDB $8630 ; 12.5 RPM ADDED IF A/C ON
;LC270: BRCLR L003A,#8,LC27E ; HOT RE-START RETARD OFF
;-------------------------------------------------------------------------------
;
; AUJP Code
LC26B: cmpb #$40 ; VAL = 64, 800 RPM ; CRef: $C262
bls LC271 ; BR IF Less Than 64, (800 RPM)
; ... else
ldab #$40 ; VAL = 64, 800 RPM
LC271: brset L00FD,#$80,LC278 ; BR IF AC STATUS OFF (IAC MODE WD) ; CRef: $C269,$C26D
; ...else
addb L8630 ; 12.5 RPM ADDED IF A/C ON
LC278: brclr L003A,#$08,LC286 ; HOT RE-START RETARD OFF ; CRef: $C271
;--------------------------------------------------------------------------------
; Code in ANHT resumes normal here and matches AUJP
ldaa L0063 ; INV A/D MAT
ldx #$8673 ; HOT RESTART CMD SPEED vs MAT TBL
jsr LE3D8 ; 2D LOOK UP, NO OFF SET (Is LE3D0 in ANHT)
aba ; ADD B to A
tab ; Moves the contents of A to B (A stays same)
LC286: addb L01B5 ; DIFF DESIRED RPM FOR LOW BATTERY ; CRef: $C278
;-------------------------------------------------------------------------------------
I think it pasted kid of ugly but the details are there of where the code is different between the two.
Originally posted by 11sORbust Thanks guys. So the idle speed limiter is just that, it will not set the idle speed, just "cap" it. Was thinking about why GM put this in the code.....
I think is just like a carb's fast idle. The carb will have a raised idle when cold, tap the gas once and the high speed idle is reduced(so when you put the trans in gear it doesn't "clunk"). Same thing for the ECM, basically..
If this is the case, where is the location to change the idle speed? I attempted to change the code last night (as per this post) to get mine to idle lower but had no luck. My 383 HSR is idling at 900 and in BLM cell 9. I need to get the RPM's down and KPA lower so it will idle in a lower BLM cell. I'm using S_AUJP.ccp.v2. Thanks.
This is the Idle speed Vs Temp Table
It will adjust idle for "In Gear" only.
There are a few adders that go in when not in gear that make it jump up 100 or so RPM and more if A/C is on.
This will get "capped" by the hardcoded 800 RPM limit if not changed but since you are trying to go lower it don't come into play.
Jp