Diesel Place banner

1 - 20 of 23 Posts

·
Registered
Joined
·
1,474 Posts
Good point, to know the real answer to that we would need to ask the software team at GM (like they would tell you anyway!)

There are many stange things, for example, we limit the pulse times to 5000uS, the ECM can actually calculate out to 32767uS (insane!).

It may have even been a situation where a different programmer was working on the boost control code and he decided to make he's table go up to 125, 130mm3. Or, that boost routine is used on another ECM that will go out to 130mm3.

Cheers,
Ross
 

·
Premium Member
Joined
·
4,101 Posts
Flashscan;1595652; said:
There are many stange things, for example, we limit the pulse times to 5000uS, the ECM can actually calculate out to 32767uS (insane!).
This's because of how the data's stored in the ECM; everything eventually brakes down to assembler code, in binary; 2^15=32768, the last address is either unusable, or the data starts at 0 (0-32767=32768 places).

Dickysticky;1595623; said:
If the ECM does not acknowledge fuel over 100 mm3, why do the boost tables all go to 125 mm3.
If the table needs to hold values of 100, it has to have space for 128 (2^7); the next smallest address would be 2^6=64.
 

·
Registered
Joined
·
8 Posts
OK, I cant stand it any more! What does the ^ in the equations mean???
 

·
Registered
Joined
·
1,474 Posts
schulte;1595701; said:
This's because of how the data's stored in the ECM; everything eventually brakes down to assembler code, in binary; 2^15=32768, the last address is either unusable, or the data starts at 0 (0-32767=32768 places).
I wasn't going to get that technical, it only confuses people more ;)
My point was that what you see in EFILive does not mean that is the limits of the ECM. Technically we could have allowed users to enter pulse times of 32767uS, but, limiting the table values to more sensible limits means we don't get to read of someones disastrous test results of using a 32767us pulse.

Another example is the main fuel pulse table axis for the mm3 values, there is actually two almost seperate mm3 lookups, one scaled 0,1,2,3......7,8,9 then other 10,20,30,40....90,100, they simply do a nice 10 step table lookup, and depending on if it is looking at 0-10 or 10 - 100 they scale the mm3 value differently. When you look at the maths it just works out nicer to have 10 entry points, they could have made it 10 to 1000mm3 if they wanted to, but, remember, GM wrote all this for a stock truck. 100m3 was going to be plenty of room.

markmac3, ^ means to the power of.

Cheers,
Ross
 

·
Registered
Joined
·
6,811 Posts
Flashscan;1595652; said:
Good point, to know the real answer to that we would need to ask the software team at GM (like they would tell you anyway!)

There are many stange things, for example, we limit the pulse times to 5000uS, the ECM can actually calculate out to 32767uS (insane!).

It may have even been a situation where a different programmer was working on the boost control code and he decided to make he's table go up to 125, 130mm3. Or, that boost routine is used on another ECM that will go out to 130mm3.

Cheers,
Ross

here is a question i can command up to 200mm3 on my tbiq but both the b0720 and b0721 tables only go to 100mm3???
my max injection quality warm is 120mm3 max is 200mm3
my current tune i logged 105mm3 with 157mpa with 1950uS????? i would liek to know were that calculatin came from.....i aksed a couple other memebers.. i dont think i was able to convey the info correctly


adam
 

·
Premium Member
Joined
·
4,101 Posts
markmac3;1595936; said:
OK, I cant stand it any more! What does the ^ in the equations mean???
"To the nth power"; I.E. 2^7 means "2 to the 7th power", or 2x2x2x2x2x2x2.

Anything digital is stored in "base-2"... binary. It's called base 2 because there are two possible characters.... 0 and 1 (off and on). The "regular" number system would be called base 10, because we have 10 characters...0,1,2,3,4,5,6,7,8,9.

Therefore, 2^1 (one position) would produce two possible options:

1
0

Add another position, 2^2, you get 4 (2x2) options:

00
01
10
11

Add more from there, up to 2^7, you get 128 (2x2x2x2x2x2x2) options:

0000000
0000001
0000010
0000011
...
1111111
 

