;------------------------------------------------------------------------------- [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. versionInfo = "S" ; Put this in the title bar. queryCommand = "Q" ; Verify against signature. signature = "MSII Rev 2.60000 " ; MS-II sends a null at 20th byte. ; 123456789.123456789. ;------------------------------------------------------------------------------- [Constants] ;---------------------------------------------------------------------------- ; Constants Definition ; -------------------- ; ; Scalar Values ; ------------- ; The scaling and translation values are used as follows: ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale ; ; I've got no good way to handle a few of these things yet. ; ; Temperatures are fine, check out the Fielding IAC example (fastIdleTemp). ; ; The TPS stuff is a problem, because we have to modify the ini file for ; each TPS installation and again whenever we move the TPS... I figured ; out a moderately palatable solution to presenting the frequency ; divider in the boost control values, turn it into a bit field and then ; enumerate the resulting frequencies. ; ; Array Values ; ------------ ; Arrays are specified just like scalars, except that they have a "shape" ; entry in the fourth parameter. The shape allows you to define lists or ; tables, for example [8] defines a list with eight values and [2x4] defines ; a table with eight values (two rows and four columns). Tables may be ; stored in either "X-" or "Y-order." X-order means that memory is layed ; out like. ; ; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]... ; ; Y-order would be ; ; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]... ; ; To use the TableEditor, you must define two lists and a table, and ; the lengths of the lists must correspond to the shape of the table. ; ; Bit Fields ; ---------- ; Bits are numbered 0-7, the rightmost being bit zero. The basic ; data word that stores bit fields must be unsigned. ; ; You need NOT supply the correct number of labels matching the ; number of bits you've specified (one bit requires 2 values, two ; bits requires 4 values and so on). If you neglect to supply enough ; labels, they will be synthesized using the sequence "1", "2" and so ; on based upon their position in the sequence (the cltType and matType ; will end up with identical lists). ; ;---------------------------------------------------------------------------- pageActivationDelay = 50 ; Milliseconds delay after burn command. blockReadTimeout = 200 ; Milliseconds total timeout for reading page. endianness = big nPages = 2 pageSize = 988, 900 pageIdentifier = "\x00\x04", "\x00\x05" burnCommand = "b%2i", "b%2i" pageReadCommand = "r%2i%2o%2c", "r%2i%2o%2c" pageValueWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v" pageChunkWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v" page = 1 ; name = class, type, offset, shape, units, scale, translate, lo, hi, digits nCylinders = bits , U08, 0, [0:3], "INVALID" ; * no_skip_pulses = scalar, U08, 1, "", 1.00000, 0.00000, 3.00, 255.00, 0 ; * ( 1 byte) ICIgnCapture = bits , U08, 2, [0:0], "Falling Edge", "Rising Edge" ; * ICCrankTrigger = bits , U08, 2, [1:2], "Calculated", "Trigger Return", "Trigger Rise", "INVALID" ; * ICIgnOption = bits , U08, 2, [4:5], "Standard Coil Charge", "EDIS", "EDIS Multispark", "INVALID" ; * spkout_hi_lo = bits , U08, 3, [0:0], "Going Low (Normal)", "Going High (Inverted)" ; * max_coil_dur = scalar, U08, 4, "ms", 0.10000, 0.00000, 1.00, 8.00, 1 ; * ( 1 byte) max_spk_dur = scalar, U08, 5, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) dwellAcc = scalar, U08, 6, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) dwellVolts = array , S08, 7, [ 5], "V", 0.10000, 0.00000,-12.80, 12.70, 1 ; * ( 5 bytes) dwellDuration = array , S08, 12, [ 5], "ms", 0.10000, 0.00000,-12.80, 12.70, 1 ; * ( 5 bytes) RevLimOption = bits , U08, 17, [0:1], "None", "Spark Retard", "Fuel Cut", "INVALID" ; * ( 1 byte) RevLimMaxRtd = scalar, S08, 18, "deg", 0.10000, 0.00000,-12.80, 12.70, 0 ; * ( 1 byte) PredOpt = bits , U08, 19, [0:1], "Last Interval", "1st Derivative", "1st High RPM, 2nd Low", "2nd Derivative" ; * crankingRPM = scalar, S16, 20, "RPM", 1.00000, 0.00000, 0.00, 3000.0, 0 ; * ( 2 bytes) cold_adv_table = array , S16, 22, [ 10], "deg", 0.10000, 0.00000,-10.00, 10.00, 1 ; * ( 20 bytes) triggerOffset = scalar, S16, 42, "deg", 0.10000, 0.00000, -90.0, 180.00, 2 ; * ( 2 bytes) RevLimRpm1 = scalar, S16, 44, "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 2 bytes) RevLimRpm2 = scalar, S16, 46, "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 2 bytes) #if LAMBDA afrTable1 = array , U08, 48, [12x12], "Lambda", 0.006803, 0.00000, 0.00, 2.00, 3 ; * (144 bytes) afrTable2 = array , U08, 192, [12x12], "Lambda", 0.006803, 0.00000, 0.00, 2.00, 3 ; * (144 bytes) #else afrTable1 = array , U08, 48, [12x12], "AFR", 0.10000, 0.00000, 9.00, 20.00, 1 afrTable2 = array , U08, 192, [12x12], "AFR", 0.10000, 0.00000, 9.00, 20.00, 1 #endif wueBins = array , U08, 336, [ 10], "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 10 bytes) taeBins = array , U08, 346, [ 4], "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 4 bytes) maeBins = array , U08, 350, [ 4], "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 4 bytes) iacstepTable = array , S16, 354, [ 10], "steps", 1.00000, 0.00000, 0.00, 500.00, 0 ; * ( 20 bytes) ipwmTable = array , S16, 354, [ 10], "%", 1.00000, 0.00000, 0.00, 100.00, 0 frpm_table = array , U16, 374, [ 12], "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 24 bytes) frpm1 = scalar, U16, 374, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm2 = scalar, U16, 376, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm3 = scalar, U16, 378, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm4 = scalar, U16, 380, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm5 = scalar, U16, 382, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm6 = scalar, U16, 384, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm7 = scalar, U16, 386, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm8 = scalar, U16, 388, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm9 = scalar, U16, 390, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm10 = scalar, U16, 392, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm11 = scalar, U16, 394, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) frpm12 = scalar, U16, 396, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm_table = array , U16, 398, [ 12], "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 24 bytes) srpm1 = scalar, U16, 398, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm2 = scalar, U16, 400, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm3 = scalar, U16, 402, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm4 = scalar, U16, 404, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm5 = scalar, U16, 406, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm6 = scalar, U16, 408, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm7 = scalar, U16, 410, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm8 = scalar, U16, 412, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm9 = scalar, U16, 414, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm10 = scalar, U16, 416, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm11 = scalar, U16, 418, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) srpm12 = scalar, U16, 420, "RPM" 1.00000, 0.00000, 0.00,15000.00, 0 ; * (2 bytes) fmap_table = array , S16, 422, [ 12], "kPa", 0.10000, 0.00000, 0.00, 400.00, 1 ; * ( 24 bytes) fmap1 = scalar, U16, 422, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap2 = scalar, U16, 424, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap3 = scalar, U16, 426, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap4 = scalar, U16, 428, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap5 = scalar, U16, 430, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap6 = scalar, U16, 432, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap7 = scalar, U16, 434, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap8 = scalar, U16, 436, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap9 = scalar, U16, 438, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap10 = scalar, U16, 440, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap11 = scalar, U16, 442, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) fmap12 = scalar, U16, 444, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap_table = array , S16, 446, [ 12], "kPa", 0.10000, 0.00000, 0.00, 400.00, 1 ; * ( 24 bytes) smap1 = scalar, U16, 446, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap2 = scalar, U16, 448, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap3 = scalar, U16, 450, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap4 = scalar, U16, 452, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap5 = scalar, U16, 454, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap6 = scalar, U16, 456, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap7 = scalar, U16, 458, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap8 = scalar, U16, 460, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap9 = scalar, U16, 462, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap10 = scalar, U16, 464, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap11 = scalar, U16, 466, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) smap12 = scalar, U16, 468, "kPa" 0.10000, 0.00000, 0.00, 400.00, 1 ; * (2 bytes) #if CELSIUS tempTable = array , S16, 470, [ 10], "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 20 bytes) Temperature bins for cranking, cold AE and WUE temper1 = scalar, S16 470, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper2 = scalar, S16 472, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper3 = scalar, S16 474, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper4 = scalar, S16 476, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper5 = scalar, S16 478, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper6 = scalar, S16 480, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper7 = scalar, S16 482, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper8 = scalar, S16 484, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper9 = scalar, S16 486, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) temper10 = scalar, S16 488, "°C", 0.05555, -320.000,-40.00, 100.00, 1 ; * ( 2 bytes) #else tempTable = array , S16, 470, [ 10], "°F", 0.10000, 0.00000,-40.00, 200.00, 1 temper1 = scalar, S16 470, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper2 = scalar, S16 472, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper3 = scalar, S16 474, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper4 = scalar, S16 476, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper5 = scalar, S16 478, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper6 = scalar, S16 480, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper7 = scalar, S16 482, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper8 = scalar, S16 484, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper9 = scalar, S16 486, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) temper10 = scalar, S16 488, "°F", 0.10000, 0.00000,-40.00, 200.00, 1 ; * ( 2 bytes) #endif taeRates = array , S16, 490, [ 4], "%/s", 0.10000, 0.00000, 0.00, 1000.00, 1 ; * ( 8 bytes) tpsDot bins used for AE: x for TAE interpolation maeRates = array , S16, 498, [ 4], "kPa/s", 1.00000, 0.00000, 0.00, 32767.0, 0 ; * ( 8 bytes) mapDot bins used for AE: x for MAE map0 = scalar, S16, 506, "kPa", 0.10000, 0.00000, -100.0, 3276.7, 1 ; * ( 2 bytes) mapmax = scalar, S16, 508, "kPa", 0.10000, 0.00000, -100.0, 3276.7, 1 ; * ( 2 bytes) #if CELSIUS clt0 = scalar, S16, 510, "°C", 0.05555, -320.000, -100.0, 500.0, 1 ; * ( 2 bytes) cltmult = scalar, S16, 512, "%", 1.00000, 0.00000, -200.0, 200.0, 0 ; * ( 2 bytes) mat0 = scalar, S16, 514, "°C", 0.05555, -320.000, -100.0, 500.0, 1 ; * ( 2 bytes) #else clt0 = scalar, S16, 510, "°F", 0.10000, 0.00000, -100.0, 500.0, 1 cltmult = scalar, S16, 512, "%", 1.00000, 0.00000, -200.0, 200.0, 0 mat0 = scalar, S16, 514, "°F", 0.10000, 0.00000, -100.0, 500.0, 1 #endif matmult = scalar, S16, 516, "%", 1.00000, 0.00000, -200.0, 200.0, 0 ; * ( 2 bytes) tpsMin = scalar, S16, 518, "ADC", 1.00000, 0.00000, 0.0, 1023.0, 0 ; * ( 2 bytes) tpsMax = scalar, S16, 520, "ADC", 1.00000, 0.00000, 0.0, 1023.0, 0 ; * ( 2 bytes) batt0 = scalar, S16, 522, "V", 0.10000, 0.00000, 0.0, 3276.7, 1 ; ( 2 bytes) battmax = scalar, S16, 524, "V", 0.10000, 0.00000,-3276.8, 3276.7, 1 ; ( 2 bytes) ego0 = scalar, S16, 526, "afr", 0.10000, 0.00000,-3276.8, 3276.7, 1 ; ( 2 bytes) egomult = scalar, S16, 528, "%", 1.00000, 0.00000, -200.0, 200.0, 0 ; ( 2 bytes) baro0 = scalar, S16, 530, "kPa", 0.10000, 0.00000,-3276.8, 3276.7, 1 ; * ( 2 bytes) baromax = scalar, S16, 532, "kPa", 0.10000, 0.00000,-3276.8, 3276.7, 1 ; * ( 2 bytes) bcor0 = scalar, S16, 534, "%", 1.00000, 0.00000,-3276.8, 3276.7, 1 ; * ( 2 bytes) bcormult = scalar, S16, 536, "%", 1.00000, 0.00000, -200.0, 200.0, 0 ; * ( 2 bytes) knock0 = scalar, S16, 538, "V", 0.01000, 0.00000, 0.0, 5.0, 1 ; * ( 2 bytes) knockmax = scalar, S16, 540, "V", 0.01000, 0.00000, 0.0, 5.0, 1 ; * ( 2 bytes) Dtpred_Gain = scalar, S16, 542, "%", 1.00000, 0.00000, -200.0, 200.0, 0 ; * ( 2 bytes) crankTolerance = scalar, U08, 544, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) asTolerance = scalar, U08, 545, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) pulseTolerance = scalar, U08, 546, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) IdleCtl = bits , U08, 547, [0:2], "None", "Solenoid", "IAC Stepper Moving Only", "IAC Stepper Always On", "PWM Warmup", "15-Minute IAC", "INVALID", "INVALID" ; * IACtstep = scalar, U08, 548, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) IACaccstep = scalar, U08, 549, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) IACnaccstep = scalar, U08, 550, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) IACpwm_step = scalar, U08, 551, "Hz", 80.00000, 0.00000, 80.00, 800.00, 0 ; * ( 1 byte) IACStart = scalar, S16, 552, "", 1.00000, 0.00000, 0.00, 4000.00, 0 ; * ( 1 byte) #if CELSIUS IdleHyst = scalar, S16, 554, "°C", 0.05555, -320.000, -40.0, 150.0, 1 ; * ( 2 bytes) #else IdleHyst = scalar, S16, 554, "°F", 0.10000, 0.00000, -40.0, 300.0, 1 #endif IACcrankpos = scalar, S16, 556, "steps", 1.00000, 0.00000, 0.00, 4000.00, 0 ; * ( 2 bytes) IACcrankxt = scalar, S16, 558, "sec", 1.00000, 0.00000, 0.00,32767.00, 0 ; * ( 2 bytes) #if CELSIUS IACcoldtmp = scalar, S16, 560, "°C", 0.05555, -320.000, -40.0, 150.0, 1 ; * ( 2 bytes) #else IACcoldtmp = scalar, S16, 560, "°F", 0.10000, 0.00000,-40.00, 300.00, 1 #endif IACcoldpos = scalar, S16, 562, "steps", 1.00000, 0.00000, 0.00, 4000.00, 0 ; * ( 2 bytes) IACcoldxt = scalar, S16, 564, "sec", 1.00000, 0.00000, 0.00,32767.00, 0 ; * ( 2 bytes) primePulse = scalar, S16, 566, "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; * ( 2 bytes) primePulseHot = scalar, S16, 568, "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; ( 2 bytes) crankCold = scalar, S16, 570, "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; * ( 1 byte) crankHot = scalar, S16, 572, "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; * ( 1 byte) asePct = scalar, S16, 574, "%", 1.00000, 0.00000, 0.00, 400.00, 0 ; * ( 2 bytes) asePctHot = scalar, S16, 576, "%", 1.00000, 0.00000, 0.00, 400.00, 0 ; ( 2 bytes) aseCount = scalar, S16, 578, "cycles", 1.00000, 0.00000, 0.00,32767.00, 0 ; * ( 2 bytes) aseCountHot = scalar, S16, 580, "cycles", 1.00000, 0.00000, 0.00,32767.00, 0 ; ( 2 bytes) taeColdA = scalar, U08, 582, "ms", 0.10000, 0.00000, 0.00, 25.500, 1 ; * ( 1 byte) taeColdM = scalar, U08, 583, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) tpsThresh = scalar, U08, 584, "%/s", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 1 byte) mapThresh = scalar, U08, 585, "kPa/s", 1.00000, 0.00000, 0.00, 32767.0, 0 ; * ( 1 byte) threshold for MAE taeTime = scalar, U08, 586, "s", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) tdePct = scalar, U08, 587, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) floodClear = scalar, S16, 588, "%", 0.10000, 0.00000, 0.00, 100.00, 1 ; * ( 2 bytes) TPSOXLimit = scalar, S16, 590, "%", 0.10000, 0.00000, 0.00, 100.00, 1 ; * ( 2 bytes) tpsProportion = scalar, U08, 592, "%", 1.00000, 0.00000, 0.00, 100.00, 0 ; * ( 1 byte) baroCorr = bits , U08, 593, [0:1], "None", "Initial MAP Reading", "Two Independent Sensors", "INVALID" ; * egoType = bits , U08, 594, [0:2], "Disabled", "Narrow Band", "Dual Narrow Band", "Single Wide Band", "Dual Wide Band", "INVALID", "INVALID", "INVALID" ; * egoCount = scalar, U08, 595, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) egoDelta = scalar, U08, 596, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) egoLimit = scalar, U08, 597, "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) #if NARROW_BAND_EGO egoTarget = scalar, U08, 598, "v", 0.01000, 0.00000, 0.00, 2.00, 4 ; * ( 1 byte) #elif LAMBDA AFRTarget = scalar, U08, 598, "Lambda", 0.006803, 0.00000, 0.00, 2.00, 3 #else AFRTarget = scalar, U08, 598, "AFR", 0.10000, 0.00000, 0.00, 25.50, 1 #endif tempUnits = bits , U08, 599, [0:0], "Coolant/MAT Tables in °F", "Coolant/MAT Tables in °C" ; * ( 1 byte) mafOption = bits , U08, 600, [0:7], "UNUSED" ; ( 1 byte) ;pad = scalar, U08, 601, #if CELSIUS fastIdleT = scalar, S16, 602, "°C", 0.05555, -320.000,-40.00, 150.00, 1 ; * ( 2 bytes) egoTemp = scalar, S16, 604, "°C", 0.05555, -320.000,-40.00, 150.00, 1 ; * ( 2 bytes) #else fastIdleT = scalar, S16, 602, "°F", 0.10000, 0.00000,-40.00, 300.00, 1 egoTemp = scalar, S16, 604, "°F", 0.10000, 0.00000,-40.00, 300.00, 1 #endif egoRPM = scalar, S16, 606, "RPM", 1.00000, 0.00000, 0.00, 15000.0, 0 ; * ( 2 bytes) reqFuel = scalar, U16, 608, "ms", 0.00100, 0.00000, 0.00, 65.536, 2 ; * ( 2 bytes) divider = scalar, U08, 610, "", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 1 byte) alternate = bits, U08, 611, [0:0], "Simultaneous", "Alternating" ; * ( 1 byte) injOpen = scalar, U08, 612, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) injPwmT = scalar, U08, 613, "ms", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) injPwmPd = scalar, U08, 614, "µsec", 1.00000, 0.00000, 40.00, 100.00, 0 ; * ( 1 byte) injPwmP = scalar, U08, 615, "%", 1.00000, 0.00000, 0.00, 100.00, 0 ; * ( 1 byte) battFac = scalar, U08, 616, "ms/v", 0.0166667, 0.0, 0.0, 1.0, 2 ; * ( 1 byte) twoStroke = bits, U08, 617, [0:0], "Four-stroke", "Two-stroke" ; * injType = bits, U08, 618, [0:0], "Port Injection", "Throttle Body" ; * nInjectors = bits, U08, 619, [0:3], "INVALID" ; * engineType = bits, U08, 620, [0:0], "Even fire", "Odd fire" ; * UNUSED OddFire2 = scalar, U08, 621, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; U ( 1 byte) UNUSED rpmLF = scalar, U08, 622, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) mapLF = scalar, U08, 623, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) tpsLF = scalar, U08, 624, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) egoLF = scalar, U08, 625, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) adcLF = scalar, U08, 626, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) knkLF = scalar, U08, 627, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; * ( 1 byte) AMCOption = bits, U08, 628, [0:1], "Disabled", "RAM Update", "FLASH Update", "INVALID" ; * ( 1 byte) dualTable = bits, U08, 629, [0:0], "Single Table", "Dual Table" ; * algorithm = bits, U08, 630, [0:1], "Speed Density", "Blend SD/Alpha-N", "Pure Alpha-N", "INVALID" ; * IgnAlpha = scalar, U08, 631, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; U ( 1 byte) UNUSED AfrAlpha = scalar, U08, 632, "", 1.00000, 0.00000, 0.00, 255.00, 0 ; U ( 1 byte) UNUSED ;pad = scalar, U08, 633, alpha_lorpm = scalar, S16, 634, "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 2 bytes) alpha_hirpm = scalar, S16, 636, "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 2 bytes) alphaMAPtable = array , S16, 638, [ 6x 6], "kPa", 0.10000, 0.00000, 0.00, 200.00, 1 ; * ( 72 bytes) amap_tps = array , S16, 710, [ 6], "%", 0.10000, 0.00000, 0.0, 100.00, 1 ; * ( 12 bytes) amap_rpm = array , U16, 722, [ 6], "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 12 bytes) baud = scalar, U32, 734, "", 1.00000, 0.00000,9600.0,115200.0, 0 ; x ( 4 bytes) MAPOXLimit = scalar, S16, 738, "kPa", 0.10000, 0.00000, 0.00, 300.00, 2 ; * ( 2 bytes) board_id_type = array , U08, 740, [ 16] ; ( 16 bytes) board_id_type0 = bits , U08, 740, [0:7], "No board", "MS-II ECU", "Router Board", "I/O Board" ; Port Settings constants psEnabled = array , U08, 756, [ 7], "on/off", 1.00000, 0.00000, 0.00, 1.00, 0 ; * ( 2 bytes) psCondition = array , U08, 763, [ 7x2], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psConnector = array , U08, 777, [ 7], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psInitValue = array , U08, 784, [ 7], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psPortValue = array , U08, 791, [ 7], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psOutSize = array , U08, 798, [ 7x2], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psOutOffset = array , U16, 812, [ 7x2], "", 1.00000, 0.00000,-128.00, 127.00, 0 ; * ( 2 bytes) psThreshold = array , U16, 840, [ 7x2], "", 1.00000, 0.00000,-32768.0,32767.0, 0 ; * ( 4 bytes) psHysteresis = array , U16, 868, [ 7x2], "", 1.00000, 0.00000,-32768.0,32767.0, 0 ; * ( 4 bytes) aeTaperTime = scalar, U08, 896, "s", 0.10000, 0.00000, 0.00, 25.50, 1 ; * ( 1 byte) ;pad = scalar, U08, 897, aeEndPW = scalar, S16, 898, "ms", 0.10000, 0.00000, 0.00, 1000.00, 1 ; * egoAlgorithm = bits , U08, 900, [0:1], "Simple", "Transport Delay", "PID/Smith Predictor", "INVALID" ; * ( 1 byte) egoKP = scalar, U08, 901, "%", 1.00000, 0.00000, 0.00, 100.00, 0 ; * ( 1 byte) egoKI = scalar, U08, 902, "%", 1.00000, 0.00000, 0.00, 100.00, 0 ; * ( 1 byte) egoKD = scalar, U08, 903, "%", 1.00000, 0.00000, 0.00, 100.00, 0 ; * ( 1 byte) egoKdelay1 = scalar, U16, 904, "ms", 1.00000, 0.00000, 0.00, 65535, 0 ; * ( 2 bytes) egoKdelay2 = scalar, U16, 906, "revs", 1.00000, 0.00000, 0.00, 65535, 0 ; * ( 2 bytes) flexFuel = bits , U08, 908, [0:0], "Disabled", "Enabled" ; * ( 1 byte) ;pad = scalar, U08, 909, fuelFreq = array , U08, 910, [ 2], "Hz", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 2 bytes) fuelFreq0 = scalar, U08, 910, "Hz", 1.00000, 0.00000, 0.00, 255, 0 fuelFreq1 = scalar, U08, 911, "Hz", 1.00000, 0.00000, 0.00, 255, 0 fuelCorr = array , U08, 912, [ 2], "%", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 2 bytes) fuelCorr0 = scalar, U08, 912, "%", 1.00000, 0.00000, 0.00, 255, 0 fuelCorr1 = scalar, U08, 913, "%", 1.00000, 0.00000, 0.00, 255, 0 AMCstep = scalar, U08, 914, "%", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 2 bytes) AMCdve = scalar, U08, 915, "%", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 2 bytes) AMCve_rpm = scalar, U16, 916, "RPM", 1.00000, 0.00000, 0.00,15000.00, 0 ; * ( 2 bytes) AMCve_map = scalar, U16, 918, "kPa", 0.10000, 0.00000, 0.00, 300.00, 2 ; * ( 2 bytes) AMCramve_dt = scalar, U16, 920, "sec", 1.0, 0.0, 0.0, 300.0, 0 ; * ( 2 bytes) AMCT_thresh = scalar, U16, 922, "sec", 1.0, 0.0, 0.0, 1800.0, 0 ; * ( 2 bytes) AMCupdate_thresh= scalar, U16, 924, "events", 1.0, 0.0, 0.0, 30000.0, 0 ; * ( 2 bytes) CWOption = bits , U08, 926, [0:0], "Two-Point", "Table" ; * ( 1 byte ) knkOption = bits , U08, 927, [0:1], "Disabled", "Safe Mode", "Aggressive Mode", "INVALID" ; * ( 1 byte ) knkDirection = bits , U08, 927, [4:4], "Below threshold", "Above threshold" ; * knk_maxrtd = scalar, U08, 928, "deg", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_step1 = scalar, U08, 929, "deg", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_step2 = scalar, U08, 930, "deg", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_trtd = scalar, U08, 931, "sec", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_tadv = scalar, U08, 932, "sec", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_dtble_adv = scalar, U08, 933, "deg", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) knk_ndet = scalar, U08, 934, "knocks", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte ) ;pad = scalar, U08, 935, knk_maxmap = scalar, U16, 936, "kPa", 0.1, 0.0, 0.0, 300.0, 1 ; * ( 2 bytes) knk_lorpm = scalar, U16, 938, "rpm", 1.0, 0.0, 0.0, 10000, 0 ; * ( 2 bytes) knk_hirpm = scalar, U16, 940, "rpm", 1.0, 0.0, 0.0, 10000, 0 ; * ( 2 bytes) knk_rpm = array , U16, 942, [ 6], "rpm", 1.0, 0.0, 0.0, 6000, 0 ; * ( 2 bytes) knk_thresh = array , U16, 954, [ 6], "v", 0.01, 0.0, 0.0, 5.00, 2 ; * ( 2 bytes) triggerTeeth = scalar, U16, 966, "teeth", 1.0, 0.0, 0.0, 512, 0 ; * ( 2 bytes) No_Miss_Teeth = scalar, U08, 968, "teeth", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte ) No_Skip_Teeth = scalar, U08, 969, "teeth", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte ) Delay_Teeth = scalar, U08, 970, "teeth", 1.0, 0.0, 0.0, 255, 0 ; * ( 1 byte ) ICISR_tmask = scalar, U08, 971, "ms", 0.1, 0.0, 0.0, 25.5, 1 ; * ( 1 byte ) ICISR_pmask = scalar, U08, 972, "%", 1.0, 0.0, 0.0, 200, 0 ; * ( 1 byte ) injTestMode = bits , U08, 973, [0:1], "Normal Mode", "Test Mode", "Repeat Test", "INVALID" ; ( 1 byte ) ae_lorpm = scalar, U16, 974, "rpm", 1.0, 0.0, 0.0, 10000, 0 ; * ( 2 bytes) ae_hirpm = scalar, U16, 976, "rpm", 1.0, 0.0, 0.0, 10000, 0 ; * ( 2 bytes) fuelSpkDel = array , S16, 978, [ 2], "deg", 0.10000, 0.00000,-45.00, 45.00, 1 ; * ( 4 bytes) fuelSpkDel0 = scalar, S16, 978, "deg", 0.10000, 0.00000,-45.00, 45.00, 1 fuelSpkDel1 = scalar, S16, 980, "deg", 0.10000, 0.00000,-45.00, 45.00, 1 injTestSqrts = scalar, U16, 982, "squirts", 1, 0, 0, 65000, 0 ; ( 2 bytes) injTestPW = scalar, U16, 984, "msec", 0.001, 0, 0, 65, 3 ; ( 2 bytes) injTestOffTime = scalar, U16, 986, "msec", 0.1, 0, 0, 6500, 1 ; ( 2 bytes) ; pageSize = 988 page = 2 veTable1 = array , U08, 0, [12x12], "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * (144 bytes) veTable2 = array , U08, 144, [12x12], "%", 1.00000, 0.00000, 0.00, 255.00, 0 ; * (144 bytes) advanceTable = array , S16, 288, [12x12], "deg", 0.10000, 0.00000,-10.00, 90.00, 1 ; * (288 bytes) AMCNBurns = scalar, U16, 576, "burns", 1, 0, 0, 65000, 0 ; x ( 2 bytes) primePWTable = array , S16, 578, [ 10], "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; * ( 20 bytes) crankPWTable = array , S16, 598, [ 10], "ms", 0.10000, 0.00000, 0.00, 65.00, 1 ; * ( 20 bytes) asePctTable = array , S16, 618, [ 10], "%", 1.00000, 0.00000, 0.00, 400.00, 0 ; * ( 2 bytes) aseCntTable = array , S16, 638, [ 10], "cycles", 1.00000, 0.00000, 0.00, 2500.00, 0 ; * ( 2 bytes) #if CELSIUS matTemps = array , S16, 658, [ 6], "°C", 0.05555, -320.000,-40.00, 150.00, 1 ; * ( 12 bytes) #else matTemps = array , S16, 658, [ 6], "°F", 0.10000, 0.00000,-40.00, 300.00, 1 #endif matRetard = array , U08, 670, [ 6], "deg", 0.10000, 0.00000, 0.00, 25.5, 1 ; * ( 6 bytes) xTauOption = bits , U08, 676, [0:1], "Off", "Accel/Decel", "INVALID", "INVALID" ; * ( 1 bytes) xTdecel = scalar, U08, 677, "%", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 1 bytes) xTx = scalar, U08, 678, "%", 1.00000, 0.00000, 0.00, 100, 0 ; * ( 1 bytes) xTscale = scalar, U08, 679, "", 1.00000, 0.00000, 0.00, 255, 0 ; * ( 1 bytes) xTauTable = array , U08, 680, [12x12], "sec", 0.01000, 0.00000, 0.01, 2.5500, 2 ; * (144 bytes) xTauCLT = array , S16, 824, [ 10], "%", 1.00000, 0.00000, 0.0,20000.00, 0 ; * ( 20 bytes) xTauMAT = array , S16, 844, [ 10], "%", 1.00000, 0.00000, 0.0,20000.00, 0 ; * ( 20 bytes) ; Supplemental corrections for barometer and MAT. baroCorrVals = array , S16, 864, [ 6], "kPa", 0.10000, 0.00000, 0.00, 400.00, 1 ; * ( 24 bytes) #if CELSIUS matCorrTemps = array , S16, 876, [ 6], "°C", 0.05555, -320.000,-40.00, 150.00, 1 ; * ( 12 bytes) #else matCorrTemps = array , S16, 876, [ 6], "°F", 0.10000, 0.00000,-40.00, 300.00, 1 #endif baroCorrDelta = array , S08, 888, [ 6], "%", 1.00000, 0.00000,-120.0, 120.0, 1 ; * ( 6 bytes) matCorrDelta = array , S08, 894, [ 6], "%", 1.00000, 0.00000,-120.0, 120.0, 1 ; * ( 6 bytes) ; pageSize = 900 [Menu] ;---------------------------------------------------------------------------- ; There are five pre-defined values that may be used to define your menus. ; The first four allow access to the "standard" dialog boxes, the last one ; merely draws a separator (horizontal line) in the menu. ; ; std_constants ; std_enrichments ; std_realtime ; std_warmup ; std_accel ; ; std_separator ; ; Additionally, to support MegaSquirt-II firmware, there are two standard ; dialogs to generate its three embedded tables. The first of these acts ; like Roger Enns' EasyTherm, but only works for MS-II. The second one ; generates the internal AFR table required for proper closed loop operation ; in MS-II. Use these without page numbers, as they will just be ignored ; in any case. ; ; std_ms2gentherm ; std_ms2geno2 ; ; If you use any of the std_constants, std_enrichments or std_warmup ; editors, they may be optionally suffixed with a page number (only ; useful for multi-page code variants), which causes them to edit the ; specified page. If you leave off the page specifier, they edit logical ; page one as specified in the Constants section. ; ; There are four special menu names, which when used append to the standard ; menus of the same name instead of creating a new one. The menu names ; are "File", "Communications", "Tools" and "Help". ; ;---------------------------------------------------------------------------- menuDialog = main menu = "&Settings" subMenu = generalSettings, "&General" subMenu = idleControl, "I&dle Control" subMenu = std_port_edit, "&Port Settings" subMenu = std_separator ;---------------------------------------------- subMenu = injChars, "I&njector Characteristics" subMenu = std_injection, "Injection &Control" subMenu = alphaNOptions, "&Alpha-N Blending", 0, { algorithm > 0 } subMenu = otherFuel, "&Other Fuel Settings" ; Orphaned stuff, not available in std_xxx subMenu = flexFuelSettings,"&Flex Fuel" subMenu = egoControl, "&EGO Control" subMenu = amcSettings, "Automatic &Mixture Control" subMenu = std_separator ;---------------------------------------------- subMenu = ignitionOptions, "&Ignition Settings" subMenu = triggerWheel, "&Trigger Wheel Settings" subMenu = dwellSettings, "D&well Settings", { ICIgnOption < 2 } subMenu = knockThreshold, "&Knock Threshold" menuDialog = knockThreshold menu = "&Settings" subMenu = knockSettings, "&Knock Sensor Settings" menuDialog = main menu = "T&ables" subMenu = veTable1Tbl, "VE Table &1" subMenu = afrTable1Tbl, "A&FR Table 1", 0, { egoType >= 3 } subMenu = veTable2Tbl, "VE Table &2", 0, { dualTable } subMenu = afrTable2Tbl, "AF&R Table 2", 0, { egoType >= 3 && dualTable } subMenu = std_separator ;---------------------------------------------- subMenu = ignitionTbl, "&Ignition Table" subMenu = coldAdvance, "&Cold Advance" subMenu = matBasedRetard, "MAT-&Based Timing Retard" subMenu = std_separator ;---------------------------------------------- subMenu = tempTableBins, "&Temperature Table Values" subMenu = iacBins, "I&dle Steps", 0, { IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 } subMenu = ipwBins, "Idle &PWM Dutycycle", 0, { IdleCtl == 4 } subMenu = alphaMAPTbl, "&Alpha-N MAP Table", 0, { algorithm > 0 } subMenu = barometerCorr, "Ba&rometric Correction", 0, { CWOption > 0 } subMenu = manifoldTempCorr,"MAT C&orrection" subMenu = std_separator ;---------------------------------------------- subMenu = primingPW, "Pri&ming Pulse", 0, { CWOption > 0 } subMenu = crankingPW, "Cra&nking Pulse", 0, { CWOption > 0 } subMenu = asePct, "A&SE Percentage", 0, { CWOption > 0 && xTauOption < 2 } subMenu = aseTaper, "AS&E Taper", 0, { CWOption > 0 && xTauOption < 2 } subMenu = xTauTimeTable, "&X-Tau Settings", 0, { xTauOption > 0 } menuDialog = veTable1Tbl menu = "&Edit Bins" subMenu = fmapTableBins, "Edit Fuel MAP Bins" subMenu = frpmTableBins, "Edit Fuel RPM Bins" menuDialog = veTable2Tbl menu = "&Edit Bins" subMenu = fmapTableBins, "Edit Fuel MAP Bins" subMenu = frpmTableBins, "Edit Fuel RPM Bins" menuDialog = ignitionTbl menu = "&Edit Bins" subMenu = smapTableBins, "Edit Spark MAP Bins" subMenu = srpmTableBins, "Edit Spark RPM Bins" menuDialog = xTauTimeTable menu = "&Settings" subMenu = xTauSettings, "&Other X-Tau Settings" ; subMenu = xTauCoolant, "&Coolant Correction", 0, { xTauOption == 2 } subMenu = xTauManifold, "&MAT Correction" subMenu = fmapTableBins, "Edit Fuel MAP Bins" subMenu = frpmTableBins, "Edit Fuel RPM Bins" menuDialog = main menu = "&Tuning" subMenu = std_realtime, "&Realtime Display" subMenu = std_separator ;---------------------------------------------- subMenu = std_warmup, "&Warmup Wizard", 0, { xTauOption < 2 } subMenu = std_accel, "&Acceleration Wizard" 0, {1} subMenu = veTable1Map, "VE Table &1" subMenu = veTable2Map, "VE Table &2", 0, { dualTable } subMenu = afrTable1Map, "A&FR Table 1", 0, { egoType >= 3 } subMenu = afrTable2Map, "AF&R Table 2", 0, { egoType >= 3 && dualTable } subMenu = std_separator ;---------------------------------------------- subMenu = xTauTimeMap, "&X-Tau Time Table", 0, { xTauOption > 0 } subMenu = alphaMAPMap, "Alpha-&N MAP Table", 0, { algorithm > 0 } subMenu = std_separator ;---------------------------------------------- subMenu = ignitionMap, "&Ignition Map" menuDialog = xTauTimeMap menu = "&Settings" subMenu = xTauSettings, "&General Settings" subMenu = xTauCoolant, "&Coolant Correction", 0, { xTauOption == 2 } subMenu = xTauManifold, "&MAT Correction" menuDialog = main menu = "Tools" subMenu = std_ms2gentherm, "Calibrate T&hermistor Tables..." subMenu = std_ms2geno2, "Calibrate &AFR Table..." subMenu = sensorCal, "&Sensor Calibration..." subMenu = std_trigwiz, "Tri&gger Wizard..." subMenu = injector_test, "&Injector Test Mode" menu = "Help" subMenu = helpGeneral, "MS-II Info" subMenu = sensorHelp, "Sensor Calibration" subMenu = burnHelp, "Burning Values to ECU" ;------------------------------------------------------------------------------- [UserDefined] dialog = generalSettings, "General Settings" topicHelp = "http://www.megamanual.com/megatune.htm#sg" ; field = "#System" ; field = "Temperature Units", tempUnits ; ! ; field = "#EFI" field = "Dual Table Use", dualTable field = "Barometric Correction", baroCorr # set X_TAU_VISIBLE #if X_TAU_VISIBLE field = "X-Tau Usage", xTauOption #endif field = "Prime, ASE, WUE, Baro Tables", CWOption field = "#Input Smoothing Lag Factors" field = "MAP/MAF Averaging Lag Factor",mapLF field = "RPM Averaging Lag Factor", rpmLF field = "TPS Averaging Lag Factor", tpsLF field = "Lambda Averaging Lag Factor", egoLF field = "CLT/MAT/Battery Lag Factor", adcLF field = "Knock Averaging Lag Factor", knkLF field = "#Startup" field = "Cranking RPM", crankingRPM field = "#Rev Limiter" field = "Algorithm", RevLimOption field = "Maximum Retard", RevLimMaxRtd, { RevLimOption == 1 } field = "Lower Rev Limit", RevLimRpm1 field = "Upper Rev Limit", RevLimRpm2 dialog = flexFuelSettings, "Flex Fuel Settings" topicHelp = "http://www.megamanual.com/flexfuel.htm" field = "Flex Fuel Sensor", flexFuel field = "Frequency (low)", fuelFreq0, { flexFuel > 0 } field = "Fuel Correction (low)", fuelCorr0, { flexFuel > 0 } field = "Timing Correction (low)", fuelSpkDel0, { flexFuel > 0 } field = "Frequency (high)", fuelFreq1, { flexFuel > 0 } field = "Fuel Correction (high)", fuelCorr1, { flexFuel > 0 } field = "Timing Correction (high)", fuelSpkDel1, { flexFuel > 0 } dialog = otherFuel, "Other Fuel Settings" topicHelp = "http://www.megamanual.com/megatune.htm#so" field = "#Two-Point Prime" field = "Prime Pulse Cold PW", primePulse, { CWOption == 0 } field = "Prime Pulse Hot PW", primePulseHot, { CWOption == 0 } field = "#Two-Point AfterStart Enrich" field = "ASE Cold Percent", asePct, { CWOption == 0 && xTauOption < 2 } field = "ASE Hot Percent", asePctHot, { CWOption == 0 && xTauOption < 2 } field = "ASE Cold Count", aseCount, { CWOption == 0 && xTauOption < 2 } field = "ASE Hot Count", aseCountHot, { CWOption == 0 && xTauOption < 2 } field = "#AE RPM Scaling" field = "Low RPM Threshold", ae_lorpm field = "High RPM Threshold", ae_hirpm field = "#Barometric Correction" field = "At total vacuum ", bcor0, { CWOption == 0 } field = "Rate", bcormult, { CWOption == 0 } dialog = xTauSettings, "Other X-Tau Settings" topicHelp = "http://www.megamanual.com/megatune.htm#ax" field = "X Puddling Factor", xTx field = "Decel Factor", xTdecel field = "Table Scaler", xTscale dialog = injChars, "Injector Characteristics" topicHelp = "http://www.megamanual.com/megatune.htm#sn" field = "Injector Open Time", injOpen field = "Battery Voltage Correction", battFac field = "PWM Current Limit", injPwmP field = "PWM Time Threshold", injPwmT field = "!Injector PWM Period", injPwmPd ; ! field = "!Red settings require an MS-II reboot!" dialog = egoControl, "EGO Control" topicHelp = "http://www.megamanual.com/megatune.htm#se" field = "EGO Sensor Type", egoType #if NARROW_BAND_EGO field = "NB Voltage Target", egoTarget, { egoType == 1 || egoType == 2} #elif LAMBDA field = "NB Lambda Target", AFRTarget, { egoType == 1 || egoType == 2} #else field = "NB AFR Target", AFRTarget, { egoType == 1 || egoType == 2} #endif field = "Ignition Events per Step", egoCount, { egoType == 1 || egoType == 2} field = "Controller Step Size", egoDelta, { egoType == 1 || egoType == 2} field = "Controller Authority ±", egoLimit, { egoType > 0 } field = "Active Above Coolant Temp", egoTemp, { egoType > 0 } field = "Active Above RPM", egoRPM, { egoType > 0 } field = "Active Below TPS", TPSOXLimit, { egoType > 0 } field = "Active Below MAP", MAPOXLimit, { egoType > 0 } field = "#WB Controller Settings" field = "Algorithm", egoAlgorithm, { egoType > 2 } field = "PID Proportional Gain", egoKP, { egoType > 2 } field = "Transport Delay 1", egoKdelay1, { egoType > 2 && egoAlgorithm > 0 } field = "Transport Delay 2", egoKdelay2, { egoType > 2 && egoAlgorithm > 0 } field = "PID Integral", egoKI, { egoType > 2 && egoAlgorithm > 1 } field = "PID Derivative", egoKD, { egoType > 2 && egoAlgorithm > 1 } dialog = amcSettings, "Automatic Mixture Control" topicHelp = "http://www.megamanual.com/megatune.htm#sm" field = "!Must have EGO correction enabled for AMC to operate!" field = "Automatic Mixture Control", AMCOption, { egoType > 0 } field = "Step size", AMCstep, { AMCOption > 0 } field = "Minimum VE Change", AMCdve, { AMCOption > 0 } field = "Vertex Tolerance", AMCve_rpm, { AMCOption > 0 } field = "Vertex Tolerance", AMCve_map, { AMCOption > 0 } field = "Table Change Interval", AMCramve_dt, { AMCOption > 0 } field = "Flash Update Interval", AMCT_thresh, { AMCOption > 1 } field = "Update After", AMCupdate_thresh, { AMCOption > 1 } dialog = alphaNOptions, "Alpha-N Settings" topicHelp = "http://www.megamanual.com/megatune.htm#aa" field = "Pure AN to Blend Threshold", alpha_lorpm field = "Blend to SD Threshold", alpha_hirpm dialog = ignitionOptions, "Ignition Options" topicHelp = "http://www.megamanual.com/megatune.htm#si" field = "#General Ignition" field = "Trigger Offset", triggerOffset field = "Skip Pulses", no_skip_pulses field = "Predictor Algorithm", PredOpt field = "Predictor Gain", Dtpred_Gain field = "Time Mask", ICISR_tmask field = "Percentage Mask", ICISR_pmask field = "#Next-Pulse Tolerance" field = " Cranking", crankTolerance field = " After-start", asTolerance field = " Normal Running", pulseTolerance field = "!Ignition Input Capture", ICIgnCapture, { ICIgnOption != 2 && ICIgnOption != 3 } ; ! field = "!Cranking Trigger", ICCrankTrigger, { ICIgnOption != 2 && ICIgnOption != 3 } ; ! field = "!Coil Charging Scheme", ICIgnOption ; { RevLimOption < 2 } field = "!Spark Output", spkout_hi_lo ; ! field = "Maximum Spark Duration", max_spk_dur, , { ICIgnOption < 1 } field = "!Red settings require an MS-II reboot!" dialog = triggerWheel, "Trigger Wheel Settings" topicHelp = "http://www.megamanual.com/megatune.htm#st" field = "#Trigger Wheel Only (0 = no trigger wheel)" field = "!Trigger Wheel Teeth", triggerTeeth field = "!Missing Teeth", No_Miss_Teeth, { triggerTeeth > 0 } field = "!Skip Teeth", No_Skip_Teeth, { triggerTeeth > 0 } field = "!Delay Teeth", Delay_Teeth, { triggerTeeth > 0 } field = "!Red settings require an MS-II reboot!" dialog = dwellSettings, "Dwell Settings" topicHelp = "http://www.megamanual.com/megatune.htm#sw" field = "Maximum Dwell Duration", max_coil_dur, { ICIgnOption < 1 } field = "Acceleration Compensation", dwellAcc, { ICIgnOption < 1 } field = "#Battery Voltage Compensation" ; Make this an array2D when available. array1D = "", "Voltage %INDEX% ", dwellVolts, { ICIgnOption < 1 } array1D = "", "Duration at Voltage %INDEX% ", dwellDuration, { ICIgnOption < 1 } dialog = idleControl, "Idle Control" topicHelp = "http://www.megamanual.com/megatune.htm#sd" field = "Algorithm", IdleCtl field = "Fast Idle Temperature", fastIdleT, { IdleCtl == 1 } field = "Time Step Size", IACtstep, { IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 } field = "Acceleration Step Size", IACaccstep, { IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 } field = "Number of Acceleration Steps", IACnaccstep, { IdleCtl == 2 || IdleCtl == 3 || IdleCtl == 5 } field = "!PWM Frequency", IACpwm_step, { IdleCtl == 4 } field = "!Start Value (retract)", IACStart, { IdleCtl > 1 } ; ! field = "Cranking Position (extend)", IACcrankpos, { IdleCtl > 1 } field = "Crank-to-Run Taper Time", IACcrankxt, { IdleCtl > 1 } field = "Hysteresis", IdleHyst, { IdleCtl > 1 } field = "#Time-Based After Start (extended warm-up)" field = " Cold Temperature", IACcoldtmp, { IdleCtl > 1 } field = " Cold Position", IACcoldpos, { IdleCtl > 1 } field = " Cold Taper Time", IACcoldxt, { IdleCtl > 1 } field = "!Red settings require an MS-II reboot!" dialog = sensorCal, "Sensor Calibration" topicHelp = sensorHelp field = "#MAP Sensor (F1 for common values)" field = "Value at 0.0 volts", map0 field = "Value at 5.0 volts", mapmax field = "#Barometer Sensor (usually identical to MAP)" field = "Value at 0.0 volts", baro0 field = "Value at 5.0 volts", baromax ; field = "#Coolant Temperature Sensor Scaling" ; field = "Offset at 0 v", clt0 ; field = "Scale factor", cltmult ; field = "#Air Temperature Sensor Scaling" ; field = "Offset at 0 v", mat0 ; field = "Scale factor", matmult dialog = knockSettings, "Knock Sensor Settings" topicHelp = "http://www.megamanual.com/megatune.htm#sk" field = "Knock Control", knkOption field = "#Detection" field = "Threshold Direction", knkDirection, { knkOption > 0 } field = "Threshold", knock0 field = "Peak", knockmax field = "Knock Count", knk_ndet, { knkOption > 0 } field = "No Knock Above MAP", knk_maxmap, { knkOption > 0 } field = "No Knock Below RPM", knk_lorpm, { knkOption > 0 } field = "No Knock Above RPM", knk_hirpm, { knkOption > 0 } field = "#Retarding" field = "Maximum Retard", knk_maxrtd, { knkOption > 0 } field = "Retard Check Time", knk_trtd, { knkOption > 0 } field = "Retard Step Size", knk_step1, { knkOption > 0 } field = "#Recovery" field = "Advance Check Time", knk_tadv, { knkOption > 0 } field = "Advance Step Size", knk_step2, { knkOption > 0 } field = "Recovery Advance", knk_dtble_adv, { knkOption > 1 } dialog = injector_test, "Injector Test Mode" topicHelp = "http://www.megamanual.com/megatune.htm#oi" field = "!Injector test mode", injTestMode ; ! field = "Injector test squirts", injTestSqrts, { injTestMode > 0 } field = "Injector test PW", injTestPW, { injTestMode > 0 } field = "Injector test offtime", injTestOffTime, { injTestMode > 0 } field = "!Reboot to test, set to 'Normal Mode' to reset" dialog = frpmTableBins, "RPM Table Bins for Fuel Tables" topicHelp="http://www.megamanual.com/megatune.htm#" field = "#RPM Bins for all Fuel Table(s)" field = "#(VE, AFR, and X-Tau - if used)" field = "RPM Bin 1", frpm1 field = "RPM Bin 2", frpm2 field = "RPM Bin 3", frpm3 field = "RPM Bin 4", frpm4 field = "RPM Bin 5", frpm5 field = "RPM Bin 6", frpm6 field = "RPM Bin 7", frpm7 field = "RPM Bin 8", frpm8 field = "RPM Bin 9", frpm9 field = "RPM Bin 10", frpm10 field = "RPM Bin 11", frpm11 field = "RPM Bin 12", frpm12 field = "#Close and re-open Table(s) to see changes" dialog = fmapTableBins, "MAP Table Bins for Fuel Table(s)" topicHelp="http://www.megamanual.com/megatune.htm#" field = "#MAP Bins for all Fuel Tables" field = "#(VE, AFR, and X-Tau - if used)" field = "MAP Bin 1", fmap1 field = "MAP Bin 2", fmap2 field = "MAP Bin 3", fmap3 field = "MAP Bin 4", fmap4 field = "MAP Bin 5", fmap5 field = "MAP Bin 6", fmap6 field = "MAP Bin 7", fmap7 field = "RPM Bin 8", fmap8 field = "MAP Bin 9", fmap9 field = "MAP Bin 10", fmap10 field = "MAP Bin 11", fmap11 field = "MAP Bin 12", fmap12 field = "#Close and re-open Table(s) to see changes" dialog = srpmTableBins, "RPM Table Bins for Spark Table" topicHelp="http://www.megamanual.com/megatune.htm#" field = "#RPM Bins for Spark Advance Table" field = "RPM Bin 1", srpm1 field = "RPM Bin 2", srpm2 field = "RPM Bin 3", srpm3 field = "RPM Bin 4", srpm4 field = "RPM Bin 5", srpm5 field = "RPM Bin 6", srpm6 field = "RPM Bin 7", srpm7 field = "RPM Bin 8", srpm8 field = "RPM Bin 9", srpm9 field = "RPM Bin 10", srpm10 field = "RPM Bin 11", srpm11 field = "RPM Bin 12", srpm12 field = "#Close and re-open Table(s) to see changes" dialog = smapTableBins, "MAP Table Bins for Spark Table" topicHelp="http://www.megamanual.com/megatune.htm#" field = "#MAP Bins for Spark Advance Table" field = "MAP Bin 1", smap1 field = "MAP Bin 2", smap2 field = "MAP Bin 3", smap3 field = "MAP Bin 4", smap4 field = "MAP Bin 5", smap5 field = "MAP Bin 6", smap6 field = "MAP Bin 7", smap7 field = "RPM Bin 8", smap8 field = "MAP Bin 9", smap9 field = "MAP Bin 10", smap10 field = "MAP Bin 11", smap11 field = "MAP Bin 12", smap12 field = "#Close and re-open Table(s) to see changes" dialog = tempTableBins, "Temprature Table Values" topicHelp="http://www.megamanual.com/megatune.htm#at" field = "#Temperature Bins for Warmup, etc." field = "Temp table is dual use with CLT/warmup and MAT/X-Tau" field = "Temperature Bin 1", temper1 field = "Temperature Bin 2", temper2 field = "Temperature Bin 3", temper3 field = "Temperature Bin 4", temper4 field = "Temperature Bin 5", temper5 field = "Temperature Bin 6", temper6 field = "Temperature Bin 7", temper7 field = "Temperature Bin 8", temper8 field = "Temperature Bin 9", temper9 field = "Temperature Bin 10", temper10 help = burnHelp, "Burning Values to ECU" webHelp = "http://www.megasquirt.info/megatune.htm#" text = "Occassionally, you may have trouble getting values to 'stick'" text = "in MegaTune. There are a few things you can try if this happens:

" text = "\tHit TAB after entering the value. This forces MegaTune to" text = "recognize the changed value.
" text = "\tThen 'Burn to ECU'

" text = "If that doesn't work:

" text = "\tChange the value (as above) and immediately save the MSQ file ('File/Save').
" text = "\tThen reload the file you just saved, and burn it when prompted.

" text = "This forces all the values to be burned to both flash and RAM memory, and" text = "should solve the problem." help = sensorHelp, "Sensor Calibration" webHelp = "http://www.megamanual.com/megatune.htm#os" text = "MAP Sensor Calibration
" text = "
" text = "For the\tMPX4115 use\t10.6 and \t121.7
" text = "\tMPX4250\t\t10.0\t260.0
" text = "\tMPXH6300\t1.1\t315.5
" text = "\tGM 3-BAR\t1.1\t315.5
" text = "\tMPXH6400\t3.5\t416.5
" text = "
" text = "(GM 3-bar data from Dave Hartnell, http://www.not2fast.com/electronics/component_docs/MAP_12223861.pdf)
" text = "
" text = "\tSensor type\tvLo\tpLo\tvHi\tpHi\tvRef
" text = "\tMPX4115 \t0.204 v\t15 kPa\t4.794 v\t115 kPa\t5.100 v
" text = "\tMPX4250 \t0.204 v\t20 kPa\t4.896 v\t250 kPa\t5.100 v
" text = "\tMPXH6300\t0.306 v\t20 kPa\t4.913 v\t304 kPa\t5.100 v
" text = "\tGM 3-BAR\t0.631 v\t40 kPa\t4.914 v\t304 kPa\t5.100 v
" text = "\tMPXH6400\t0.200 v\t20 kPa\t4.800 v\t400 kPa\t5.000 v
" text = "
" text = "In general, use values derived from these equations:
" text = "
" text = "\tm = (pHi-pLo)/(vHi-vLo)
" text = "\tpv1 = pLo - m * vLo
" text = "\tpv2 = pv1 + m * vRef
" text = "
" text = "References:
" text = "\thttp://www.freescale.com/files/sensors/doc/data_sheet/MPX4115A.pdf
" text = "\thttp://www.freescale.com/files/sensors/doc/data_sheet/MPX4250A.pdf
" text = "\thttp://www.freescale.com/files/sensors/doc/data_sheet/MPXH6300A.pdf
" text = "\thttp://www.freescale.com/files/sensors/doc/data_sheet/MPXH6400A.pdf
" text = "
" text = "Barometer Sensor Calibration
" text = "
" text = "If your system has an external barometer sensor, separate from the MAP" text = "sensor, then use these values to calibrate it properly. If you have" text = "a standard MS installation, then copy your MAP sensor values here.
" help = helpGeneral, "MS-II General Help" webHelp = "http://www.megamanual.com/ms2/" text = "Al Grippo and Bruce Bowling have created MegaSquirt-II, which" text = "is a plug-in daughter card that replaces the 8-bit MC68HC908GP32" text = "with a 16-bit MC9S12C32 processor. MegaSquirt-II is an intermediate" text = "step from the original MegaSquirt towards UltraMegaSquirt.
" text = "
" text = "It is basically a plug-in processor card that has the MC9S12C32" text = "processor plus support hardware as well as a stepper motor chip," text = "and an ignition module controller. The embedded code is written" text = "in C, rather than assembly language, so it should be more accessible" text = "to more programmers (Stephane Carrez has ported GCC to the HC12" text = "processor so, although it doesn't use the full 9S12 instruction" text = "set, we are able to use his version to write code for the MS-II).
" text = "
" text = "For current documentation, click the Web Help button below, or for" text = "support questions visit http://www.msefi.com/." ;------------------------------------------------------------------------------- [CurveEditor] curve = coldAdvance, "Cold Ignition Advance Offset" topicHelp = "http://www.megamanual.com/megatune.htm#ac" columnLabel = "Coolant", "Offset" xAxis = -40, 200, 9 yAxis = -10, 10, 5 xBins = tempTable, coolant yBins = cold_adv_table gauge = cltGauge curve = iacBins, "IAC Step Bins" topicHelp = "http://www.megamanual.com/megatune.htm#ad" columnLabel = "Coolant", "IAC Steps" xAxis = -40, 200, 9 yAxis = 0, 300, 7 xBins = tempTable, coolant, readonly yBins = iacstepTable gauge = cltGauge curve = ipwBins, "PWM Idle Duty Cycle" topicHelp = "http://www.megamanual.com/megatune.htm#ap" columnLabel = "Coolant", "Idle PWM" xAxis = -40, 200, 9 yAxis = 0, 100, 6 xBins = tempTable, coolant, readonly yBins = ipwmTable gauge = cltGauge curve = primingPW, "Priming Pulsewidth" ; topicHelp = "http://www.megamanual.com/megatune.htm#am" columnLabel = "Coolant", "Prime PW" xAxis = -40, 200, 9 yAxis = 0, 20, 5 xBins = tempTable, coolant yBins = primePWTable gauge = cltGauge curve = crankingPW, "Cranking Pulsewidth" ; topicHelp = "http://www.megamanual.com/megatune.htm#am" columnLabel = "Coolant", "Cranking PW" xAxis = -40, 200, 9 yAxis = 0, 20, 5 xBins = tempTable, coolant yBins = crankPWTable gauge = cltGauge curve = asePct, "Afterstart Enrichment Percentage" ; topicHelp = "http://www.megamanual.com/megatune.htm#as" columnLabel = "Coolant", "Afterstart" xAxis = -40, 200, 9 yAxis = 0, 100, 6 xBins = tempTable, coolant yBins = asePctTable gauge = cltGauge curve = aseTaper, "Afterstart Enrichment Taper" ; topicHelp = "http://www.megamanual.com/megatune.htm#ae" columnLabel = "Coolant", "Taper" xAxis = -40, 200, 9 yAxis = 0, 500, 6 xBins = tempTable, coolant yBins = aseCntTable gauge = cltGauge curve = matBasedRetard, "MAT-Based Timing Retard" ; topicHelp = "http://www.megamanual.com/megatune.htm#ab" columnLabel = "MAT", "Retard" xAxis = 100, 300, 9 yAxis = 0, 15, 7 xBins = matTemps, mat yBins = matRetard gauge = matGauge curve = knockThreshold, "Knock Threshold" ; topicHelp = "http://www.megamanual.com/megatune.htm#sk" columnLabel = "RPM", "Threshold" xAxis = 0, 6000, 7 yAxis = 0, 5.0, 6 xBins = knk_rpm, rpm yBins = knk_thresh gauge = tachometer curve = barometerCorr, "Non-Linear Barometric Correction" ; topicHelp = "http://www.megamanual.com/megatune.htm#ar" columnLabel = "Barometer", "Correction" xAxis = 60, 120, 7 yAxis = -30, 30, 7 xBins = baroCorrVals, barometer yBins = baroCorrDelta gauge = barometerGauge curve = manifoldTempCorr, "Non-Linear MAT Correction" ; topicHelp = "http://www.megamanual.com/megtune.htm#ao" columnLabel = "MAT", "Correction" xAxis = -40, 200, 9 yAxis = -30, 30, 7 xBins = matCorrTemps, mat yBins = matCorrDelta gauge = matGauge curve = xTauCoolant, "X-Tau Coolant Correction" ; topicHelp = "http://www.megamanual.com/megtune.htm#axsc" columnLabel = "Temperature", "Correction" xAxis = -40, 200, 9 yAxis = 0, 200, 9 xBins = tempTable, coolant yBins = xTauCLT gauge = cltGauge curve = xTauManifold, "X-Tau MAT Correction (Temp table is dual use with CLT/warmup and MAT/X-Tau)" ; topicHelp = "http://www.megamanual.com/megtune.htm#axsm" columnLabel = "Temperature", "Correction" xAxis = -40, 200, 9 yAxis = 0, 300, 9 xBins = tempTable, coolant, readonly yBins = xTauMAT gauge = matGauge [TableEditor] ; table_id, map3d_id, "title", page table = veTable1Tbl, veTable1Map, "VE Table 1", 2 ; constant, variable xBins = frpm_table, rpm, readonly yBins = fmap_table, calcMAP, readonly zBins = veTable1 upDownLabel = "RICHER", "LEANER" gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. table = veTable2Tbl, veTable2Map, "VE Table 2", 2 xBins = frpm_table, rpm, readonly yBins = fmap_table, calcMAP, readonly zBins = veTable2 upDownLabel = "RICHER", "LEANER" gridHeight = 2.0 gridOrient = 250, 0, 340 #if LAMBDA table = afrTable1Tbl, afrTable1Map, "Lambda Table 1", 1 gridHeight = 3.0 #else table = afrTable1Tbl, afrTable1Map, "AFR Table 1", 1 gridHeight = 1.0 #endif xBins = frpm_table, rpm, readonly yBins = fmap_table, calcMAP, readonly zBins = afrTable1 upDownLabel = "LEANER", "RICHER" gridOrient = 250, 0, 340 #if LAMBDA table = afrTable2Tbl, afrTable2Map, "Lambda Table 2", 1 gridHeight = 3.0 #else table = afrTable2Tbl, afrTable2Map, "AFR Table 2", 1 gridHeight = 1.0 #endif xBins = frpm_table, rpm, readonly yBins = fmap_table, calcMAP, readonly zBins = afrTable2 upDownLabel = "LEANER", "RICHER" gridOrient = 250, 0, 340 table = ignitionTbl, ignitionMap, "Spark Advance Table", 2 xBins = srpm_table, rpm, readonly yBins = smap_table, calcMAP, readonly zBins = advanceTable upDownLabel = "ADVANCING", "RETARDING" gridHeight = 3.0 gridOrient = 250, 0, 340 table = alphaMAPTbl, alphaMAPMap, "Alpha-N MAP Table", 1 xBins = amap_rpm, rpm yBins = amap_tps, tps zBins = alphaMAPtable upDownLabel = "UP", "DOWN" gridHeight = 2.0 gridOrient = 250, 0, 340 table = xTauTimeTable, xTauTimeMap, "Tau Time Table", 2 xBins = frpm_table, rpm, readonly yBins = fmap_table, calcMAP, readonly zBins = xTauTable upDownLabel = "LONGER", "SHORTER" gridHeight = 2.0 gridOrient = 250, 0, 20 ; Space 123 rotation of grid in degrees. ;------------------------------------------------------------------------------- [GaugeConfigurations] ;------------------------------------------------------------------------------- ; Notes on some of the gauges. ; ; The accelEnrichGauge is now a composite of both acceleration enrichment ; and deceleration enleanment numbers. See the definition of the variable ; accDecEnrich in the OutputChannels section. ; ; David Hooke contributed the lambda gauge and associated transfer ; function files. ; ; The lambda gauge is the best way (my opinion) to report data from a ; wide band EGO gauge, it standardizes the output irrespective of fuel ; or mix of fuels, so you needn't do any brainwork to know if your 75% ; gasoline and 25% methanol is rich at 10:1 or not. ; ; Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu). ; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu). ;------------------------------------------------------------------------------- ; Define a gauge's characteristics here, then go to a specific layout ; block (Tuning or FrontPage) and use the name you've defined here to ; display that gauge in a particular position. ; ; Name = Case-sensitive, user-defined name for this gauge configuration. ; Var = Case-sensitive name of variable to be displayed, see the ; OutputChannels block in this file for possible values. ; Title = Title displayed at the top of the gauge. ; Units = Units displayed below value on gauge. ; Lo = Lower scale limit of gauge. ; Hi = Upper scale limit of gauge. ; LoD = Lower limit at which danger color is used for gauge background. ; LoW = Lower limit at which warning color is used. ; HiW = Upper limit at which warning color is used. ; HiD = Upper limit at which danger color is used. ; vd = Decimal places in displayed value ; ld = Label decimal places for display of Lo and Hi, above. ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld advBucketGauge = veTuneValue, "Advance Bucket", "degrees", 0, 55, -1, -1, 999, 999, 1, 1 advdegGauge = advance, "Ignition Advance", "degrees", 5, 50, -1, -1, 999, 999, 1, 1 IACgauge = iacstep, "IAC position", "steps", 0, 255, -1, -1, 999, 999, 0, 0 dwellGauge = dwell, "Dwell", "mSec", 0, 10, 0.5, 1.0, 6.0, 8.0, 1, 1 ; IAC step == idle pwm, when using pwm idle control. PWMIdlegauge = idleDC, "Idle PWM%", "%", 0, 100, -1, -1, 999, 90, 0, 0 accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 afr1Gauge = afr1, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2 afr2Gauge = afr2, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2 clockGauge = seconds, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0 dutyCycle1Gauge = dutyCycle1, "Duty Cycle 1", "%", 0, 100, -1, -1, 85, 90, 1, 1 dutyCycle2Gauge = dutyCycle2, "Duty Cycle 2", "%", 0, 100, -1, -1, 85, 90, 1, 1 egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0 egoCorrGauge1 = egoCorrection1,"EGO Correction 1", "%", 50, 150, 90, 99, 101, 110, 0, 0 egoCorrGauge2 = egoCorrection2,"EGO Correction 2", "%", 50, 150, 90, 99, 101, 110, 0, 0 egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.7, 0.8, 2, 2 knockGauge = knockRetard "Knock Retard", "deg", 0, 25.0, -1, -1, 5.0, 10.0, 1, 1 lambda1Gauge = lambda1, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 lambda2Gauge = lambda2, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 1, 0 barometerGauge = barometer, "Barometer", "kPa", 60, 120, 0, 20, 200, 245, 1, 0 calcMapGauge = calcMAP, "Estimated MAP", "kPa", 0, 255, 0, 20, 200, 245, 1, 0 pulseWidth1Gauge = pulseWidth1, "Pulse Width 1", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 pulseWidth2Gauge = pulseWidth2, "Pulse Width 2", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 3, 1 tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 500, 5000, 6000, 0, 0 throttleGauge = throttle, "Throttle Position", "%", 0, 100, -1, 1, 90, 100, 0, 0 veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0 veGauge = veCurr1, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 voltMeter = batteryVoltage, "Battery Voltage", "volts", 7, 21, 9, 10, 16, 17, 2, 2 warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0 ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld xTauGauge = xTauFuelCorr "X-Tau Correction", "%", 0, 200, 40, 70, 130, 160, 0, 0 #if CELSIUS cltGauge = coolant, "Coolant Temp", "°C", -40, 120, -15, 0, 95, 105, 0, 0 matGauge = mat, "Manifold Air Temp", "°C", -40, 110, -15, 0, 95, 100, 0, 0 #else cltGauge = coolant, "Coolant Temp", "°F", -40, 250, 0, 30, 200, 220, 0, 0 matGauge = mat, "Manifold Air Temp", "°F", -40, 215, 0, 30, 200, 210, 0, 0 #endif e85Gauge = fuelCorrection,"E85 Fuel Correction", "%", 100, 200, 99, 99, 164, 170, 0, 0 ethanolGas = fuelComposition, "Ethanol Percentage","%", 0, 100, -1, -1, 85, 101, 0, 0 ;------------------------------------------------------------------------------- [FrontPage] #if NARROW_BAND_EGO egoLEDs = 0.0, 1.0, 0.5 ; Voltage settings. #elif LAMBDA egoLEDs = 1.5, 0.5, 1.0 ; Lambda settings. #else egoLEDs = 19.7, 9.7, 14.7 ; Afr settings. #endif ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 gauge1 = tachometer gauge2 = throttleGauge gauge3 = pulseWidth1Gauge #if NARROW_BAND_EGO gauge4 = egoGauge #elif LAMBDA gauge4 = lambda1Gauge #else gauge4 = afr1Gauge #endif gauge5 = mapGauge #if IAC_GAUGE gauge6 = IACgauge #elif PWM_GAUGE gauge6 = PWMIdlegauge #else ; FIDLE_GAUGE gauge6 = matGauge #endif gauge6 = xTauGauge gauge7 = advdegGauge gauge8 = dwellGauge ;---------------------------------------------------------------------------- ; Indicators ; expr off-label on-label, off-bg, off-fg, on-bg, on-fg ; indicator = { tpsaen }, "Not Accelerating", "AE", cyan, white, red, black ; ; Look in the new colorScheme.ini for the basic ones, add more or tell me what to add. indicator = { ready }, "Not Ready", "Ready", white, black, green, black indicator = { crank }, "Not Cranking", "Cranking", white, black, black, white indicator = { startw }, "ASE off", "ASE ON", white, black, cyan, black indicator = { warmup }, "WUE off", "WUE ON", white, black, blue, white indicator = { tpsaen }, "Accel Enrich", "Accel Enrich", white, black, green, black indicator = { tpsden }, "Decel Cut", "Decel Cut", white, black, green, black indicator = { tps > floodClear && crank }, "Flood clear off", "FLOOD CLEAR ON", white, black, red, black indicator = { batteryVoltage < 10.5 }, "Battery OK", "Battery LOW", green, black, red, black indicator = { port0 }, "Port 0 Off", "Port 0 On", white, black, red, black ;------------------------------------------------------------------------------- [RunTime] barHysteresis = 2.5 ; Seconds #if CELSIUS coolantBar = -40, 100 matBar = -40, 100 #else coolantBar = -40, 215 matBar = -40, 215 #endif batteryBar = 6, 15 dutyCycleBar = 0, 100 #if NARROW_BAND_EGO egoBar = 0.0 , 1.0 #elif LAMBDA egoBar = 0.5, 1.5 #else egoBar = 9.7, 19.7 #endif gammaEBar = 0, 200 mapBar = 0, 255 pulseWidthBar = 0, 25.5 rpmBar = 0, 8000 throttleBar = 0, 100 egoCorrBar = 0, 200 baroCorrBar = 0, 200 warmupCorrBar = 0, 200 airdenCorrBar = 0, 200 veCorrBar = 0, 200 accCorrBar = 0, 100 ;------------------------------------------------------------------------------- [Tuning] #if NARROW_BAND_EGO egoLEDs = 0.0, 1.0, 0.5 ; Voltage settings. #elif LAMBDA egoLEDs = 1.5, 0.5, 1.0 ; Lambda settings. #else egoLEDs = 19.7, 9.7, 14.7 ; Afr settings. #endif ; font = "Lucida Console", 12 ; font = "Courier", 14 spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators. cursorDepth = 2 ; Same as spot depth. ; The four radio buttons on the tuning screen select a "page" of six ; gauges. The gauge numbering is the same as the front page, across ; then down. ; 1 2 ; 3 4 ; 5 6 ; ; gaugeColumns allows you to hide or show gauges in column 2 (i.e., ; gauges 2, 4 and 6). gaugeColumns = 2 ; Only 1 or 2 are valid. ; Page 1 Page 2 Page 3 Page 4 pageButtons = "&EGO", "&WUE", "PW&1", "PW&2" gauge1 = tachometer, tachometer, tachometer, tachometer gauge2 = mapGauge, mapGauge, mapGauge, mapGauge #if NARROW_BAND_EGO gauge3 = egoGauge, egoGauge, egoGauge, egoGauge #elif LAMBDA gauge3 = lambda1Gauge, lambda1Gauge, lambda1Gauge, lambda1Gauge #else gauge3 = afr1Gauge, afr1Gauge, afr1Gauge, afr1Gauge #endif gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidth1Gauge, pulseWidth2Gauge gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycle1Gauge, dutyCycle2Gauge ;------------------------------------------------------------------------------- [AccelerationWizard] tpsDotBar = 0, 100 mapDotBar = 0, 200 ;------------------------------------------------------------------------------- [BurstMode] getCommand = "a\x00\x06" [OutputChannels] deadValue = { 0 } ; Convenient unchanging value. ochBlockSize = 112 ochGetCommand = "a\x00\x06" ; Lower case so we don't get confused. seconds = scalar, U16, 0, "s", 1.000, 0.0 secl = { seconds % 256 }, "s" ; For runtime screen. pulseWidth1 = scalar, U16, 2, "s", 0.001, 0.0 pulseWidth2 = scalar, U16, 4, "s", 0.001, 0.0 pulseWidth = { pulseWidth1 }, "s" ; For runtime screen. rpm = scalar, U16, 6, "RPM", 1.000, 0.0 advance = scalar, S16, 8, "deg", 0.100, 0.0 ; unsigned char squirt,engine,afrtgt1,afrtgt2; // afrtgt in afr x 10 squirt = scalar, U08, 10, "bit", 1.000, 0.0 ; Squirt Event Scheduling Variables - bit fields for "squirt" variable above ; inj1: equ 3 ; 0 = no squirt 1 = squirt ; inj2: equ 5 ; 0 = no squirt 1 = squirt ; sched1: equ 2 ; 0 = nothing scheduled 1 = scheduled to squirt ; firing1: equ 0 ; 0 = not squirting 1 = squirting ; sched2: equ 4 ; firing2: equ 1 firing1 = bits, U08, 10, [0:0] firing2 = bits, U08, 10, [1:1] sched1 = bits, U08, 10, [2:2] inj1 = bits, U08, 10, [3:3] sched2 = bits, U08, 10, [4:4] inj2 = bits, U08, 10, [5:5] engine = scalar, U08, 11, "bit", 1.000, 0.0 ; Engine Operating/Status variables - bit fields for "engine" variable above ; ready: equ 0 ; 0 = engine not ready 1 = ready to run ; crank: equ 1 ; 0 = engine not cranking 1 = engine cranking ; startw: equ 2 ; 0 = not in startup warmup 1 = in warmup enrichment ; warmup: equ 3 ; 0 = not in warmup 1 = in warmup ; tpsaen: equ 4 ; 0 = not in TPS acceleration mode 1 = TPS acceleration mode ; tpsden: equ 5 ; 0 = not in deacceleration mode 1 = in deacceleration mode ; mapaen: equ 6 ; 0 = not in MAP acceleration mode 1 = MAP deaceeleration mode; not implemented ready = bits, U08, 11, [0:0] crank = bits, U08, 11, [1:1] startw = bits, U08, 11, [2:2] warmup = bits, U08, 11, [3:3] tpsaen = bits, U08, 11, [4:4] tpsden = bits, U08, 11, [5:5] mapaen = bits, U08, 11, [6:6] afrtgt1 = scalar, U08, 12, "AFR", 0.100, 0.0 afrtgt2 = scalar, U08, 13, "AFR", 0.100, 0.0 ; unsigned char wbo2_en1,wbo2_en2; // from wbo2 - indicates whether wb afr valid wbo2_en1 = scalar, U08, 14, "", 1.000, 0.0 wbo2_en2 = scalar, U08, 15, "", 1.000, 0.0 ; int baro,map,mat,clt,tps,batt,ego1,ego2,knock, // baro - kpa x 10 ; // map - kpa x 10 ; // mat, clt deg(C/F)x 10 ; // tps - % x 10 ; // batt - vlts x 10 ; // ego1,2 - afr x 10 ; // knock - volts x 10 barometer = scalar, S16, 16, "kPa", 0.100, 0.0 map = scalar, S16, 18, "kPa", 0.100, 0.0 #if CELSIUS mat = scalar, S16, 20, "°C", 0.05555, -320.0 coolant = scalar, S16, 22, "°C", 0.05555, -320.0 #else mat = scalar, S16, 20, "°F", 0.100, 0.0 coolant = scalar, S16, 22, "°F", 0.100, 0.0 #endif tps = scalar, S16, 24, "%", 0.100, 0.0 tpsADC = { tps*10.23 }, "ADC" ; Fake for calibrator and file indexing. throttle = { tps }, "%" batteryVoltage = scalar, S16, 26, "v", 0.100, 0.0 afr1 = scalar, S16, 28, "AFR", 0.100, 0.0 afr2 = scalar, S16, 30, "AFR", 0.100, 0.0 lambda1 = { afr1 / 14.7 }, "Lambda" lambda2 = { afr2 / 14.7 }, "Lambda" knock = scalar, S16, 32, "v", 0.100, 0.0 ; egocor1,egocor2,aircor,warmcor, // all in % egoCorrection1 = scalar, S16, 34, "%", 1.000, 0.0 egoCorrection = { ( egoCorrection1 + egoCorrection2) / 2 }, "%" ; Alias for old gauges. egoCorrection2 = scalar, S16, 36, "%", 1.000, 0.0 airCorrection = scalar, S16, 38, "%", 1.000, 0.0 warmupEnrich = scalar, S16, 40, "%", 1.000, 0.0 fuelComposition = { (fuelCorrection - 100)*1.587 }, % ; works with default sensor values ; tpsaccel,tpsfuelcut,barocor,gammae, // tpsaccel - acc enrich(.1 ms units) ; // tpsfuelcut - % ; // barcor,gammae - % accelEnrich = scalar, S16, 42, "ms", 0.100, 0.0 tpsfuelcut = scalar, S16, 44, "%", 1.000, 0.0 baroCorrection = scalar, S16, 46, "%", 1.000, 0.0 gammaEnrich = scalar, S16, 48, "%", 1.000, 0.0 ; vecurr1,vecurr2,iacstep,cold_adv_deg; // vecurr - % ; // iacstep - steps ; // cold_adv_deg - deg x 10 veCurr1 = scalar, S16, 50, "%", 1.000, 0.0 veCurr2 = scalar, S16, 52, "%", 1.000, 0.0 veCurr = { veCurr1 }, "%" ; For runtime display. iacstep = scalar, S16, 54, "", 1.000, 0.0 idleDC = { iacstep } ; Close enough. coldAdvDeg = scalar, S16, 56, "deg", 0.100, 0.0 tpsDOT = scalar, S16, 58, "%/s", 0.100, 0.0 mapDOT = scalar, S16, 60, "kPa/s", 1.000, 0.0 dwell = scalar, S16, 62, "ms", 0.100, 0.0 maf = scalar, S16, 64, "?", 1.000, 0.0 calcMAP = scalar, S16, 66, "kPa", 0.100, 0.0 ; Blend of MAP and TPS, depends on algorithm fuelCorrection = scalar, S16, 68, "%", 1.000, 0.0 ; Percent alcohol in fuel. portStatus = scalar, U08, 70, "bit", 1.000, 0.0 ; Spare port status bits port0 = bits, U08, 70, [0:0] port1 = bits, U08, 70, [1:1] port2 = bits, U08, 70, [2:2] port3 = bits, U08, 70, [3:3] port4 = bits, U08, 70, [4:4] port5 = bits, U08, 70, [5:5] port6 = bits, U08, 70, [6:6] knockRetard = scalar, U08, 71, "deg", 0.1, 0.0 xTauFuelCorr = scalar, S16, 72, "%", 1.0, 0.0 egoV1 = scalar, S16, 74, "Volts", 0.01, 0.0 egoV2 = scalar, S16, 76, "Volts", 0.01,0.0 AMCevents = scalar, U16, 78, "events", 1.0,0.0 ;pad = array , S16, 80, [14] deltaT = scalar, S32, 108, "uS", 1.000, 0.0 ; Normalized time between trigger pulses, ; "fills in" missing teeth. accDecEnrich = { accelEnrich + (tpsden ? tpsfuelcut : 100) }, "%" time = { timeNow }, "s" rpm100 = { rpm / 100.0 } altDiv1 = { alternate ? 2 : 1 } altDiv2 = { alternate ? 2 : 1 } cycleTime1 = { 60000.0 / rpm * (2.0-twoStroke) }, "ms" nSquirts1 = { nCylinders/divider } dutyCycle1 = { 100.0*nSquirts1/altDiv1*pulseWidth1/cycleTime1 }, "%" cycleTime2 = { 60000.0 / rpm * (2.0-twoStroke) }, "ms" nSquirts2 = { nCylinders/divider } dutyCycle2 = { 100.0*nSquirts2/altDiv2*pulseWidth2/cycleTime2 }, "%" #if NARROW_BAND_EGO egoVoltage = { egoV1 }, "V" ; For LED bars... #elif LAMBDA egoVoltage = { lambda1 }, "Lambda" ; For LED bars... #else egoVoltage = { afr1 }, "AFR" ; For LED bars... #endif ; pageSize = 112 ;------------------------------------------------------------------------------- ;-- The entries are saved in the datalog file in the order in which they -- ;-- appear in the list below. -- ;-- -- ;-- Channel - Case sensitive name of output channel to be logged. -- ;-- Label - String written to header line of log. Be careful -- ;-- about changing these, as programs like MSLVV and -- ;-- MSTweak key off specific column names. -- ;-- Type - Data type of output, converted before writing. -- ;-- Format - C-style output format of data. -- [Datalog] ; Channel Label Type Format ; -------------- ---------- ----- ------ entry = time, "Time", float, "%.3f" entry = seconds, "SecL", int, "%d" entry = rpm, "RPM", int, "%d" entry = map, "MAP", int, "%d" entry = throttle, "TP", int, "%d" entry = batteryVoltage, "vBatt", float, "%.1f" #if NARROW_BAND_EGO entry = egoVoltage, "O2", float, "%.3f" #elif LAMBDA entry = lambda1, "Lambda", float, "%.3f" #else entry = afr1, "AFR", float, "%.2f" #endif entry = mat, "MAT", float, "%.1f" entry = coolant, "CLT", float, "%.1f" entry = engine, "Engine", int, "%d" entry = egoCorrection, "Gego", int, "%d" entry = airCorrection, "Gair", int, "%d" entry = warmupEnrich, "Gwarm", int, "%d" entry = baroCorrection, "Gbaro", int, "%d" entry = gammaEnrich, "Gammae", int, "%d" entry = accDecEnrich, "TPSacc", int, "%d" entry = veCurr1, "Gve", int, "%d" entry = pulseWidth1, "PW", float, "%.3f" entry = dutyCycle1, "DutyCycle1", float, "%.1f" entry = veCurr2, "Gve2", int, "%d" entry = pulseWidth2, "PW2", float, "%.3f" entry = dutyCycle2, "DutyCycle2", float, "%.1f" entry = advance, "SparkAdv", float, "%.1f" entry = coldAdvDeg, "ColdAdv", float, "%.1f" entry = dwell, "Dwell", float, "%.2f" entry = tpsDOT, "tpsDOT", float, "%.1f" entry = mapDOT, "mapDOT", float, "%.1f" entry = iacstep, "IAC", int, "%d" entry = deltaT, "deltaT", float, "%.0f" entry = fuelCorrection, "E85", int, "%d" entry = fuelComposition, "Ethanol%", int, "%d" ; -----------------------------------------------------------