;------------------------------------------------------------------------------- [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. queryCommand = "S" signature = "MegasquirtnSpark Extra V021s***" ; last edited for version 021u and MT2.25b358 or later ;includes fix for const(85) error message ;------------------------------------------------------------------------------- #unset KPa ; Set this to see all settings in KPa rather than some in PSI #unset MPXH6300A ; (304KPA) Set this if using MPXH6300A series 304 KPa MAP sensor ( http://www.freescale.com/files/sensors/doc/data_sheet/MPXH6300A.pdf ) #unset GM300KPa ; (300KPa) Set this if using the GM 29.4PSI 300KPa MAP sensor (GM part # 16040749) info from http://www.aquamist.co.uk/sl/plist/pics/mapm/mapm.html #unset MPXH6400A ; (400KPa) Set this if your a looney and have enough boost for that sensor (http://www.freescale.com/files/sensors/doc/data_sheet/MPXH6400A.pdf) [Constants] ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale endianness = big nPages = 8 burnCommand = "B" pageSize = 212, 212, 212, 212, 212, 212, 212, 212 pageActivate = "P\001", "P\002", "P\003", "P\000" , "P\004" , "P\005", "P\006", "P\007" pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V" pageValueWrite = "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" pageChunkWrite = "X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v" pageActivationDelay = 50 ;USB serial port users may need to increase the following value writeBlocks = on ; Default is on. interWriteDelay = 0 ; Becomes "interCommandDelay" if writeBlocks is "on" ; name = bits, type, offset, bits ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits page = 1 veBins1 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins1 = array, U08, 180, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins1 = array, U08, 192, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins1 = array, U08, 192, [ 12], "kPa", 1.17647, 0, 20.0, 300.0, 0 #elif MPXH6400A mapBins1 = array, U08, 192, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins1 = array, U08, 192, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif crankCold1 = scalar, U08, 144, "ms", 0.1, 0.0, 0.0, 25.5, 1 crankHot1 = scalar, U08, 145, "ms", 0.1, 0.0, 0.0, 25.5, 1 asePct1 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0 aseCount1 = scalar, U08, 147, "", 1.0, 0.0, 0.0, 255.0, 0 wueBins1 = array, U08, 148,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0 taeBins1 = array, U08, 158,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeColdA1 = scalar, U08, 162, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh1 = scalar, U08, 163, "v/s",0.1953125, 0.0, 0.2, 49.8, 3 taeTime1 = scalar, U08, 164, "ms", 0.1, 0.0, 0.0, 25.5, 1 tdePct1 = scalar, U08, 165, "%", 1.0, 0.0, 0.0, 255.0, 0 #if CELSIUS egoTemp1 = scalar, U08, 166, "°C", 0.555, -72, -40, 102.0, 0 #else egoTemp1 = scalar, U08, 166, "°F", 1.0, -40, -40, 215.0, 0 #endif egoCount1 = scalar, U08, 167, "", 1.0, 0.0, 0.0, 255.0, 0 egoDelta1 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255.0, 0 egoLimit1 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255.0, 0 reqFuel1 = scalar, U08, 170, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider1 = scalar, U08, 171, "", 1.0, 0.0 alternate1 = bits, U08, 172, [0:0], "Simultaneous", "Alternating" injOpen1 = scalar, U08, 173, "ms", 0.1, 0.0, 0.1, 25.5, 1 injPwmP1 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 100.0, 0 injPwmT1 = scalar, U08, 176, "ms", 0.1, 0.0, 0.0, 25.5, 1 battFac1 = scalar, U08, 177, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2 rpmk1 = scalar, U16, 178, "", 1.0, 0.0 ; Config1 mapType1 = bits, U08, 204, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID" mapSensor1 = bits, U08, 204, [0:0] twoStroke1 = bits, U08, 204, [2:2], "Four-stroke", "Two-stroke" injType1 = bits, U08, 204, [3:3], "Port", "Throttle Body" nCylinders1= bits, U08, 204, [4:7+1] ; Config3 cltType1 = bits, U08, 205, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3" matType1 = bits, U08, 205, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3" nInjectors1= bits, U08, 205, [4:7+1] ; Config3 engineType1= bits, U08, 206, [0:0], "Even fire", "Odd fire" egoType1 = bits, U08, 206, [1:1], "Narrow band", "Wide band" algorithm1 = bits, U08, 206, [2:2], "Speed Density", "Alpha-N" baroCorr1 = bits, U08, 206, [3:3], "Off", "On" primePulse1= scalar, U08, 207, "ms", 0.1, 0.0, 0.0, 25.5, 1 egoRPM1 = scalar, U08, 208, "RPM", 100.0, 0.0, 100, 25500, 0 #if CELSIUS fastIdleT1 = scalar, U08, 209, "°C", 0.555, -72.0, -40, 102, 1 #else fastIdleT1 = scalar, U08, 209, "°F", 1.0, -40.0, -40, 215, 1 #endif egoSwitch1 = scalar, U08, 210, "v", 0.0196, 0.0, 0.0, 5.0, 3 taeColdM1 = scalar, U08, 211, "%", 1.0, 0.0, 0.0, 250.0, 0 page = 2 veBins2 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins2 = array, U08, 180, [ 12], "RPM", 100.0, 0.0, 100, 25000, 0 #if MPXH6300A mapBins2 = array, U08, 192, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins2 = array, U08, 192, [ 12], "kPa", 1.17647, 0, 20.0, 300.0, 0 #elif MPXH6400A mapBins2 = array, U08, 192, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins2 = array, U08, 192, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif crankCold2 = scalar, U08, 144, "ms", 0.1, 0.0, 0.0, 25.5, 1 crankHot2 = scalar, U08, 145, "ms", 0.1, 0.0, 0.0, 25.5, 1 asePct2 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0 aseCount2 = scalar, U08, 147, "", 1.0, 0.0, 0.0, 255.0, 0 wueBins2 = array, U08, 148,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0 taeBins2 = array, U08, 158,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeColdA2 = scalar, U08, 162, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh2 = scalar, U08, 163, "v/s",0.1953125, 0.0, 0.2, 49.8, 3 taeTime2 = scalar, U08, 164, "ms", 0.1, 0.0, 0.0, 25.5, 1 tdePct2 = scalar, U08, 165, "%", 1.0, 0.0, 0.0, 255.0, 0 #if CELSIUS egoTemp2 = scalar, U08, 166, "°C", 0.555, -72, -40, 102.0, 0 #else egoTemp2 = scalar, U08, 166, "°F", 1.0, -40, -40, 215.0, 0 #endif egoCount2 = scalar, U08, 167, "", 1.0, 0.0, 0.0, 255.0, 0 egoDelta2 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255.0, 0 egoLimit2 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255.0, 0 reqFuel2 = scalar, U08, 170, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider2 = scalar, U08, 171, "", 1.0, 0.0 alternate2 = bits, U08, 172, [0:0], "Simultaneous", "Alternating" injOpen2 = scalar, U08, 173, "ms", 0.1, 0.0, 0.1, 25.5, 1 injPwmP2 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 100.0, 0 injPwmT2 = scalar, U08, 176, "ms", 0.1, 0.0, 0.0, 25.5, 1 battFac2 = scalar, U08, 177, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2 rpmk2 = scalar, U16, 178, "", 1.0, 0.0 ; Config1 mapType2 = bits, U08, 204, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID" twoStroke2 = bits, U08, 204, [2:2], "Four-stroke", "Two-stroke" injType2 = bits, U08, 204, [3:3], "Port", "Throttle Body" nCylinders2= bits, U08, 204, [4:7+1] ; Config3 cltType2 = bits, U08, 205, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3" matType2 = bits, U08, 205, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3" nInjectors2= bits, U08, 205, [4:7+1] ; Config3 engineType2= bits, U08, 206, [0:0], "Even fire", "Odd fire" egoType2 = bits, U08, 206, [1:1], "Narrow band", "Wide band" algorithm2 = bits, U08, 206, [2:2], "Speed Density", "Alpha-N" baroCorr2 = bits, U08, 206, [3:3], "Off", "On" primePulse2= scalar, U08, 207, "ms", 0.1, 0.0, 0.0, 25.5, 1 egoRPM2 = scalar, U08, 208, "RPM", 100.0, 0.0, 100, 25500, 0 #if CELSIUS fastIdleT2 = scalar, U08, 209, "°C", 0.555, -72.0, -40, 102, 1 #else fastIdleT2 = scalar, U08, 209, "°F", 1.0, -40.0, -40, 215, 1 #endif egoSwitch2 = scalar, U08, 210, "v", 0.0196, 0.0, 0.0, 5.0, 3 taeColdM2 = scalar, U08, 211, "%", 1.0, 0.0, 0.0, 250.0, 0 page = 3 advTable1 = array, U08, 0,[12x12], "deg", 0.352, -28.4, -10.0, 80.0, 0 rpmBins3 = array, U08, 144,[ 12], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins3 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins3 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 20.0, 300.0, 0 #elif MPXH6400A mapBins3 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins3 = array, U08, 156,[ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif TrigAng = scalar, U08, 168, "Deg", 0.352, 0, 0, 90, 0 FixAng = scalar, U08, 169, "Deg", 0.352, -28.4, -10, 80, 0 Trim = scalar, U08, 170, "Deg", 0.352, 0, 0, 90, 0 CrankAng = scalar, U08, 171, "Deg", 0.352, -28.4, -10, 80, 0 IgHold = scalar, U08, 172, "", 1, 0, 0, 100, 0 ; TrigPlus = bits, U08, 173[0:0], "0", "+22.5" ; TrigPPlus = bits, U08, 173[1:1], "0", "+22.5" Trig_plus = bits, U08, 173[0:1], "0", "+22.5", "INVALID", "+45" TrigCrank = bits, U08, 173[2:2], "Trigger Return", "Time Based" IgInv = bits, U08, 173[3:3], "No", "Yes" page = 4 msnsCyl = bits, U08, 0, [0:0], "Off*", "MSnS^" neonCrank = bits, U08, 0, [1:1], "Off*^", "Neon/420A" wheelon = bits, U08, 0, [2:2], "Off*^", "Generic wheel" onetwo = bits, U08, 0, [3:3], "+/-1", "+/-2" edis = bits, U08, 0, [4:5], "Off*^", "EDIS", "INVALID", "dual EDIS" tfi = bits, U08, 0, [6:6], "Off*^", "Ford TFI" hei7 = bits, U08, 0, [7:7], "Off*^", "GM 7pin HEI" ; used to capture all ignition modes, for menu selection ignmode = scalar, U08, 0, "", 1, 0, 0,0 255,0 fidleUse = bits, U08, 1, [0:0], "Idle control*", "Spark output^" led17Use = bits, U08, 1, [1:1], "Squirt*^", "Spark output" led18Use = bits, U08, 1, [2:3], "Warmup*^", "IRQ trigger", "Output4","Spark output C" led18_2Use = bits, U08, 1, [3:3] led19Use = bits, U08, 1, [4:4], "Acceleration*^", "Spark output B" x2use = bits, U08, 1, [5:5], "Water inj", "Fan control" ;bit 6 is led18/fan control toy_dli = bits, U08, 1, [7:7], "Normal*", "Toyota DLI muliplex" SoftRevLim = scalar, U08, 2, "rpm", 100.0, 0.0, 100, 25500, 0 SoftLimRetard = scalar, U08, 3, "deg", 0.352, -28.4, -10, 80, 0 SoftLimMax = scalar, U08, 4, "s", 0.1, 0.0, 0.0, 25.5, 1 ; "MSnS Soft limit cool time (s)", 5, 0.1, 0.0, 0.0, 25.5 NOT USED HardRevLim = scalar, U08, 6, "rpm", 100, 0.0, 100, 25500, 0 out1lim = scalar, U08, 7, "raw byte or deg F +40", 1, 0, 0, 255, 0 out1src = bits, U08, 8, [0:3], "Off*", "Traction Active", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID" out2lim = scalar, U08, 9, "raw byte or deg F +40", 1, 0, 0, 255, 0 out2src = bits, U08, 10, [0:3], "Off*", "Traction Active", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID" out1Hysis = scalar, U08, 126, "raw byte or deg F", 1, 0, 0, 255, 0 out2Hysis = scalar, U08, 127, "raw byte or deg F", 1, 0, 0, 255, 0 out3lim = scalar, U08, 133, "raw byte or deg F +40", 1, 0, 0, 255, 0 out3src = bits, U08, 132, [0:7], "Off*", "Traction Active", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID" out3Timer = scalar, U08, 134, "Sec", 0.1, 0, 0, 25.5 , 1 out4lim = scalar, U08, 139, "raw byte or deg F +40", 1, 0, 0, 255, 0 out4src = bits, U08, 138, [0:7], "Off*", "Traction Active", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID" out4FAN = bits, U08, 1, [6:6], "Source", "Fan Control" aseIgnCount = bits, U08, 11, [0:0], "Sec", "Cycles*^" egoIgnCount = bits, U08, 11, [1:1], "mSec", "Ign Pulses*^" idlIgnCount = bits, U08, 11, [2:2], "Off", "On*^" taeIgnCount = bits, U08, 11, [3:3], "Sec*^", "Cycles" interpPrime = bits, U08, 11, [4:4], "Off*^", "On" hybridAN = bits, U08, 11, [5:5], "Off*^", "On" inj2cr = bits, U08 11, [6:6], "Off", "On*^" boostUse = bits, U08, 12, [0:0], "Output1*^", "Boost Control" shiftUse = bits, U08, 12, [1:1], "Off*^", "On" launchUse = bits, U08, 12, [2:2], "Off*^", "On" pwmIdle = bits, U08, 12, [3:3], "B&G On-Off*^", "Fielding PWM" falsetrig = bits, U08, 12, [4:4], "On*^", "Off" en_ack = bits, U08, 12, [5:5], "Don't ACK*^", "Do ACK" dwellduty50 = bits, U08, 12, [6:6], "75% duty cycle*^", "50% duty cycle" CrankRPM = scalar, U08, 13, "rpm", 100.0, 0.0, 100, 1000, 0 freqDiv = bits, U08, 14, [0:2], "INVALID","39.0 Hz","19.5 Hz","13.0 Hz","9.8 Hz","7.8 Hz","6.5 Hz","5.6 Hz" bcUpdateRate = scalar, U08, 15, "ms", 1.0, 0.0, 10, 255, 0 pGain = scalar, U08, 16, "%", 0.3922, 0.0, 0, 100, 1 dGain = scalar, U08, 17, "%", 0.3922, 0.0, 0, 100, 1 ShiftLower = scalar, U08, 18, "rpm", 100.0, 0.0, 100, 25500, 0 ShiftUpper = scalar, U08, 19, "rpm", 100.0, 0.0, 100, 25500, 0 LaunchLim = scalar, U08, 20, "rpm", 100.0, 0.0, 100, 25500, 0 edismultirpm = scalar, U08, 21, "rpm", 100.0, 0.0, 100, 2500, 0 BoostDir = bits, U08, 92, [6:6], "Increase boost", "Decrease Boost" inj1g = bits, U08, 33, [5:5], "off", "on*^" inj2t = bits, U08, 33, [4:4], "1*^", "2 (DT)" inj2g = bits, U08, 33, [6:6], "off", "on*^" #if MPXH6300A KPaTarg10 = scalar, U08, 29, "KPa", 1.213675, 1.53, 100, 304.0, 0 KPaTarg40 = scalar, U08, 30, "KPa", 1.213675, 1.53, 100, 304.0, 0 KPaTarg60 = scalar, U08, 31, "KPa", 1.213675, 1.53, 100, 304.0, 0 KPaTarg100 = scalar, U08, 32, "KPa", 1.213675, 1.53, 100, 304.0, 0 #elif GM300KPa KPaTarg10 = scalar, U08, 29, "KPa", 1.17647, 0, 100, 300.0, 0 KPaTarg40 = scalar, U08, 30, "KPa", 1.17647, 0, 100, 300.0, 0 KPaTarg60 = scalar, U08, 31, "KPa", 1.17647, 0, 100, 300.0, 0 KPaTarg100 = scalar, U08, 32, "KPa", 1.17647, 0, 100, 300.0, 0 #elif MPXH6400A KPaTarg10 = scalar, U08, 29, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 KPaTarg40 = scalar, U08, 30, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 KPaTarg60 = scalar, U08, 31, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 KPaTarg100 = scalar, U08, 32, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else KPaTarg10 = scalar, U08, 29, "KPa", 1, 0, 100, 255, 0 KPaTarg40 = scalar, U08, 30, "KPa", 1, 0, 100, 255, 0 KPaTarg60 = scalar, U08, 31, "KPa", 1, 0, 100, 255, 0 KPaTarg100 = scalar, U08, 32, "KPa", 1, 0, 100, 255, 0 #endif TPSRPMTarg = bits, U08, 92, [7:7], "TPS", "RPM" TargetB1 = scalar, U08, 25, "Raw Value", 1, 0, 0, 255, 0 TargetB2 = scalar, U08, 26, "Raw Value", 1, 0, 0, 255, 0 TargetB3 = scalar, U08, 27, "Raw Value", 1, 0, 0, 255, 0 TargetB4 = scalar, U08, 28, "Raw Value", 1, 0, 0, 255, 0 ; Added for Enhanced stuff ; Target AFR 8 x 8 table AfrTar = bits, U08, 46,[7:7], "Off*^(DT)", "On" AfrTar2 = bits, U08, 92,[1:1], "Off*^(DT)", "On" #if MPXH6300A EgoLimKPa = scalar, U08, 39, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa EgoLimKPa = scalar, U08, 39, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A EgoLimKPa = scalar, U08, 39, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else EgoLimKPa = scalar, U08, 39, "KPa", 1, 0, 0, 255, 0 #endif EgoLim2 = scalar, U08, 40, "+-", 1, 0, 0, 100, 0 KpaTPSTar = bits, U08, 109,[4:4], "Speed Density", "Alpha-N" TPSTar = bits, U08, 109,[5:5], "Always", "Above TPS Setpoint" TPSAFRPoint = scalar, U08, 121, "Raw ADC", 1, 0, 0, 255, 0 ; More Launch Stuff LachTps = scalar, U08, 41, "Raw ADC", 1, 0, 0, 255, 0 LachDeg = scalar, U08, 42, "Deg", 0.352, -28.4, -10, 45, 0 LachRpm = scalar, U08, 43, "RPM", 100, 0, 0, 3500, 0 VLaunch = bits, U08, 46[1:1], "Off", "On" ; Over Boost Protection #if MPXH6300A OvrBKpa = scalar, U08, 44, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa OvrBKpa = scalar, U08, 44, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A OvrBKpa = scalar, U08, 44, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #elif KPa OvrBKpa = scalar, U08, 44, "KPa", 1, 0, 100, 0, 255, 0 #else OvrBKpa = scalar, U08, 44, "PSI", 0.147, -100, -15, 23, 1 #endif ; Coolant / Iat Related Ignition CltAdv = bits, U08, 46[2:2], "Off", "On" #if CELSIUS IgAdvDeg = scalar, U08, 48, "C", 0.555, 0, 0, 100, 1 IgAdvTemp = scalar, U08, 47, "C", 0.555, -72, -40, 70, 1 IgRetDeg = scalar, U08, 50, "C", 0.555, 0, 0, 102, 1 IgRetTemp = scalar, U08, 52, "C", 0.555, -72, -40, 102, 1 #else IgAdvDeg = scalar, U08, 48, "F", 1, 0, 0, 120, 1 IgAdvTemp = scalar, U08, 47, "F", 1, -40, -10, 120, 1 IgRetDeg = scalar, U08, 50, "F", 1, 0, 0, 120, 1 IgRetTemp = scalar, U08, 52, "F", 1, -40, -10, 120, 1 #endif MaxIatAdv = scalar, U08, 49, "Deg", 0.352,0 , 0, 15, 1 #if MPXH6300A IatAdvKpa = scalar, U08, 51, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa IatAdvKpa = scalar, U08, 51, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A IatAdvKpa = scalar, U08, 51, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else IatAdvKpa = scalar, U08, 51, "KPa", 1, 0, 0, 255, 0 #endif ; KNOCK DETECTOR SETTINGS KnockOn = bits, U08, 46[6:6], "Off","On" KnockRpm = scalar, U08, 53, "RPM", 100, 0, 0, 12000, 0 #if MPXH6300A KnockKpa = scalar, U08, 55, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa KnockKpa = scalar, U08, 55, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A KnockKpa = scalar, U08, 55, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else KnockKpa = scalar, U08, 55, "KPa", 1, 0, 0, 255, 0 #endif KnockRpmL = scalar, U08, 54, "RPM", 100, 0, 0 , 12000, 0 KnockRet = scalar, U08, 56, "Deg", 0.352, 0, 0, 10, 0 KnockSb = scalar, U08, 57, "Deg", 0.352, 0, 0, 10, 0 KnockMax = scalar, U08, 59, "Deg", 0.352, 0, 1, 30, 0 KnockAdv = scalar, U08, 58, "Deg", 0.352, 0, 0, 20, 0 KnockTim = scalar, U08, 60, "Sec", 1, 0, 1, 10, 0 #if MPXH6300A KnockBoost = scalar, U08, 107, "KPa", 1.213675, 1.53, 0, 304.0, 0 BoostMaxKn = scalar, U08, 108, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa KnockBoost = scalar, U08, 107, "KPa", 1.17647, 0, 0, 300.0, 0 BoostMaxKn = scalar, U08, 108, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A KnockBoost = scalar, U08, 107, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 BoostMaxKn = scalar, U08, 108, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #elif KPa KnockBoost = scalar, U08, 107, "KPa", 1, 0, 0, 155, 0 BoostMaxKn = scalar, U08, 108, "KPa", 1, 0, 0, 155, 0 #else KnockBoost = scalar, U08, 107, "PSI", 0.147, 0, 0, 20, 0 BoostMaxKn = scalar, U08, 108, "PSI", 0.147, 0, 0, 20, 0 #endif ; WATER INJECTION SETTINGS WaterInj = bits, U08, 46[3:3], "Off*", "On" WaterIRpm = scalar, U08, 63, "RPM", 100, 0, 0, 12000, 0 #if MPXH6300A StartWIKPa = scalar, U08, 62, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa StartWIKPa = scalar, U08, 62, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A StartWIKPa = scalar, U08, 62, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #elif KPa StartWIKPa = scalar, U08, 62, "KPa", 1, 0, 0, 255, 0 #else StartWIKPa = scalar, U08, 62, "PSI", 0.147, -100, 0, 20, 0 #endif #if CELSIUS WaterIIat = scalar, U08, 61, "C", 0.555, -72, -40, 102, 1 #else WaterIIat = scalar, U08, 61, "F", 1, -40, -10, 120, 1 #endif ; OPEN LOOP MODE OLoopEgo = bits, U08, 46[0:0], "TPS", "KPa" #if MPXH6300A KPaOn = scalar, U08, 64, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa KPaOn = scalar, U08, 64, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A KPaOn = scalar, U08, 64, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else KPaOn = scalar, U08, 64, "KPa", 1, 0, 0 , 255, 0 #endif TpsOn = scalar, U08, 65, "Raw", 1, 0, 0, 255, 0 #if CELSIUS fastIdleTemp = scalar, U08, 34, "°C", 0.555, -72.0, -40, 102 slowIdleTemp = scalar, U08, 35, "°C", 0.555, -72.0, -40, 102 #else fastIdleTemp = scalar, U08, 34, "°F", 1.0, -40.0, -40, 215 slowIdleTemp = scalar, U08, 35, "°F", 1.0, -40.0, -40, 215 #endif fastIdleRPM = scalar, U08, 36, "RPM", 10.0, 0.0, 10, 2550 slowIdleRPM = scalar, U08, 37, "RPM", 10.0, 0.0, 10, 2550 ; For TPS from ADC, use scale=100/(max-min) and tra=-min ; 100/(225-26) = 0.502, -26, might just be best to leave it in ADC... idleThresh = scalar, U08, 38, "%", 0.502, -26.0, 0.0, 255 ; HARD CUT TYPE SETTINGS FOR REV LIMITER AND LAUNCH AND OVER BOOST HCutType = bits, U08, 46[4:5], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID" HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0 HCutLCType = bits, U08, 76[0:1], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID" HCutLCSpark = scalar, U08, 77, "Sparks", 1, 0, 0, 20, 0 SparkCutBase = scalar, U08, 78, "Sparks", 1, -1, 5, 20, 0 ; -1 to Value OvrBCutType = bits, U08, 76[4:5], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID" SparkCutBNum = scalar, U08, 84, "Sparks", 1, 0, 0, 20, 0 ; Output Inverters InvOut1 = bits, U08, 66[1:1], "Normal", "Inverted" InvOut2 = bits, U08, 66[2:2], "Normal", "Inverted" Out1UpLim = scalar, U08, 88, "raw byte or deg F +40", 1, 0, 0, 255, 0 Out2UpLim = scalar, U08, 89, "raw byte or deg F +40", 1, 0, 0, 255, 0 ; EDIS multi-spark edismulti = bits, U08, 66[3:3], "Off*^", "On" ; Nitrous System NosRpm = scalar, U08, 23, "RPM", 100, 0, 3000, 25000, 0 NosTps = scalar, U08, 67, "Raw", 1, 0, 0, 255, 0 #if CELSIUS NosClt = scalar, U08, 22, "C", 0.555, -72, -40, 102, 1 #else NosClt = scalar, U08, 22, "F", 1, -40, -10, 120, 1 #endif NosAngle = scalar, U08, 68, "Deg", 0.352, 0, 0, 30, 0 NosPWLo = scalar, U08, 69, "mSec", 0.1, 0, 0, 25.5, 1 NosPWHi = scalar, U08, 70, "mSec", 0.1, 0, 0, 25.5, 1 nitrousUse = bits, U08, 11, [7:7], "Off*", "On" NosRpmMax = scalar, U08, 24, "RPM", 100, 0, 3000, 25000, 0 DtNos = bits, U08, 66[5:5], "Bank1", "Bank2" NosLagSystem = bits, U08, 76[6:6], "Off", "On" #if MPXH6300A NosLowKpa = scalar, U08, 85, "KPa", 1.213675, 1.53, 0, 304.0, 0 NosHiKpa = scalar, U08, 86, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa NosLowKpa = scalar, U08, 85, "KPa", 1.17647, 0, 0, 300.0, 0 NosHiKpa = scalar, U08, 86, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A NosLowKpa = scalar, U08, 85, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 NosHiKpa = scalar, U08, 86, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else NosLowKpa = scalar, U08, 85, "KPa", 1, 0, 0, 255 NosHiKpa = scalar, U08, 86, "KPa", 1, 0, 0, 255 #endif ;wheel decoder numteeth = scalar, U08, 90, "", 1, 0, 0, 63 trig1 = scalar, U08, 25, "", 1, 0, 0, 63 trig2 = scalar, U08, 26, "", 1, 0, 0, 63 trig3 = scalar, U08, 27, "", 1, 0, 0, 63 trig4 = scalar, U08, 28, "", 1, 0, 0, 63 trig1ret = scalar, U08, 29, "", 1, 0, 0, 63 trig2ret = scalar, U08, 30, "", 1, 0, 0, 63 trig3ret = scalar, U08, 31, "", 1, 0, 0, 63 trig4ret = scalar, U08, 32, "", 1, 0, 0, 63 ;late leading for rotary. This had better get used! trig1r = scalar, U08, 140, "", 1, 0, 0, 63 trig2r = scalar, U08, 141, "", 1, 0, 0, 63 trig3r = scalar, U08, 142, "", 1, 0, 0, 63 ; OVER RUN FUEL CUT SETTINGS OvrRunC = bits, U08, 66[6:6], "Off","On" OvrRunRpm = scalar, U08, 71, "RPM", 100, 0, 1000, 6000, 0 #if MPXH6300A OvrRunKpa = scalar, U08, 72, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa OvrRunKpa = scalar, U08, 72, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A OvrRunKpa = scalar, U08, 72, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else OvrRunKpa = scalar, U08, 72, "KPa", 1, 0, 0, 255, 0 #endif OvrRunTps = scalar, U08, 73, "Raw ADC", 1, 0, 0, 255, 0 OvrRunTimr = scalar, U08, 130, "Sec", 1, 0, 0, 255, 0 ; Accel Dot Settings AccDecEnrich = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot" KPaDotBoost = bits, U08, 66[4:4], "Never", "In Boost" ; Electric Fan control (X2) - can't be used with water inj #if CELSIUS efanontemp = scalar, U08, 74, "C", 0.555, -72, -40, 102, 1 efanofftemp = scalar, U08, 75, "C", 0.555, -72, -40, 102, 1 #else efanontemp = scalar, U08, 74, "F", 1, -40, -40, 215, 1 efanofftemp = scalar, U08, 75, "F", 1, -40, -40, 215, 1 #endif ; STAGED INJECTION IStagedMode = bits, U08, 76[2:3],"Off*^","RPM-Based","MAP-Based","TPS-Based" ScaleFac = scalar, U08, 79, "", 1.0, 0.0, 0, 255 StgTrans = scalar, U08, 80, "", 1.0, 0.0, 0, 255 StgDelta = scalar, U08, 81, "", 1.0, 0.0, 0, 255 ; BARO CORRECTION #if MPXH6300A BarroHi = scalar, U08, 82, "KPa", 1.213675, 1.53, 0, 304.0, 0 BarroLow = scalar, U08, 83, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa BarroHi = scalar, U08, 82, "KPa", 1.17647, 0, 0, 300.0, 0 BarroLow = scalar, U08, 83, "KPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A BarroHi = scalar, U08, 82, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 BarroLow = scalar, U08, 83, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #elif MPX4250 BarroHi = scalar, U08, 82, "KPa", 0.9837, 8, 10, 255 BarroLow = scalar, U08, 83, "KPa", 0.9837, 8, 10, 255 #else BarroHi = scalar, U08, 82, "KPa", 0.433, 10, 10, 255 BarroLow = scalar, U08, 83, "KPa", 0.433, 10, 10, 255 #endif ; SECOND O2 SETTINGS TwoLambda = bits, U08, 66[0:0], "None*^(DT)", "Fitted (DT only)" ; Spark Table Selection STTable2On = bits, U08, 76[7:7], "Spark Table1^", "Spark Table2" ST2Delay = scalar, U08, 87, "Sec", 0.1, 0, 0, 25, 1 ; VE Table 3 UseVE3 = bits, U08, 92[0:0], "Dont switch*^(DT)" ,"Switch to Table3" VE3Delay = scalar, U08, 93, "Sec", 0.1, 0, 0, 25, 1 ; Priming SETTINGS AlwaysPrime = bits, U08, 92[2:2], "Prime Pulse>0*^", "Always" PrimeLate = bits, U08, 92[3:4], "Power Up*^", "INVALID", "Twice","After 2 Secs" ; Traction Control TractionOn = bits, U08, 92[5:5], "Off*^", "On" RPMThresh = scalar, U08, 98, "RPM/Sec", 1000, 0, 1000, 25000, 0 RPM1S = scalar, U08, 94, "3000RPM/Sec or 5%Slip", 0.1, 0, 0, 20.0, 1 RPM2S = scalar, U08, 95, "4000RPM/Sec or 15%Slip", 0.1, 0, 0, 20.0, 1 RPM3S = scalar, U08, 96, "6000RPM/Sec or 30%Slip", 0.1, 0, 0, 20.0, 1 RPM4S = scalar, U08, 97, "10000RPM/Sec or 70%Slip ", 0.1, 0, 0, 20.0, 1 TractRet1 = scalar, U08, 99, "3000RPM/Sec or 5%Slip", 0.352, 0, 0, 30, 0 TractRet2 = scalar, U08, 100, "4000RPM/Sec or 15%Slip", 0.352, 0, 0, 30, 0 TractRet3 = scalar, U08, 101, "6000RPM/Sec or 30%Slip", 0.352, 0, 0, 30, 0 TractRet4 = scalar, U08, 102, "10000RPM/Sec or 70%Slip", 0.352, 0, 0, 30, 0 TractSC1 = scalar, U08, 103, "3000RPM/Sec or 5%Slip", 1, 0, 0, 2, 0 TractSC2 = scalar, U08, 104, "4000RPM/Sec or 15%Slip", 1, 0, 0, 2, 0 TractSC3 = scalar, U08, 105, "6000RPM/Sec or 30%Slip", 1, 0, 0, 2, 0 TractSC4 = scalar, U08, 106, "10000RPM/Sec or 70%Slip", 1, 0, 0, 2, 0 TractNOS = bits, U08, 109, [0:0], "No", "Yes" TractCyc1 = scalar, U08, 112, "3000RPM/Sec or 5%Slip", 1, 0, 1, 255, 0 TractCyc2 = scalar, U08, 113, "4000RPM/Sec or 15%Slip", 1, 0, 1, 255, 0 TractCyc3 = scalar, U08, 114, "6000RPM/Sec or 30%Slip", 1, 0, 1, 255, 0 TractCyc4 = scalar, U08, 115, "10000RPM/Sec or 70%Slip", 1, 0, 1, 255, 0 TractCySec = bits, U08, 109,[2:2] "RPM stable for 0.1S", "Cycle count only" TractScale = scalar, U08, 119, "%", 0.39216, 0, 0, 100, 0 TractSlip = scalar, U08, 120, "%", 0.39216, 0, 0, 100, 0 TractVSSMax = scalar, U08, 118, "V", 0.0196, 0, 0, 5, 2 TractVSSMin = scalar, U08, 117, "V", 0.0196, 0, 0, 5, 2 TractMode = bits, U08, 109, [3:3], "RPM Based", "Vehicle Speed Sensors" TractSlipH = scalar, U08, 123, "%", 0.39216, 0, 0, 100, 0 ;Dwell control dwellcont = bits, U08, 109, [1:1], "Fixed duty*^", "Dwell control" dwellcrank = scalar, U08, 110, "ms", 0.1, 0, 0, 25.5, 1 dwellrun = scalar, U08, 111, "ms", 0.1, 0, 0, 25.5, 1 idle_dc_lo = scalar, U08, 122, "dc%", 1, 0, 0, 100, 0 ; idle_dc_hi = 0 pwmidlewhen = bits, U08, 109[6:7], "INVALID", "Warmup only", "Closed loop only", "Warmup+closed loop" ; bc_default = scalar, U08, 124, "dc%", 1, 0, 0, 100, 0 #if MPXH6300A bc_max_diff = scalar, U08, 125, "kPa", 1.213675, 1.53, 0, 304.0, 0 DecelKPa = scalar, U08, 129, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif GM300KPa bc_max_diff = scalar, U08, 125, "kPa", 1.17647, 0, 0, 300.0, 0 DecelKPa = scalar, U08, 129, "KPa", 1.17647, 0, 0, 304.0, 0 #elif MPXH6400A bc_max_diff = scalar, U08, 125, "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 DecelKPa = scalar, U08, 129, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else bc_max_diff = scalar, U08, 125, "kPa", 1.0, 0.0, 0.0, 255.0, 0 DecelKPa = scalar, U08, 129, "KPa", 1.0, 0.0, 0.0 255.0, 0 #endif tpsflood = scalar, U08, 128, "raw", 1.0, 0.0, 0.0, 255.0, 0 DecelBoost = bits, U08, 92, [7:7], "Never*^" , "Above KPa Setpoint" ; 300 KPA SENSOR KPA300Sens = bits, U08, 116, [0:1], "B+G Sensor*^", "300KPa", "INVALID", "400KPa" KPA300BARO = scalar, U08, 131, "%", 0.39216, 0, 0, 100, 0 ; CLT vs MAT for cranking pulse width crankpwip = bits, U08, 116, [3:4], "INVALID", "CLT only*^", "MAT only", "CLT,MAT average" ; More Boost Controller Stuff #if CELSIUS IATBoostSt = scalar, U08, 135, "C", 0.555, -72, -40, 100, 1 IATBoost = scalar, U08, 136, "C", 0.555, 0, 0, 102, 1 TPSBooIAT = scalar, U08, 137, "Raw ADC", 1, 0, 0, 255, 0 #else IATBoostSt = scalar, U08, 135, "F", 1, -40, -10, 120, 1 IATBoost = scalar, U08, 136, "F", 1, 0, 0, 120, 1 TPSBooIAT = scalar, U08, 137, "Raw ADC", 1, 0, 0, 255, 0 #endif BooTbl2Use = bits, U08, 116, [2:2], "Dont Switch*^", "Targets 2" page = 5 advTable2 = array, U08, 0,[12x12], "deg", 0.352, -28.4, -10.0, 80.0, 0 rpmBins4 = array, U08, 144,[ 12], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins4 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins4 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A mapBins4 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins4 = array, U08, 156,[ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif page = 6 veBins3 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins5 = array, U08, 144, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins5 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins5 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A mapBins5 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins5 = array, U08, 156, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif page = 7 ; TARGET AFR table 1 BINS FOR VE 1 (First find which sensor used) #if NARROW_BAND_EGO afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif WB_Non_Above afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif DIY_TechE_NonL afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif TechEdge_Lin afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1 #elif Innovate1_2 afrBins1 = array, U08, 0, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1 #elif Innovate0_5 afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1 #else ; Should never get here but just incase put message on screen #error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating." #exit ; Terminate MT #endif rpmBins6 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins6 = array, U08, 72, [ 8], "kPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A mapBins6 = array, U08, 72, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins6 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif ; TARGET AFR table 2 BINS FOR VE 3 (First find which sensor used) #if NARROW_BAND_EGO afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif WB_Non_Above afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif DIY_TechE_NonL afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif TechEdge_Lin afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229, 9.0, 19.0, 1 #elif Innovate1_2 afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 0.0, 20.0, 1 #elif Innovate0_5 afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255, 10.0, 20.0, 1 #else ; Should never get here but just incase put message on screen #error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating." #exit ; Terminate MT #endif rpmBins7 = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 #if MPXH6300A mapBins7 = array, U08, 152, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa mapBins7 = array, U08, 152, [ 8], "kPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A mapBins7 = array, U08, 152, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins7 = array, U08, 152,[ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif page = 8 ; boost controller targets ;target kpa #if MPXH6300A bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif GM300KPa bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.17647, 0, 0, 300.0, 0 bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.17647, 0, 0, 300.0, 0 #elif MPXH6400A bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else bcBins1 = array, U08, 0, [6x6], "kpa", 1, 0, 0.0, 255.0, 0 bcBins3 = array, U08, 96, [6x6], "kpa", 1, 0, 0.0, 255.0, 0 #endif bcrpmBins1 = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 bctpsBins1 = array, U08, 42,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0 ;default duty cycle bcBins2 = array, U08, 48, [6x6], "duty", 0.392, 0, 0.0, 100.0, 0 bcrpmBins2 = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 bctpsBins2 = array, U08, 90,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0 bcrpmBins3 = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 bctpsBins3 = array, U08, 138,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0 ;------------------------------------------------------------------------------- [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_separator ; ; 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. ; ;---------------------------------------------------------------------------- menu = "Fuel Tables&1+3" subMenu = std_constants, "&Constants 1", 1 subMenu = std_enrichments, "&Enrichments 1", 1 subMenu = veTable1Tbl, "&VE Table 1", 0 subMenu = afrTable1Tbl, "A&FR Targets for VE Table 1", 0, { AfrTar } subMenu = veTable3Tbl, "VE Table &3", 0, { UseVE3 } subMenu = afrTable2Tbl, "AF&R Targets for VE Table 3", 0, { UseVE3 & AfrTar2 } menu = "Fuel Table&2(DT)", { inj2t } subMenu = std_constants, "&Constants 2 (DT)", 2 subMenu = std_enrichments, "&Enrichments 2 (DT)", 2 subMenu = veTable2Tbl, "&VE Table 2 (DT)" menu = "&General" subMenu = fuelTable, "&Fuel table selection" subMenu = LambdaSet, "&Lambda AFR Settings" subMenu = OpenLoop, "&Open Loop Mode" subMenu = OvrBoo, "Over &Boost Protection" subMenu = HardLim, "&Hard Cut/Limiter Type" subMenu = LaunchSettings, "Launch &Control" subMenu = OvrRun, "Over &Run Settings" subMenu = AccelDecc, "&Accel Deccl Mode" subMenu = traction, "Anti-Rev System (Traction Control)" subMenu = traction2, "Anti-Rev System cont...", 0, {TractionOn} subMenu = idleControl, "&Idle Control", 0, { !fidleUse } subMenu = boostControl, "&Boost Control", 0, { boostUse } subMenu = boostTbl1, "Boost kpa targets table1", 8, { boostUse } subMenu = boostTbl3, "Boost kpa targets table2", 8, { boostUse & BooTbl2Use} subMenu = boostTbl2, "Boost duty targets", 8, { boostUse } subMenu = boostIAT, "(NEW) IAT Related Boost", 0, { boostUse } menu = "Spar&k", { ignmode } subMenu = sparkSettings, "&Spark Settings" subMenu = sparkTbl, "Spark Table &1" subMenu = sparkTbl2, "Spark Table &2", 0, { STTable2On } subMenu = SparkT2, "Spar&k Table selection", subMenu = Knock, "Kn&ock System" subMenu = IatCltIg, "&IAT/Clt Related Ignition" subMenu = dwellSettings, "Dwell settings" menu = "&Code Config" subMenu = codeBase, "(NEW)&Codebase and outputs function" subMenu = advanced, "&Advanced code options" subMenu = wheeldecoder, "Wheel decoder settings", 0, { wheelon } subMenu = MapSettings, "(NEW)MA&P Sensor Settings" subMenu = miscSettings, "&Misc settings" subMenu = BarroCor, "&Barometric Correction" subMenu = outputs, "&Outputs" subMenu = outputs2, "(NEW)S&hift light/ fan/ Output 3+4" subMenu = WaterInj, "&Water Injection Settings", 0, { !x2use } subMenu = NosSystem, "&Nitrous System" subMenu = Staged, "&Staged Injection" menu = "&Tuning" subMenu = std_realtime, "&Realtime Display" subMenu = std_warmup, "&Warmup Wizard" subMenu = std_separator subMenu = veTable1Map, "VE Table &1" subMenu = veTable2Map, "VE Table &2", 0, { inj2t } subMenu = veTable3Map, "VE Table &3" 0, { UseVE3 } subMenu = sparkMap, "Spar&k Table1", 0, { ignmode } subMenu = sparkMap2, "Spark &Table2", 0, { STTable2On } menu = "Help" subMenu = std_separator subMenu = Fhelp1, "&General Help" subMenu = Fhelp2, "&Fuel Table Selection" subMenu = Fhelp3, "&Lambda Settings" subMenu = Fhelp4, "&Hard Cut Limiter Type" subMenu = Fhelp5, "&Launch Control" subMenu = Fhelp6, "Accel Decel &Mode" subMenu = Shelp3, "&Spark Settings" subMenu = Shelp4, "Spar&k Table Selection" subMenu = Shelp1, "Kn&ock System" subMenu = Shelp2, "&IAT/CLT Related Ignition" subMenu = Chelp1, "&Codebase and output functions" subMenu = Chelp2, "&Advanced code options" subMenu = Chelp3, "&Barometric Correction" subMenu = Chelp4, "&Water Injection" subMenu = Chelp5, "&NOS System" subMenu = Chelp6, "Staged Injection Syste&m" ;------------------------------------------------------------------------------- [UserDefined] dialog = codeBase, "Power cycle after changes", 4 topicHelp = Chelp1 field = "Choose one code type" field = "This cyl (MSnS)", msnsCyl field = "Neon/420A decoder", neonCrank field = "Wheel decoder (e.g. 36-1)", wheelon field = "EDIS", edis field = "EDIS multispark", edismulti, { edis } field = "TFI ignition", tfi field = "HEI Ignition", hei7 field = "Choose input/output pins to use" field = "FIDLE function", fidleUse field = "LED17 function", led17Use field = "LED18 function", led18Use field = "LED19 function", led19Use field = "Multiplex ignition?", toy_dli field = "X2 function", x2use field = "X4 function", boostUse dialog = wheeldecoder, "Power cycle after changes", 4 topicHelp = Fhelp1 field = "Wheel decoder base teeth", numteeth field = "Missing/added teeth", onetwo field = "Trig pos A", trig1 field = "Trig return pos A", trig1ret field = "Trig pos B", trig2 field = "Trig return pos B", trig2ret field = "Trig pos C", trig3 field = "Trig return pos C", trig3ret ; 4th channel not yet implemented ; field = "Trig pos D", trig4 ; field = "Trig return pos D", trig4ret field = "ONLY for late leading rotary" field = "Trig pos A 2", trig1r field = "Trig pos B 2", trig2r field = "Trig pos C 2", trig3r dialog = advanced, "Power cycle after changes",4 topicHelp = Chelp2 field = "Functions from DT (*=B+G default)" field = "After Start Enrich Counter", aseIgnCount field = "EGO Correction Step Counter", egoIgnCount ; field = "IdlIgncount", idlIgnCount ;couldnt find it in the code field = "Accel Timer", taeIgnCount field = "Interpolated Priming pulse", interpPrime field = "Hybrid Alpha N", hybridAN field = "" field = "False trigger protection", falsetrig field = "Enable ACKing the IRQ", en_ack field = "" field = "Prime Pump when", AlwaysPrime field = "Fire Priming Pulse", PrimeLate field = "" field = "EDIS multispark", edismulti, { edis } field = "EDIS multispark rpm limit", edismultirpm, { edis & edismulti } field = "" field = "Cranking pulse width uses", crankpwip dialog = MapSettings, "Power Cycle after Changes",4 topicHelp = Fhelp1 field = "" field = "ENSURE B+G SELECTED UNLESS Non" field = "Standard MAP sensor fitted" field = "Type of MAP Sensor:", KPA300Sens, { mapSensor1 } field = "" field = "Ensure ini file #set correctly if" field = "anything other than B+G selected" field = "*ALL KPa settings will change*" field = "" field = "Correction factor needs to be:" field = "24% for GM 300KPa sensor" field = "28% for 6300A series sensor" field = "78% for 6400A series sensor" field = "Correction Factor", KPA300BARO, {mapSensor1 & KPA300Sens} dialog = fuelTable, "Fuel Table selection",4 topicHelp = Fhelp2 field = "* = B+G default ^ = MSnS default" field = "DT = Dual Table default" field = "Injector channel 1:" field = "use table : always 1" field = "GammaE:", inj1g field = "Injector channel 2:" field = "use table:", inj2t field = "GammaE:", inj2g field = "Pulse inj2 during cranking", inj2cr field = "" field = "Switch VE Table1 for VE Table3 when" field = "NOS on or when Pin6 JP1 low.", UseVE3 field = "Delay for changing to VE3", VE3Delay, {UseVE3} dialog = miscSettings, "Misc settings", 4 topicHelp = Fhelp1 field = "Cranking RPM", CrankRPM field = "TPS value for flood clear", tpsflood field = "Rev Limiter" field = "MSnS Soft rev limit", SoftRevLim field = "MSnS Soft limit retard", SoftLimRetard field = "MSnS Soft limit max time", SoftLimMax field = "MSnS Hard Rev limit", HardRevLim dialog = outputs,"Outputs",4 topicHelp = Fhelp1 field = "Output turns off when actual value =" field = "On/Off limit - Hysterisis" field = "To create an output window set Upper" field = "Limit. For normal output set to zero" field = "OUTPUT 1 (X4) source", out1src, { !boostUse } field = "On-Off Limit", out1lim, { !boostUse } field = "Off Hysterisis", out1Hysis, { !boostUse } field = "Upper Limit", Out1UpLim, { !boostUse } field = "Output1 Invert for Temps", InvOut1, { !boostUse } field = "" field = "OUTPUT 2 (X5) source", out2src field = "On-Off Limit", out2lim field = "Off Hysterisis", out2Hysis field = "Upper Limit", Out2UpLim field = "Output2 Invert for Temps" InvOut2 dialog = outputs2,"More Outputs",4 topicHelp = Fhelp1 field = "OUTPUT 3 (U1 pin15)" field = "OUTPUT 3 (PTD0) source", out3src field = "On-Off Limit", out3lim field = "Off Delay Timer", out3Timer field = "" field = "OUTPUT 4 (LED18)" field = "OUTPUT 4 (LED18) source", out4src, {!out4FAN & led18_2Use} field = "On-Off Limit", out4lim, {!out4FAN & led18_2Use} field = "Use above source or FAN Control", out4FAN, {led18_2Use} field = "" field = "Shift Light", shiftUse field = "Shift light Lower Threshold", ShiftLower, { shiftUse } field = "Shift Light Upper Threshold", ShiftUpper, { shiftUse } field = "Fan control (X2 or LED18)" field = "Fan on temperature", efanontemp, { x2use + out4FAN } field = "Fan off temperature", efanofftemp, { x2use + out4FAN } dialog = sparkSettings,"Spark Settings",3 topicHelp = Shelp3 field = "Trigger Angle = Setting + Additions" field = "e.g. 77+45= 122" field = "Trigger Angle ", TrigAng field = "Trigger Angle addition", Trig_plus field = "Note: If req Trigger above 90" field = "then select +22.5 Deg" field = "if above 112.5 select +45" field = "" field = "Cranking Timing", TrigCrank, { !edis } field = "Cranking advance Angle", CrankAng, { TrigCrank + edis } field = "Hold Ignition", IgHold field = "Spark Output Inverted", IgInv field = "" field = "Fixed Angle (-10 = use map)", FixAng field = "Trim Angle", Trim dialog = dwellSettings,"Dwell Settings",4 topicHelp = Fhelp1 field = "Dwell control", dwellcont field = "Use: Spark output duty cycle", dwellduty50, { !dwellcont } field = "Or: Cranking dwell", dwellcrank, { dwellcont } field = "+ Running dwell", dwellrun, { dwellcont } dialog = idleControl, "Fielding 2-Wire Idle Control", 4 topicHelp = Fhelp1 field = "Algorithm", pwmIdle field = "When to use PWM idle", pwmidlewhen, { pwmIdle } field = "Idle duty cycle at lower temp", idle_dc_lo, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) } field = "Idle duty cycle at upper temp = 0%" field = "Throttle Threshold", idleThresh, { pwmIdle } field = "Fast Idle (lower) Temp", fastIdleTemp, { pwmIdle } field = "Slow Idle (upper) Temp", slowIdleTemp, { pwmIdle } field = "Fast Idle RPM", fastIdleRPM, { pwmIdle & (pwmidlewhen >1) } field = "Slow Idle RPM", slowIdleRPM, { pwmIdle & (pwmidlewhen >1) } ; upper idle duty cycle is always zero dialog = boostIAT, "IAT Related Boost",4 topicHelp = Fhelp1 field = "Remove boost related to IAT" field = "When IAT above", IATBoostSt field = "remove 1 psi (7KPa) every:", IATBoost field = "when tps above:", TPSBooIAT dialog = boostControl, "Boost Controller Parameters", 4 topicHelp = Fhelp1 field = "Solenoid PWM Rate", freqDiv field = "Controller Update", bcUpdateRate field = "Proportional Gain", pGain field = "Differential Gain", dGain field = "" field = "Increase Voltage =", BoostDir field = "" field = "Switch Boost Target Tables when" field = "NOS on or JP1 pin6 low", BooTbl2Use field = "" field = "Closed loop kpa limit", bc_max_diff field = "This is the difference between target" field = "boost level and actual. If greater" field = "than this limit then goes open loop" field = "and uses duty cycle from table" field = "Note. 0% duty = low boost, 100% = full boost" ; ENHANCED STUFF dialog = LaunchSettings, "Launch Control", 4 topicHelp = Fhelp5 field = "Launch Control" field = "Launch Control", launchUse field = "Retard Ignition above ", LachRpm, {launchUse & ignmode} field = "Retard to : ", LachDeg, {launchUse & ignmode} field = "Enable Launch when TPS above ", LachTps, {launchUse} field = "Launch Control Hard Rev Limit", LaunchLim, {launchUse} field = "Variable Launch", VLaunch, {launchUse} dialog = LambdaSet, "Lambda Sensor Targets", 4 topicHelp = Fhelp3 field = "Set to 255KPa for B+G Default" field = "Change Ego Limit above", EgoLimKPa field = "Change Ego Limit to", EgoLim2 field = "" field = "8x8 AFR Target Tables" field = "For VE Table 1", AfrTar field = "For VE Table 3", AfrTar2 field = "Control Algorithm for AFR tables", KpaTPSTar field = "" field = "Use Target tables:", TPSTar field = "Use Enrichment EGO Switch Point until TPS:", TPSAFRPoint, {TPSTar} field = "" field = "Second Lambda Sensor runs EGO Corr" field = "for Bank #2 injectors" field = "enrichments from page2 and VE Table2" field = "If target AFR Table used for VE 1 then it will" field = "follow those targets." field = "if not it will follow the target AFR in" field = "the Enrichments 2 page" field = "Second Lambda fitted on X7?", TwoLambda dialog = OpenLoop, "Open Loop Mode", 4 topicHelp = Fhelp1 field = "Open Loop O2 Correction:", OLoopEgo field = "" field = "If TPS selected then go Open Loop @", TpsOn field = "If KPa selected then go Open Loop @", KPaOn field = "Set selection to zero for no Openloop" field = "Restart MS after changes" dialog = WaterInj,"Water Injection Setpoints", 4 topicHelp = Chelp4 field = "Please Note:" field = "O2 correction turns OFF when water starts" field = "Water Injection", WaterInj field = "Start Water Injection when Boost above", StartWIKPa, { WaterInj } field = "and engine speed above:", WaterIRpm, { WaterInj } field = "and Manifold Air Temp above", WaterIIat, { WaterInj } dialog = IatCltIg, "IAT/Clt Related Ignition", 4 topicHelp = Shelp2 field = "Coolant/Iat Related Advance", CltAdv field = "Add 1 degree of ignition advance every", IgAdvDeg, { CltAdv } field = "when below: Coolant setpoint ", IgAdvTemp, { CltAdv } field = "Note: IAT Retard will work when 3C above " field = " Coolant setpoint" field = "Max allowable added ignition advance ", MaxIatAdv, { CltAdv } field = " " field = "Pull 1 degree of ignition retard every", IgRetDeg, { CltAdv } field = "when MAP above", IatAdvKpa, { CltAdv } field = "and IAT above", IgRetTemp, { CltAdv } dialog = Knock,"Knock Detection System", 4 topicHelp = Shelp1 field = "Knock Detector System", KnockOn field = "Ignore Knocks when above", KnockRpm, { KnockOn } field = "Ignore Knocks when MAP above ", KnockKpa, { KnockOn } field = "Ignore Knocks when below ", KnockRpmL, { KnockOn } field = "First Knock: Retard by", KnockRet, { KnockOn } field = "Subsequent Knocks: Retard by", KnockSb, { KnockOn } field = "Max Retard Allowed ", KnockMax, { KnockOn } field = "Advance when no knock:", KnockAdv, { KnockOn } field = "Wait time between steps:", KnockTim, { KnockOn } field = "" field = "If using Boost Control:" field = "Amount of boost to remove/add in" field = "the above steps" , KnockBoost, {boostUse & KnockOn} field = "Maximum boost to remove", BoostMaxKn, {boostUse & KnockOn} dialog = SparkT2, "Spark Table selection", 4 topicHelp = Shelp4 field = "Use Spark Table 1" field = "untill JP1 pin6 input low or" field = "NOS system on, then use:", STTable2On field = "Delay before switching to Table 2", ST2Delay, {STTable2On} dialog = OvrBoo, "Over Boost Protection", 4 topicHelp = Fhelp1 field = "OVER BOOST PROTECTION" field = "Over Boost Hard Cut if Boost hits", OvrBKpa dialog = HardLim, "Hard Cut/Limiter Type", 4 topicHelp = Fhelp4 field = "**********C A U T I O N:**************" field = "IGNITION CUT IS NOT SUITABLE" field = "FOR VEHICLES FITTED WITH" field = " CATALYTIC CONVERTERS" field = "*Spark Cut doesn't work for Edis users*" field = "BASE NUMBER to cut sparks from", SparkCutBase field = "REV LIMITER" field = "Hard Cut Type", HCutType field = "Cut 'n' sparks out of BASE NUMBER", HCutSpark field = "LAUNCH CONTROL" field = "Hard Cut Type", HCutLCType field = "Cut 'n' sparks out of BASE NUMBER", HCutLCSpark field = "OVER BOOST PROTECTION" field = "Hard Cut Type", OvrBCutType field = "Cut 'n' sparks out of BASE NUMBER", SparkCutBNum dialog = NosSystem, "Nitrous System", 4 topicHelp = Chelp5 field = "Nitrous Control", nitrousUse field = "Turn NOS on when above", NosRpm, {nitrousUse} field = "And Coolant Temp above", NosClt, {nitrousUse} field = "And TPS >", NosTps, {nitrousUse} field = "" field = "Additional Fuel PW @ 3,000 rpm", NosPWLo, {nitrousUse} field = "NOS Max RPM", NosRpmMax, {nitrousUse} field = "Additional Fuel PW @ NOS Max RPM", NosPWHi, {nitrousUse} field = "" field = "If ST2 off Retard Ignition by" NosAngle, {nitrousUse} field = "" field = "If Dual Table enrich ", DtNos, {nitrousUse} field = "" field = "Turbo Anti-Lag System: (see help)", NosLagSystem, {nitrousUse} field = "Fire NOS when conditions above met" field = "and MAP above", NosLowKpa, {nitrousUse & NosLagSystem} field = "and MAP below", NosHiKpa, {nitrousUse & NosLagSystem} dialog = Staged, "Staged Injection", 4 topicHelp = Chelp6 field = "STAGED INJECTION SETTINGS" field = " Not suitable with DT" field = "Injector Staging Mode:", IStagedMode field = "Injector Bank 2 off untill:" field = "Staging Point (RPM/100, KPa, or TPSADC)", StgTrans, {IStagedMode} field = "Staging Off Delta (units as above)", StgDelta, {IStagedMode} field = "Then Reduce Banks #1, #2 by Scaling Factor" field = "Staged Scaling Factor (Prim Flow/Total Flow)", ScaleFac, {IStagedMode} field = "Restart MS after changes" dialog = OvrRun, "Over Run Fuel Cut", 4 topicHelp = Fhelp1 field = "Over Run Fuel Cut", OvrRunC field = "Cut fuel when:" field = "when RPM Higher than:", OvrRunRpm, {OvrRunC} field = "and KPa Lower than: ", OvrRunKpa, {OvrRunC} field = "and TPS lower than: ", OvrRunTps, {OvrRunC} field = "after", OvrRunTimr, {OvrRunC} dialog = AccelDecc, "Accel Decel Trigger dot", 4 topicHelp = Fhelp6 field = "Accel / Decel Enrichments Trigger:", AccDecEnrich field = "" field = "Turn Decel Enrich off when :" , DecelBoost field = "Cut Decel Setpoint:", DecelKPa, {DecelBoost} field = "" field = "If MAPdot turn Enrich off", KPaDotBoost, {AccDecEnrich} dialog = BarroCor, "Barometric Correction", 4 topicHelp = Chelp3 field = "To aid processor resets causing" field = "the engine to run weak or rich" field = "Max KPa for Baro Correction", BarroHi field = "Min KPa for Baro Correction", BarroLow dialog = traction, "Anti-Rev System(Traction Control)", 4 topicHelp = Fhelp1 field = "Traction Control", TractionOn field = "MODE=:", TractMode field = "(RPM Based)RPMdot Threshold", RPMThresh, {!TractMode} field = "(VSS Based)Sensor Differential", TractScale, {TractMode} field = "(VSS Based)Low Speed Slip Threshold ", TractSlip, {TractMode} field = "(VSS Based)Half Speed Slip Threshold", TractSlipH, {TractMode} field = "Operate Anti-Rev between Max and Min" field = "(VSS Based)Max Undriven input", TractVSSMax, {TractMode} field = "(VSS Based)Min Undriven input", TractVSSMin, {TractMode} field = "Enrichment Bins (mSec)" field = "", RPM1S field = "", RPM2S field = "", RPM3S field = "", RPM4S field = "Retard Ignition by", field = "", TractRet1, { ignmode } field = "", TractRet2, { ignmode } field = "", TractRet3, { ignmode } field = "", TractRet4, { ignmode } dialog = traction2, "Anti-Rev System cont...", 4 topicHelp = Fhelp1 field = "Spark Cut 'n' from Base Value" field = "", TractSC1, { ignmode } field = "", TractSC2, { ignmode } field = "", TractSC3, { ignmode } field = "", TractSC4, { ignmode } field = "" field = "Turn NOS off during Anti-Rev?", TractNOS, { nitrousUse } field = "" field = "Retard, Enrichment + Spark cut" field = "for nn Engine Cycles" field = "", TractCyc1 field = "", TractCyc2 field = "", TractCyc3 field = "", TractCyc4 field = "or untill:", TractCySec ;*************************** HELP STUFF *************************************** help = Fhelp1, "General Help" text = "For MS (fuel only) select *.
" text = "For MSnS select ^
" text = "
" text = "For more help or problems please see the Extra Website at
" text = "http://megasquirt.sourceforge.net/extra/
" text = "
" text = "If you can't find an answer there post a thread on http://www.msefi.com
" text = "or contact" text = " james@nscc.info
" text = "or contact" text = " philip.ringwood@ntlworld.com" help = Fhelp2, "Fuel Table Selection" text = "INJECTOR CH1 (PW1)" text = "This will always use VE Table1
" text = "GammaE On or OFF = :" text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
" text = "
" text = "INJECTOR CH2 (PW2)" text = "Either use VE Table 1 or 2, 1=Normal 2=DT
" text = "GammaE On or Off = :" text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
" text = "Pulse Inj CH2 during cranking" text = "Do you want CH2 to add fuel whilst cranking
" text = "
" text = "The VE Table 1 can be switched to" text = "VE Table 3 on the run for use with Spark Table2" text = "or on its own if ST2 not selected in" text = "Spark Table Selection
" text = "VE3 will replace VE1 when NOS running or Pin6 JP1 low.
" text = "This can be used in any mode, but in DT " text = "it will obviously only change PW1." text = "If not in DT it will change both PW's.
" help = Fhelp3,"Lambda Settings" text = "You can now change the Ego Limit" text = "depending on the MAP KPa. If you don't" text = "want it to change simply put 255 in the" text = "KPa setpoint.
" text = "
" text = "There are also 2 AFR target tables.
" text = "Table 1 contains the target AFR's for" text = "VE Table 1.
" text = "Table 2 contains the target AFR's for" text = "VE Table 3.
" text = "NOTE: These are just targets, they dont" text = "replace your VE table and should be" text = "thought of as a fine tune for the VE table.
" text = "If you dont want to use them simply" text = "select them off. The target will then " text = "be as set in the enrichments page.
" text = "
" text = "We have added the facility to run from the target tables when above a certain TPS setpoint.
" text = "If you want to use this set Use Targets to Above TPS and set the TPS setpoint.
" text = "
" text = "If you run 2 Lambda sensors, one on each " text = "bank, you can have a totally
" text = "seperate Ego correction for CH2" text = "only for use when CH2 = VE Table2" help = Fhelp4,"Hard Cut Limiter Type" text = "If using any spark mode other than Edis then you have the" text = "option to cut spark and or fuel in " text = "the rev limiting modes.
" text = "The Base Number is the number of sparks" text = "that can be cut from (yy). This value will" text = "depend on number of cylinders.
" text = "Then select how many sparks to cut" text = "in each mode(xx).
" text = "So you will get xx cuts in every yy sparks.
" help = Fhelp5, "Launch Control" text = "Active low input TOMI Header JP1 Pin4
" text = "This holds the RPM by first activating a ignition retard
" text = "then a hard cut to help you get a good Launch
" text = "
" text = "Variable Launch, when selected," text = "stores the current engine RPM" text = "as soon as the input is switched low" text = "and uses that as its Hard Cut RPM.
" text = "This is for use with a thumb switch" text = "so launch rpm can be altered at the" text = "track.
" help = Fhelp6, "Accel Decel Mode" text = "Select between TPSdot / MAPdot accel/decel enrichment
" text = "If in MAP mode then you turn off" text = "the accel/decel enrichment when" text = "the engine goes into boost.
" text = "
" text = "You can also turn just the Decel off in either mode when in Boost to prevent a lean condition in boost
" help = Shelp1, "Knock Detection" text = "Please see:
" text = "http://megasquirt.sourceforge.net/extra/
" text = "for more info on this function.
" help = Shelp2, "IAT/CLT Related Ignition" text = "When selected you can add 1 degree" text = "of advance to the ignition" text = "for every xx amount of degrees lower" text = "the coolant temp is than the setpoint.
" text = "There is also a max setpoint to" text = "limit the added advance by.
" text = "
" text = "The IAT Related Ignition is similar" text = "but it retards the ignition 1 degree" text = "for every nn degrees of temp higher " text = "it is above the setpoint when the " text = "engine is running over the set KPa.
" help = Shelp3, "Spark Settings" text = "Trigger Angle:
" text = "If you need an angle between 90-112.5" text = "then select the '+22.5' and" text = "enter the angle needed -22.5
" text = "If you need an angle between 112.5-125" text = "then select '+45'" text = "then enter the angle needed -45
" text = "The actual Trigger Angle is :
" text = "Trigger Angle + 22.5 or 45 if selected
" text = "e.g. 78 + 45 = 123
" text = " 88 + 22.5 = 110.5
" text = " 65 + 0 = 65
" help = Shelp4, "Spark Table Selection" text = "If NOS System not selected and Second" text = "Spark Table selected then the base map" text = "will change from ST1 to ST2 when JP1" text = "pin6 is switched low.
" text = "If NOS selected and Second Spark Table" text = "then when NOS system runs (check back " text = "signal JP1 pin6 low and NOS setpoints" text = "satisfied) then the spark map will switch" text = "from ST1 to ST2.
" text = "If Second Spark Table not selected and NOS" text = "used then it will retard ignition by the " text = "fixed amount in the NOS settings.
" help = Chelp1, "Codebase and Output functions" text = "Select all code types OFF for Fuel only" text = "other wise select only one code type.
" text = "
" text = "Choose I/O pin usage.
" text = "FIdle = idle control for fuel only
" text = " spark output for MSnS/Edis
" text = "" text = "X2 output = Water Inj Pump Out
" text = " Cooling Fan Out
" text = "" text = "X4 output = Output1
" text = " Boost Control
" text = "" text = "Shift Light outputs are on PTC3 and 4
" help = Chelp2, "Advanced code options" text = "After Start Enrich Counter in Sec or" text = "engine cycles
" text = "
" text = "EGO Correction Step Counter in mSec or " text = "ignition pulses
" text = "
" text = "Accel Time in Sec's or Engine Cycles
" text = "
" text = "Interpolated Priming pulse, using the" text = "cranking PW
" text = "
" text = "Hybrid Alpha N system adds KPa to" text = "Alpha_N for use in Ferrari F40 turbos
" text = "
" text = "Prime pump when pulse > 0.0 or always" text = "Fire priming pulse imediately on power" text = "up or after 2 seconds or fire 2 pulses
" help = Chelp3, "Barometric Correction" text = "If the Barometric Correction is set on" text = "in the Enrichments screen then here you" text = "set up the limits.
" text = "This is used if MS resets during driving it will take in" text = "the current MAP pressure and use that" text = "as the Barometric Pressure to calculate" text = "the correction.
" text = "Now you can limit the BarCorr to the presets.
" help = Chelp4, "Water Injection" text = "If selected you cannot use the fan out on X2." text = "See Codebase and Output functions
" text = "
" text = "The output X2 will come on" text = "when the setpoints are met, the IAT" text = "setpoint is ignored when it has started.
" text = "
" text = "If NOS is not selected then:
" text = "Output X3 is pulsed at the same rate" text = "as CH2. This can be used to drive" text = "a fast acting solenoid.
" text = "So if a water nozzle is selected that" text = "flows 10-15% of the total flow of the " text = "fuel injectors, then it will supply a" text = "proportional amount of water to fuel.
" text = "
" text = "NB: O2 correction is turned" text = "off during water injection
" help = Chelp5, "NOS System" text = "Water Inj output X3 will not work in" text = "this mode.
" text = "This turns output X3 on when the " text = "setpoints are satisfied. Then it " text = "waits for input Pin6 JP1 to go low. " text = "When this happens it retards the " text = "ignition by the set amount and adds " text = "to the fuel by an interpoled amount" text = "of between 3000rpm and the NOS max" text = "RPM value. If the additional PWs" text = "are zero then no extra fuel is added.
" text = "
" text = "If in DT mode you can select which" text = "CH to add the enrichment PW to." text = "O2 correction is turned off when the" text = "input Pin6 JP1 is low. If Duty Cycle" text = "95% then NOS output X3 is turned off" text = "and wont come back on untill one of" text = "setpoints is not satisfied.
" text = "
" text = "If NOS selected on and Anti-Lag on" text = "when MS receives a low input on" text = "the NOS Check Back (Pin6 JP1)" text = "before it turns the NOS output on (X3)" text = "then this will enable the NOS Turbo " text = "Anti-Lag. This system is used to spool" text = "the turbo up between a certain KPa" text = "range using NOS.
" text = "See http://megasquirt.sourceforge.net/extra/
" text = "for a suitable wiring diagram.
" help = Chelp6, "Staged Injection System" text = "Roger Emm's Staged Injection System" text = "Not for use in DT mode!
" text = "This runs Ch1 injectors only untill" text = "the setpoint is satisfied, then CH1" text = "and CH2 will fire at a reduced amount" text = "depending on the scale factor.
" text = "This is worked out by calculating" text = "Primary Injector Flow/Total Inj Flow." text = "When the engine runs below the" text = "setpoint-delta the injectors change" text = "back to CH1 on normally and CH2 off.
" ;------------------------------------------------------------------------------- [TableEditor] ; table_id, map3d_id, "title", page table = veTable1Tbl, veTable1Map, "VE Table 1", 1 ; constant, variable xBins = rpmBins1, rpm yBins = mapBins1, map zBins = veBins1 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2 xBins = rpmBins2, rpm yBins = mapBins2, map zBins = veBins2 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3 xBins = rpmBins3, rpm yBins = mapBins3, map zBins = advTable1 gridHeight = 3.0 upDownLabel = "RETARDED", "ADVANCED" table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5 xBins = rpmBins4, rpm yBins = mapBins4, map zBins = advTable2 gridHeight = 3.0 upDownLabel = "RETARDED", "ADVANCED" table = veTable3Tbl, veTable3Map, "VE Table 3. See Fuel Table Selection", 6 xBins = rpmBins5, rpm yBins = mapBins5, map zBins = veBins3 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" #if NARROW_BAND_EGO table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm yBins = mapBins6, map zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm yBins = mapBins7, map zBins = afrBins2 #elif WB_Non_Above table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm yBins = mapBins6, map zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm yBins = mapBins7, map zBins = afrBins2 #elif DIY_TechE_NonL table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm yBins = mapBins6, map zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm yBins = mapBins7, map zBins = afrBins2 #else table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (AFR)", 7 xBins = rpmBins6, rpm yBins = mapBins6, map zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (AFR)", 7 xBins = rpmBins7, rpm yBins = mapBins7, map zBins = afrBins2 #endif table = boostTbl1, boostMap1, "Boost kpa target 1", 8 ; constant, variable xBins = bcrpmBins1, rpm yBins = bctpsBins1, throttle zBins = bcBins1 table = boostTbl2, boostMap2, "Boost duty target", 8 xBins = bcrpmBins2, rpm yBins = bctpsBins2, throttle zBins = bcBins2 table = boostTbl3, boostMap3, "Boost kpa target 2", 8 xBins = bcrpmBins3, rpm yBins = bctpsBins3, throttle zBins = bcBins3 ;------------------------------------------------------------------------------- [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 baroADCGauge = barometer, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 batADCGauge = batADC, "BAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 #if NARROW_BAND_EGO egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2 #else egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2 #endif lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2 clockGauge = secl, "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 gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 #if MPXH6300A mapGauge = map, "Engine MAP", "kPa", 0, 304, 0, 20, 250, 275, 0, 0 #elif GM300KPa mapGauge = map, "Engine MAP", "kPa", 0, 300, 0, 20, 250, 275, 0, 0 #elif MPXH6400A mapGauge = map, "Engine MAP", "kPa", 0, 400, 0, 20, 250, 275, 0, 0 #else mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0 #endif pulseWidth1Gauge = pulseWidth1, "Pulse Width 1", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1 pulseWidth2Gauge = pulseWidth2, "Pulse Width 2", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1 tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0 throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0 veBucketGauge = veTuneValue, "VE Bucket", "%", 0, 120, -1, -1, 999, 999, 0, 0 veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2 warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0 #if CELSIUS cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0 matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0 #else cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 0, 200, 220, 0, 0 matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 0, 200, 210, 0, 0 #endif advanceGauge = advSpark, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0, ; Extra Stuff fuelGauge = fuelpress, "Fuel Pressure", "lb/in", 0, 80, 30, 40, 60, 65, 1, 1 #if CELSIUS egtGauge = egttemp, "EGT", "C", 0, 1000, 0, 0, 1450, 1480, 1, 1 #else egtGauge = egttemp, "EGT", "F", 0, 2200, 0, 0, 1450, 1480, 1, 1 #endif CltIatGauge = CltIatDeg, "Clt IAT Angle", "Deg", -10, 10, -10, -10, 10, 10, 1 KnockGauge = KnockDeg, "Knock Retard", "Deg", -20, 0, -20, -20, 1, 1 egoCorrGauge2 = egoCorrection2, "EGO Correction2", "%", 50, 150, 90, 99, 101, 110, 0, 0 testGauge = test, "TEST", "", 0, 255, 255, 255, 0 , 0, test2Gauge = test2, "TEST2", "", 0, 255, 255, 255, 0, 0, RpmHiResGauge = RpmHiRes, "Engine RPM", "RPM", 0, 8000, 0, 300, 7800, 8000, 0 lambdaGauge2 = lambda2, "Lambda2", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 afrGauge2 = afr2, "Air:Fuel Ratio2", "", 10, 19.4, 12, 13, 15, 16, 2, 2 vacuumGauge = vacuum, "Engine Vacuum", "in-HG", 0, 30, 0, 0, 30, 30, 1, 1 boostgauge = boost, "Engine Boost", "PSIG", 0, 20, 0, 0, 15, 20, 1, 1 VacBooGauge = boostVac, "Engine Vac Boost", "in-HG/PSIG", -30, 30, -30, -30, 30, 30, 1, 1 TargetAFRGauge = TargetAFR, "Target AFR", "AFR", 10, 19.4, 0, 0, 20, 20, 2, 2 mphGauge = mph, "Speedo", "MPH", 0, 200, -1, -1, 200, 200, 1 USgphGauge = USgph, "US GPH", "GPH", 0, 100, -1, -1, 100, 100, 1 gphGauge = gph, "GPH", "GPH", 0, 100, -1, -1, 100, 100, 1 USmpgGauge = USmpg, "US MPG", "MPG", 0, 100, -1, -1, 100, 100, 1 mpgGauge = mpg, "MPG", "MPG", 0, 100, -1, -1, 100, 100, 1 ;------------------------------------------------------------------------------- [FrontPage] #if NARROW_BAND_EGO egoLEDs = 0.0, 1.0, 0.5 ; NB settings. #else ; If you reverse these range values as you see below, then the LED ; bar will work as you expect, high on the right, low on the left. egoLEDs = 4.0, 1.0, 2.5 ; WB settings. #endif ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 gauge1 = tachometer gauge2 = cltGauge gauge3 = pulseWidth1Gauge gauge4 = throttleGauge gauge5 = mapGauge gauge6 = matGauge gauge7 = afrGauge ; Various Gauges for use in the msns-extra code, remove the ";" and renumber gauge8 = advanceGauge ; gauge1 = RpmHiResGauge gauge4 = TargetAFRGauge ; gauge4 = batADCGauge ; gauge3 = mphGauge ; ONLY FOR USE WHEN VSS CONNECTED TO MS ; gauge3 = USgphGauge ; gauge3 = gphGauge ; gauge3 = USmpgGauge ; gauge3 = mpgGauge ; gauge7 = KnockGauge ; gauge4 = egtGauge ; gauge7 = pulseWidth2Gauge ; gauge8 = dutyCycle2Gauge ; These 3 are for the second lambda sensor. Remove ";" and re-number gauge ; gauge6 = afrGauge2 ; gauge7 = pulseWidth2Gauge ; gauge8 = egoCorrGauge2 ; Eliot Mansfield's boost and vacuum gauges. ; gauge7 = vacuumGauge ; gauge8 = boostgauge ; Decided to combine the Vacuum and Boost gauges into one ; gauge4 = VacBooGauge ; For testing only ; gauge8 = testGauge ; gauge4 = test2Gauge ;new trial 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 colors24b.ini for the basic ones, add more or tell me what to add. indicator = { porta & 0b00000001 }, "Fuel Pump Off", "Fuel Pump On", white, black, green, black indicator = { porta & 0b00000010 }, "Fidle/Spark Off", "Fidle/Spark On", white, black, green, black indicator = { porta & 0b00100000 }, "Fan/W Inj Off", "Fan/W Inj On", white, black, green, black indicator = { porta & 0b00010000 }, "NOS/W Inj Off", "NOS/W Inj Pulsing", white, black, green, black indicator = { porta & 0b00001000 }, "Output1/Boost Cont", "Output1/Boost Cont", white, black, green, black indicator = { porta & 0b00000100 }, "Output2 Off", "Output2 On", white, black, green, black indicator = { portd & 0b00000001 }, "Output3 Off", "Output3 On", white, black, green, black indicator = { portc & 0b00000100 }, "Fan/Output4 Off", "Fan/Output4 On", white, black, green, black indicator = { portd & 0b00001000 }, "Launch On", "Launch Off", red, black, white, black indicator = { portd & 0b00000100 }, "Knocked", "No Knock", red, black, white, black indicator = { portd & 0b00000010 }, "NOS/Tables On", "NOS/Tables Off", red, black, white, black ;------------------------------------------------------------------------------- [RunTime] #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, 1.0 #else egoBar = 0, 5.0 #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 ; NB settings. #else ; If you reverse these range values as you see below, then the LED ; bar will work as you expect, high on the right, low on the left. egoLEDs = 4.0, 1.0, 2.5 ; WB settings. #endif font = "FixedSys", 14 spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators. cursorDepth = 2 ; Same as spot depth. gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. ; 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 gauge3 = egoGauge, egoGauge, egoGauge, egoGauge gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidth1Gauge, pulseWidth2Gauge gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycle1Gauge, dutyCycle2Gauge ;------------------------------------------------------------------------------- [OutputChannels] ; The number of bytes MegaTune should expect as a result ; of sending the "A" command to MegaSquirt is determined ; by the value of ochBlockSize, so be very careful when ; you change it. deadValue = { 0 } ; Convenient unchanging value. ochGetCommand = "R" ; was "a" and before that "A" ochBlockSize = 35 ; was 25 secl = scalar, U08, 0, "sec", 1.000, 0.000 squirt = scalar, U08, 1, "bits", 1.000, 0.000 engine = scalar, U08, 2, "bits", 1.000, 0.000 baroADC = scalar, U08, 3, "ADC", 1.000, 0.000 mapADC = scalar, U08, 4, "ADC", 1.000, 0.000 matADC = scalar, U08, 5, "ADC", 1.000, 0.000 cltADC = scalar, U08, 6, "ADC", 1.000, 0.000 tpsADC = scalar, U08, 7, "ADC", 1.000, 0.000 batADC = scalar, U08, 8, "ADC", 1.000, 0.000 egoADC = scalar, U08, 9, "ADC", 1.000, 0.000 egoCorrection = scalar, U08, 10, "%", 1.000, 0.000 airCorrection = scalar, U08, 11, "%", 1.000, 0.000 warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000 rpm100 = scalar, U08, 13, "r100", 1.000, 0.000 pulseWidth1 = scalar, U08, 14, "ms", 0.100, 0.000 accelEnrich = scalar, U08, 15, "%", 1.000, 0.000 baroCorrection = scalar, U08, 16, "%", 1.000, 0.000 gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000 veCurr1 = scalar, U08, 18, "%", 1.000, 0.000 pulseWidth2 = scalar, U08, 19, "ms", 0.100, 0.000 veCurr2 = scalar, U08, 20, "%", 1.000, 0.000 idleDC = scalar, U08, 21, "%", 1.000, 0.000 cTime = scalar, U16, 22, "s", 1.000, 0.000 advance = scalar, U08, 24, "deg", 1.000, 0.000 afrtarget = scalar, U08, 25, "ADC", 1.000, 0.000 fuelADC = scalar, U08, 26, "ADC", 1.000, 0.000 ; ADC from X7 (second O2 or fuel pressure) egtADC = scalar, U08, 27, "ADC", 1.000, 0.000 CltIatAngle = scalar, U08, 28, "deg", 1.000, 0.000 KnockAngle = scalar, U08, 29, "deg", 1.000, 0.000 egoCorrection2 = scalar, U08, 30, "%", 1.000, 0.000 ; Second O2 sensor correction porta = scalar, U08, 31, "", 1.000, 0 ; porta raw value portb = scalar, U08, 32, "", 1.000, 0 ; portb raw value portc = scalar, U08, 33, "", 1.000, 0 ; portc raw value portd = scalar, U08, 34, "", 1.000, 0 ; portd raw value ; accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? const(85) : 100) } accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct1 : 100) } batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage. coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units. egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage. mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units. rpm = {rpm100*100 } ; True RPM. time = { timeNow } ; "timeNow" is a parameterless built-in function. #if CELSIUS egttemp = { egtADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C #else egttemp = { egtADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F #endif ; Added for second O2 sensor #if NARROW_BAND_EGO afr2 = { table(fuelADC, "NBafr100.inc") / 100.0 } lambda2 = { afr2 / 14.7 } #else lambda2 = { table(fuelADC, "WBlambda100MOT.inc") / 100.0 } afr2 = { lambda2 * 14.7 } #endif ; Added for AFR Tables #if NARROW_BAND_EGO afr = { table(egoADC, "NBafr100.inc") / 100.0 } lambda = { afr / 14.7 } TargetAFR = { table(afrtarget, "NBafr100.inc") / 100.0 } TargetLambda = { TargetAFR / 14.7 } #elif WB_Non_Above afr = { egoADC * 0.01961 } lambda = { 0 } TargetAFR = { afrtarget * 0.01961 } TargetLambda = { 0 } #elif DIY_TechE_NonL lambda = { table(egoADC, "WBlambda100MOT.inc") / 100.0 } afr = { lambda * 14.7 } TargetLambda = { table(afrtarget,"WBlambda100MOT.inc") / 100.0} TargetAFR = { TargetLambda * 14.7 } #elif TechEdge_Lin afr = { (egoADC * 0.0392) + 9 } lambda = { afr / 14.7 } TargetAFR = { (afrtarget * 0.0392) + 9 } TargetLambda = { TargetAFR / 14.7 } #elif Innovate1_2 afr = { (egoADC * 0.1961) } lambda = { afr / 14.7 } TargetAFR = { (afrtarget * 0.1961) } TargetLambda = { TargetAFR / 14.7 } #elif Innovate0_5 afr = { (egoADC * 0.0392) + 10 } lambda = { afr / 14.7 } TargetAFR = { (afrtarget * 0.0392) + 10 } TargetLambda = { TargetAFR / 14.7 } #endif ; Another way of doing it for the Tech Edge linear output: ; afr = { 9.0 + 0.039216 * egoADC } ; WBLIN, Mot ADC ; afr = { 9.0 + 0.039063 * egoADC } ; WBLIN, AVR ADC ; ; For the Lambdaboy thingy, the three points given ; (11=2.05, 14.7=4.21, 16=4.98) are damn close to a straight line. ; Without seeing a graph or table of it, I'd guess it's a linear ; output from AFR of 7.5 to 16 (0V to 5V), which gives: ; afr = { 7.5 + 0.0335875 * egoADC } ; LBoy, MOT ADC ; afr = { 7.5 + 0.0334563 * egoADC } ; LBoy, AVR ADC #if MPXH6300A barometer = { table(baroADC, "kpafactor4250.inc") } map = { (mapADC + 1.53) * 1.213675} #elif GM300KPa barometer = { table(baroADC, "kpafactor4250.inc") } map = { mapADC * 1.17647} #elif MPXH6400A barometer = { table(baroADC, "kpafactor4250.inc") } map = { (mapADC + 2.147) * 1.6197783} #elif MPX4250 barometer = { table(baroADC, "kpafactor4250.inc") } map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa. #else barometer = { table(baroADC, "kpafactor4115.inc") } map = { table(mapADC, "kpafactor4115.inc") } #endif throttle = { table(tpsADC, "throttlefactor.inc") } advSpark = { (advance * 0.352)-10 } ; Enhanced Stuff KnockAng = {(KnockAngle * 90 / 256)} KnockDeg = {-KnockAng } CltIatAng = {CltIatAngle * 90 / 256 } CltIatDeg = { CltIatAng < 45? CltIatAng: -90 + CltIatAng} ; Coolant Iat added Angle fuelvolt = {fuelADC < 1 ? 0.0 : fuelADC * (5/255) - 0.5} fuelpress = {fuelADC < 1 ? 0.0 : fuelvolt / 0.04 +1} altDiv1 = { alternate1 ? 2 : 1 } altDiv2 = { alternate2 ? 2 : 1 } cycleTime1 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke1) } nSquirts1 = { nCylinders1/divider1 } dutyCycle1 = { rpm < 100 ? 0 : 100.0*nSquirts1/altDiv1*pulseWidth1/cycleTime1 } cycleTime2 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke2) } nSquirts2 = { nCylinders2/divider2 } dutyCycle2 = { rpm < 100 ? 0 : 100.0*nSquirts2/altDiv2*pulseWidth2/cycleTime2 } ; These next two are needed to make the runtime dialog look good. veCurr = { veCurr1 } pulseWidth = { pulseWidth1 } ; Test use only test = {egtADC} test2 = {fuelADC} ; Hi Res RPM only for 4 or greater cylinder engines. ; Phil, this can be cleaned up now that nCylinders is no longer the 0..15 value but the actual count. ; ??? begin TimeDivisor = {(nCylinders1-1) > 6 ? 0.86 : (nCylinders1-1) > 4 ? 0.82 : (nCylinders1-1) > 2 ? 0.75 : 1} RpmHiResCalc = { (60000000 / ((cTime * (nCylinders1-1) + 1) / (2.0-twoStroke1))) * TimeDivisor} RpmHiRes = { rpm100 < 5 ? rpm : (nCylinders1-1) < 3 ? rpm : RpmHiResCalc} ; ??? end ; Vacuum and Boost Gauges vacuum = {(barometer-map)*0.2953007} ; Calculate vacuum in in-Hg. boost = {map < barometer ? 0.0 : (map-barometer)*0.1450377} ; Calculate boost in PSIG. boostVac = {map < barometer ? -vacuum : (map-barometer)*0.1450377} ; Speedo Gauge, when VSS connected to X6 and X7 ;**************************************************************************** ; CHANGE THESE TO SUIT YOUR CAR TO GET MPG, MPH, ETC. THIS WILL ONLY WORK WITH A SUITABLE ; VEHICLE SPEED SENSOR CONNECTED TO MSnS-EXTRA CODE. Speed = { 70 } ; Change this to your actual speed @ 2.5V from VSS circuit fuelCC = { 2168 } ; Enter the total flow for all your injectors here in cc/Min ;**************************************************************************** squirtmul = { divider1 < 2 ? 2 : divider1 < 3 ? 1 : divider1 < 5 ? 0.5 : divider1 < 9 ? 0.25 : divider1 < 17 ? 0.125 : 1} squirts = { alternate1 > 0 ? rpm100 / 0.6 * squirtmul : rpm100 * 2 * squirtmul / 0.6 } ; How many squirts per Sec OpenWidth = { injOpen1 * 0.1 } ; Pulse width for injector opening time CCpHr = { pulseWidth < 1 ? 1 : (fuelCC/60) * ((pulseWidth - OpenWidth)/1000) * squirts * 3600 } ; cc / hr mphTemp = { fuelADC < 1 ? 0 : (fuelADC * Speed) /127.5 } ; MPH mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph USgph = { CCpHr / 3785 } ; US Gallons / Hr USmpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon gph = { CCpHr / 4546 } ; Real Gallons / Hr mpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / gph } ; Real Miles / Gallon ;***************************************************************************** ; CHANGE THESE VALUES TO FIND THE APPROXIMATE BHP FOR YOUR ENGINE. ; CALCULATIONS WERE PROVIDED BY ERIC. THESE WILL ONLY WORK IF A SUITABLE VEHICLE SPEED ; SENSOR IS CONNECTED TO THE MSnS-EXTRA CODE. Cd = 0.33 ; Change this to your vehicle's Coefficient of Drag (0.25-1.0 for road vehicles) Mass = 1050 ; Change this to your vehicle's weight in KGs. Crr = 18 ; Change this to your vehicle's internal drive train loss. (8% for Nascar, ; diamond-like coating on gears to 25% for road car with automatic transmission) Radius = 16.15 ; Change this to your vehicle's driven wheel radius in inch's GrTms = 0.88 ; Ratio of the gear you want to test BHP in. DiffRa = 3.31 ; Differential ratio ;------------------------------------------------------------------------------- [Datalog] ; Full datalog. ; ; Default user-defined log emulates the full datalog. ; ; 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. ; ; Channel Label Type Format ; -------------- ---------- ----- ------ entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpm100, "RPM", int, "%d" entry = map, "MAP", int, "%d" entry = throttle, "TP", int, "%d" entry = egoVoltage, "O2", float, "%.3f" 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, "%.1f" entry = veCurr2, "Gve2", int, "%d" entry = pulseWidth2, "PW2", float, "%.1f" entry = dutyCycle1, "DutyCycle1", float, "%.1f" entry = dutyCycle2, "DutyCycle2", float, "%.1f" ; Last three are for MSLVV compatibility, but we dont use these, we use the ; three underneath. ; entry = pulseWidth2, "UserData1", int, "%d" ; entry = veCurr2, "UserData2", int, "%d" ; entry = idleDC, "UserData3", int, "%d" ; These four are for datalogging the egt,fuel pressure, spark angle ; and knock retard. Only 3 can be used at once for MSLVV compatability. entry = egttemp, "EGT", int, "%d" entry = advSpark, "Spark Angle", int, "%d" ; entry = fuelpress, "Fuel Press", int, "%d" entry = KnockDeg, "Knock", int, "%d"