·
Premium Member
Joined
·
4,101 Posts
Flashscan;1595957; said:
...we don't get to read of someones disastrous test results of using a 32767us pulse...
:( I'll bet 32 seconds would fill a whole cylinder... thats a whole new definition of "hydrolocked", especially if it happend at 3600RPM ;) .
 

·
Registered
Joined
·
8 Posts
Thanks, now I'm really lost!!!
 

·
Premium Member
Joined
·
4,101 Posts
markmac3;1596036; said:
Thanks, now I'm really lost!!!
I apoligize, I guess my explanation wasn't as clear as it seemed to me.

The "^" symbol is used to designate an exponent.

Like squared. 2 "squared" is 2 x 2, or 4.... this's shown as 2^2, and can also be called "2 to the second power", or "2 to the power of 2". In this case, 2 is the base and 2 is the the exponent, so its written 2^2.

2 x 2 x 2 = 8... this's shown as 2^3, also called "2 to the third power", or "2 to the power of 3". In this case, 2 is the base and 3 is the the exponent, so its written 2^3.

2 x 2 x 2 x 2 = 16 ... shown as 2^4, "2 to the fourth power", "2 to the power of 4". In this case, 2 is the base and 2 is the the exponent, so its written 2^4.

And it goes on from there.

This is what 2^2 would look like written down:
 

Attachments

·
Registered
Joined
·
1,474 Posts
malibu795;1595978; said:
here is a question i can command up to 200mm3 on my tbiq but both the b0720 and b0721 tables only go to 100mm3???
my max injection quality warm is 120mm3 max is 200mm3
my current tune i logged 105mm3 with 157mpa with 1950uS????? i would liek to know were that calculatin came from.....i aksed a couple other memebers.. i dont think i was able to convey the info correctly


adam
Adam, here's the rather technical explanation on how the mm3 values are used on B0720 & B0721 and this will hopefully make some people think about how things are done.

I'm going to use just the 10 - 100mm3 values as an example. (schulte will like this I'm sure).

To get the lookup value the ECM does this process.
Gets the currently commanded mm3
Scales it to suit the table lookup routine
Gets pulse value based on the mm3 value (and RP).
Now the maths behind that (easily seen in the assembly code).......

Assume 10mm3
10mm3 in hex = $8280 (these are signed numbers)
Multiply by $100 = $828000
Divide by $280 = $3433
Add $CBCD = $10000
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0000, so, use cell 0
Some more examples -

Assume 50mm3
50mm3 in hex = $8C80 (these are signed numbers)
Multiply by $100 = $8C8000
Divide by $280 = $3833
Add $CBCD = $10400
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0400, so, use cell 4

Assume 90mm3
90mm3 in hex = $9680 (these are signed numbers)
Multiply by $100 = $968000
Divide by $280 = $3C33
Add $CBCD = $10800
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0800, so, use cell 8

Now, this is where it gets interesting, if you command over 100mm3 looks what happens......

Assume 130mm3
130mm3 in hex = $A080 (these are signed numbers)
Multiply by $100 = $A08000
Divide by $280 = $4033
Add $CBCD = $10C00
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0C00, so, use cell 12.
BUT, there is no cell 12, so what GM have done is to put a check in this part of the code that if the commanded mm3 scaled result is above $0900 (see below) then that is what it will be limited to or else the ECM would attempt to look at a value outside of the table.
FYI, the final example -
100mm3 in hex = $9900 (these are signed numbers)
Multiply by $100 = $990000
Divide by $280 = $3D33
Add $CBCD = $10900
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0900, so, use cell 9.
So, looking at table B0720, count how many mm3 cells there are from 10mm3 to 100mm3 (start the count at 0, not 1), you will find 100mm3 is cell count #9.
So hopefully you can see from all the above, any commanded mm3 value above 100mm3 will still result in the ECM using the pulse time in this table from the 100mm3 row.

For those that can read CPU32 assembler, here is the exact code that does the above scaling -

move.l d7,d5 ; Move Commanded mm3 into d5
lsl.l #8,d5 ; Multiply by 256 ($100)
divu.l #$280,d5 ; Divide by 640
add.w #$CBCD,d5 ; Add 52173
move.w #$900,d7 ; Table cell count limit value (9)
cmp.w d7,d5 ; Compare to scaled mm3 value
bcs.s loc_30B4E ; Skip next if less than, Else...
move.w d7,d5 ; Set mm3 look up value max to cell #9

Cheers,
Ross
 

·
Vendor
Joined
·
9,676 Posts
Flashscan;1596112; said:
Adam, here's the rather technical explanation on how the mm3 values are used on B0720 & B0721 and this will hopefully make some people think about how things are done.

I'm going to use just the 10 - 100mm3 values as an example. (schulte will like this I'm sure).

To get the lookup value the ECM does this process.
Gets the currently commanded mm3
Scales it to suit the table lookup routine
Gets pulse value based on the mm3 value (and RP).
Now the maths behind that (easily seen in the assembly code).......

Assume 10mm3
10mm3 in hex = $8280 (these are signed numbers)
Multiply by $100 = $828000
Divide by $280 = $3433
Add $CBCD = $10000
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0000, so, use cell 0
Some more examples -

Assume 50mm3
50mm3 in hex = $8C80 (these are signed numbers)
Multiply by $100 = $8C8000
Divide by $280 = $3833
Add $CBCD = $10400
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0400, so, use cell 4

