See [anytrim]
Brainstorming about config.ign_dwellmap designated special value 255 or 240..255
config.ign_dwellmap; // added MAPdwell slope
- 00: dwell14 used, VBATT not applied either
- 1 - 254: low slope to sudden jump application of dwell extension above 70 kPa
- 255 => 70..76 kPa (reaches *1.39 very soon, almost like a step.
- TODO: make 255 value special from firmware 1.2.46
- Use lower than 255 value if no intention to use low RPM based dwell extension. Anything above 31 is probably not reasonable anyway (and 239 still has basically same sudden step effect as traditional 255 value; config.ign_dwellmap = 239 recommended for compatibility if and old config had greater value, eg. 240..255 )
Some reasonable config.ign_dwellmap values:
<PRE>
* 40 => 70..110 kPa
* 20 => 70..150 kPa
* 13 => 70..193 kPa
* 12 => 70..203 kPa
* 11 => 70..215 kPa
* 10 => 70..230 kPa
* 9 => 70..248 kPa
* 8 => 70..270 kPa
* 7 => 70..299 kPa (most reasonable ?)
* 6 => 70..337 kPa
* 5 => 70..390 kPa
</PRE>
DROPPED (anytrim special values):
Note that some combinations can be configured, but not normally configured because meaningless:
- Lambda target trim can be adjusted based on Lambda-Target (difference from target) (meaningless)
- however the RPM based dwell has not been implemented (in anytrim or elsewhere)
- RPM based dwell is normally not needed. But some old, low-tech distributers require long dwell at idle and low RPM, but don't work well at high RPM with long dwell (misfire at high RPM with long dwell, almost like a HW rev limiter). So appr +20% dwell at low RPM might be reasonable (likely not overheating the ignition transformer at low RPM, should be safe).
- (config_ext.anytrim3_type & 0xF0) == 0x10) means "lambda trim"
- if(anytrim3_in == 0x31) // ... that is lambda - lambda_target
- then special extend dwell at low RPM (based on certain values, or linearly +20..0% from 0 to 4000 RPM ?)
Gory details... to check config and/or VemsTune ini based on this, just in case
- trimconfig == 0x31 means lambda - lambda target diff input
- trimconfig == 0x32 means scale with tps saturate at 60%
- trimconfig == 0x33 means scale with tps saturate at 90%
- trimconfig == 0x34 means scale with map saturate at 60 kpa
- trimconfig == 0x35 means scale with map saturate at 90 kpa
So Please note if( trimconfig >= 0x31 && trimconfig < 0x36) ... have special scaling above 0x31, and the lambda - lambda target calculation has some special cases for sparkcut, fuelcut and similar special modes.
- Also,
The anytrim_type config bits are (roughly) the following:
<PRE>
- define ANYTRIM_PW 0 // 0
- define ANYTRIM_LAMBDA 16 // 1
- define ANYTRIM_SPARK 32 // 2
- define ANYTRIM_CRANK 48 // 3
- define ANYTRIM_BOOST_MUL 64 // 4
- define ANYTRIM_BOOST_ADD 80 // 5
- define ANYTRIM_BOOST_REF_ADD 96 // 6
- define ANYTRIM_LAUNCH 128 // 8
- define ANYTRIM_SOFTCUT 144 // 9 .. only used by partial fuelcut function
- define ANYTRIM_REVLIMIT 160 // 10 .. all rev limiters hard and soft except partial fuelcut limit
// Anytrim Types NOT ALL FUNCTIONS LISTED!!!
uint8_t anytrim1_type; // anytrim 1 bit 7:4 mode:bit7:4 0=fueltrim, 1=lambdatrim, 3=crank_pw adjust, 8=launch, F=disable;
uint8_t anytrim2_type; // anytrim 2 mode:bit7:4 0=fueltrim, 1=lambdatrim, 3=crank_pw adjust, 4=boost target trim mult, 5=boost target trim add, 6=boost ref add, F=disable;
uint8_t anytrim3_type; // anytrim 3 mode:bit7:4 1=lambdatrim, 2=spark adjust, 3=crank_pw adjust, 9=softcut, F=disable;
uint8_t anytrim4_type; // anytrim 4 mode:bit7:4 0=fueltrim, 1=lambdatrim, 3=crank_pw adjust, 4=boost target trim mult, 5=boost target trim add, 6=boost ref add, F=disable;
uint8_t anytrim5_type; // anytrim 5 mode:bit7:4 0=fueltrim, 1=lambdatrim, 3=crank_pw adjust, 4=boost target trim mult, 5=boost target trim add, 6=boost ref add, F=disable;
uint8_t anytrim4_array[17]; // anytrim4 values
uint8_t anytrim5_array[17]; // anytrim5 values
</PRE>
Either Anytrim 1, Anytrim 2 or Anytrim 3 (or Anytrim4 or Anytrim 5 ) but:
Lambda target, Launch RPM and Cranking pulsewidth can be trimmed by only one Anytrim control at the same time
- (if you enable it multiple times, the first function will take action ... or undefined behavior).
- TODO: review and retest the effect of noncompliant setting (likely ignored)