I've read this as interpreted by many different people, and I've read the original service manual version, but here's the basics from DennisL (Not me) posted on the "old board" 4 years ago. This isn't your chip, but it's exactly how the ECM and IAC work. I had a new '88 L98 IROC back when I was learning the ways of the Buick Turbo V6 from the wrong side lol (meaning I didn't have one), and the L98 had an idle surge after I ported the heads and put a cam in it. Took me and several others 6 months to guesstimate the car might have a coolant temp sensor reading on the high side. Comparing a coolant thermometer to the Tech 1 readings and the in car "gauge" from cold start to warmed up led to that guess. Changed it out and fixed the problem.
I'm not suggesting that's what your problem is, just that it's hard to figure out without knowing the car and conditions and having the scan tool in hand. Have you done the IAC\TPS reset lately? When it's surging, have you tried turning it off, waiting 30 seconds or so, and starting it back up?
This might be a good place to describe exactly what the ecm does for IAC control on start up.
First the basics: the IAC stepper motor is moved by "counts" with 00 being closed (no air) and 255 full open (max air).
When you shut the engine off, the IAC is "parked" at a programmed position (stock is 150, TT is 140). This is also the initial position on the next engine start. As soon as the engine is running, the ecm picks an IAC position based on coolant temp. It holds to this position for almost 1 sec. After that, the ecm selects a target rpm based on coolant temp. It then moves the IAC in/out to maintain this rpm. This normally requires a lower count or step position but the actual number is determined by the programmed rpm value.
An example of real numbers for a TT 5.6/5.7 chip at a coolant temp. of 68 degF:
- engine cranks [IAC = 140]
- engine starts [IAC = 108]
- 800 mSec later, target idle rpm is 1200 so IAC will be stepped down to about 70-90.
- IAC position from here is determined by actual rpm. If its close to the target rpm, no change. If actual is above the target rpm, the IAC position is reduced. If rpm drops below the target, the IAC is stepped out (goes to a higher count).
- As the coolant temperature increases, the target rpm goes down but the IAC control functions the same.
So, the only time you should see a high count (100 & up) is when the engine is started. Within a few seconds the count should drop to ~60-90.
After a minute or two, the count should be down to ~30-60.
Finally at warm idle, it should be ~10-30.