Assume 90mm3
90mm3 in hex = $9680 (these are signed numbers)
Multiply by $100 = $968000
Divide by $280 = $3C33
Add $CBCD = $10800
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0800, so, use cell 8

Now, this is where it gets interesting, if you command over 100mm3 looks what happens......

Assume 130mm3
130mm3 in hex = $A080 (these are signed numbers)
Multiply by $100 = $A08000
Divide by $280 = $4033
Add $CBCD = $10C00
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0C00, so, use cell 12.
BUT, there is no cell 12, so what GM have done is to put a check in this part of the code that if the commanded mm3 scaled result is above $0900 (see below) then that is what it will be limited to or else the ECM would attempt to look at a value outside of the table.
FYI, the final example -
100mm3 in hex = $9900 (these are signed numbers)
Multiply by $100 = $990000
Divide by $280 = $3D33
Add $CBCD = $10900
Now, just take the word value to get the correct mm3 cell to use, in this case that = $0900, so, use cell 9.
So, looking at table B0720, count how many mm3 cells there are from 10mm3 to 100mm3 (start the count at 0, not 1), you will find 100mm3 is cell count #9.
So hopefully you can see from all the above, any commanded mm3 value above 100mm3 will still result in the ECM using the pulse time in this table from the 100mm3 row.

For those that can read CPU32 assembler, here is the exact code that does the above scaling -

move.l d7,d5 ; Move Commanded mm3 into d5
lsl.l #8,d5 ; Multiply by 256 ($100)
divu.l #$280,d5 ; Divide by 640
add.w #$CBCD,d5 ; Add 52173
move.w #$900,d7 ; Table cell count limit value (9)
cmp.w d7,d5 ; Compare to scaled mm3 value
bcs.s loc_30B4E ; Skip next if less than, Else...
move.w d7,d5 ; Set mm3 look up value max to cell #9

Cheers,
Ross
:iamlost:


The example Ross gave just shows how EASY it is with EFI Live.

I do at least know from experience that commanding over 100mm3 is fruitless...
 

·
Premium Member
Joined
·
4,101 Posts
Kennedy;1596255; said:
The example Ross gave just shows how EASY it is with EFI Live.

I do at least know from experience that commanding over 100mm3 is fruitless...
Ross's post explains why this is true. In short, GM's error checking prevents commands over 100mm^3 from producing any difference in operation than commanding 100mm^3- there are only 10 cells (addressed 0-9), so anything over 100 would theoretically refer to a cell that doesn't exist (if there was no error handling).
 

·
Registered
Joined
·
6,811 Posts
Kennedy;1596255; said:
The example Ross gave just shows how EASY it is with EFI Live.

I do at least know from experience that commanding over 100mm3 is fruitless...
schulte;1596281; said:
Ross's post explains why this is true. In short, GM's error checking prevents commands over 100mm^3 from producing any difference in operation than commanding 100mm^3- there are only 10 cells (addressed 0-9), so anything over 100 would theoretically refer to a cell that doesn't exist (if there was no error handling).

yet i have a log saying i got more than 100mm3.....105mm3 to be exact

i was just asking how.......
 

·
Registered
Joined
·
1,474 Posts
malibu795;1596335; said:
yet i have a log saying i got more than 100mm3.....105mm3 to be exact

i was just asking how.......
Oh I see, the ECM will still internally process values higher than 100mm3 as your saw on the scanner, however, what I tried to show was that although the ECM might be working with the figure of 105mm3, or even 200mm3, it also limits these values internally based on the way the table is set up it needs commanded mm3 values for. So what you see on the scanner is correct, but for some tables the ECM ignores values above the set limits.

Cheers,
Ross
 

·
Registered
Joined
·
6,811 Posts
that make sense now
 

·
Registered
Joined
·
402 Posts
:Insane:
 

·
Registered
Joined
·
201 Posts
Flashscan;1596112; said:
For those that can read CPU32 assembler, here is the exact code that does the above scaling -

move.l d7,d5 ; Move Commanded mm3 into d5
lsl.l #8,d5 ; Multiply by 256 ($100)
divu.l #$280,d5 ; Divide by 640
add.w #$CBCD,d5 ; Add 52173
move.w #$900,d7 ; Table cell count limit value (9)
cmp.w d7,d5 ; Compare to scaled mm3 value
bcs.s loc_30B4E ; Skip next if less than, Else...
move.w d7,d5 ; Set mm3 look up value max to cell #9


Cheers,
Ross
Very Cool!!! Thanks for explaining the gory details!! It's been a long time since I looked at assembler code.
 

·
Registered
Joined
·
5,094 Posts
Now figure out how to calculate the mm3 value the ECM uses to lookup tables and you are all set! BTW, If you keep your MM3 values within your tables operating range, you have more control over them. A lot of people create shifting issues by commanding above 100mm3.
 
1 - 20 of 23 Posts
Top