;------------------------------------------------------------------------------- [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. queryCommand = "S" versionInfo = "T" signature = "MSnS-extra format 024s *********" ;!! Suitable for use with 024s7 through 024s13 ;------------------------------------------------------------------------------- [Constants] ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale endianness = big nPages = 8 burnCommand = "B" pageSize = 200, 200, 200, 200, 200, 200, 200, 200 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 = 1 ; 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, 158, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY #if MPXH6300A mapBins1 = array, U08, 170, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A mapBins1 = array, U08, 170, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins1 = array, U08, 170, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif #else tpsBins1 = array, U08, 170, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif #if CELSIUS egoTemp1 = scalar, U08, 144, "°C", 0.555, -72, -40, 102.0, 0 #else egoTemp1 = scalar, U08, 144, "°F", 1.0, -40, -40, 215.0, 0 #endif egoCount1 = scalar, U08, 145, "", 1.0, 0.0, 0.0, 255.0, 0 egoDelta1 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0 egoLimit1 = scalar, U08, 147, "%", 1.0, 0.0, 0.0, 255.0, 0 reqFuel1 = scalar, U08, 148, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider1 = scalar, U08, 149, "", 1.0, 0.0 alternate1 = bits, U08, 150, [0:0], "Simultaneous", "Alternating" injOpen1 = scalar, U08, 151, "ms", 0.1, 0.0, 0.1, 25.5, 1 injPwmP1 = scalar, U08, 153, "%", 1.0, 0.0, 0.0, 100.0, 0 injPwmT1 = scalar, U08, 154, "ms", 0.1, 0.0, 0.0, 25.5, 1 battFac1 = scalar, U08, 155, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2 rpmk1 = scalar, U16, 156, "", 1.0, 0.0 ; Config1 mapType1 = bits, U08, 182, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID" mapSensor1 = bits, U08, 182, [0:0] twoStroke1 = bits, U08, 182, [2:2], "Four-stroke", "Two-stroke" injType1 = bits, U08, 182, [3:3], "Port", "Throttle Body" nCylinders1= bits, U08, 182, [4:7+1] ; Config3 cltType1 = bits, U08, 183, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3" matType1 = bits, U08, 183, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3" nInjectors1= bits, U08, 183, [4:7+1] ; Config3 engineType1= bits, U08, 184, [0:0], "Even fire", "Odd fire" egoType1 = bits, U08, 184, [1:1], "Narrow band", "Wide band" algorithm1 = bits, U08, 184, [2:2], "Speed Density", "Alpha-N" baroCorr1 = bits, U08, 184, [3:3], "Off", "On" egoRPM1 = scalar, U08, 185, "RPM", 100.0, 0.0, 100, 25500, 0 #if CELSIUS fastIdleT1 = scalar, U08, 186, "°C", 0.555, -72.0, -40, 102, 1 #else fastIdleT1 = scalar, U08, 186, "°F", 1.0, -40.0, -40, 215, 1 #endif egoSwitch1 = scalar, U08, 187, "v", 0.0196, 0.0, 0.0, 5.0, 3 page = 2 veBins2 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins2 = array, U08, 158, [ 12], "RPM", 100.0, 0.0, 100, 25000, 0 #if SPEED_DENSITY #if MPXH6300A mapBins2 = array, U08, 170, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A mapBins2 = array, U08, 170, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins2 = array, U08, 170, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif #else tpsBins2 = array, U08, 170, [ 12], "TPS", 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, #if CELSIUS egoTemp2 = scalar, U08, 144, "°C", 0.555, -72, -40, 102.0, 0 #else egoTemp2 = scalar, U08, 144, "°F", 1.0, -40, -40, 215.0, 0 #endif egoDelta2 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0 egoLimit2 = scalar, U08, 147, "%", 1.0, 0.0, 0.0, 255.0, 0 reqFuel2 = scalar, U08, 148, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider2 = scalar, U08, 149, "", 1.0, 0.0 alternate2 = bits, U08, 150, [0:0], "Simultaneous", "Alternating" injOpen2 = scalar, U08, 151, "ms", 0.1, 0.0, 0.1, 25.5, 1 injPwmP2 = scalar, U08, 153, "%", 1.0, 0.0, 0.0, 100.0, 0 injPwmT2 = scalar, U08, 154, "ms", 0.1, 0.0, 0.0, 25.5, 1 battFac2 = scalar, U08, 155, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2 rpmk2 = scalar, U16, 156, "", 1.0, 0.0 ; Config1 mapType2 = bits, U08, 182, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID" twoStroke2 = bits, U08, 182, [2:2], "Four-stroke", "Two-stroke" injType2 = bits, U08, 182, [3:3], "Port", "Throttle Body" nCylinders2= bits, U08, 182, [4:7+1] ; Config3 cltType2 = bits, U08, 183, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3" matType2 = bits, U08, 183, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3" nInjectors2= bits, U08, 183, [4:7+1] ; Config3 engineType2= bits, U08, 184, [0:0], "Even fire", "Odd fire" egoType2 = bits, U08, 184, [1:1], "Narrow band", "Wide band" algorithm2 = bits, U08, 184, [2:2], "Speed Density", "Alpha-N" baroCorr2 = bits, U08, 184, [3:3], "Off", "On" primePulse2= scalar, U08, 185, "ms", 0.1, 0.0, 0.0, 25.5, 1 egoRPM2 = scalar, U08, 185, "RPM", 100.0, 0.0, 100, 25500, 0 #if CELSIUS fastIdleT2 = scalar, U08, 186, "°C", 0.555, -72.0, -40, 102, 1 #else fastIdleT2 = scalar, U08, 186, "°F", 1.0, -40.0, -40, 215, 1 #endif egoSwitch2 = scalar, U08, 187, "v", 0.0196, 0.0, 0.0, 5.0, 3 taeColdM2 = scalar, U08, 188, "%", 1.0, 0.0, 0.0, 250.0, 0 egoCount2 = scalar, U08, 190, "", 1.0, 0.0, 0.0, 255.0, 0 ; SECOND O2 SETTINGS TwoLambda = bits, U08, 191[0:0], "None*^(DT)", "Fitted (DT only)" 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 SPEED_DENSITY #if MPXH6300A mapBins3 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.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 #else tpsBins3 = array, U08, 156, [ 12], "TPS", 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:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active" out2lim = scalar, U08, 9, "raw byte or deg F +40", 1, 0, 0, 255, 0 out2src = bits, U08, 10, [0:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active" 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:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active" out3Timer = scalar, U08, 134, "Sec", 0.1, 0, 0, 25.5 , 1 Out3_Out1 = bits, U08, 116[7:7], "Source", "output1+Source" out4lim = scalar, U08, 139, "raw byte or deg F +40", 1, 0, 0, 255, 0 out4src = bits, U08, 138, [0:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT","TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active" out4FAN = bits, U08, 1, [6:6], "Source", "Fan Control" wd_2trig = bits, U08, 11, [0:0], "Missing teeth", "2nd trigger" egoIgnCount = bits, U08, 11, [1:1], "mSec", "Ign Pulses*^" whlsim = bits, U08, 11, [2:2], "off", "on" taeIgnCount = bits, U08, 11, [3:3], "Sec*^", "Cycles" ;spare = 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" out3sparkd = bits, U08, 12, [4:4], "Output3", "Spark output D" ; dwellcrankmode = bits, U08, 12, [5:5], "Set dwell after spark", "Charge at trigger point*^" dwellduty50 = bits, U08, 12, [5:6], "75% duty cycle*^", "minimal for HEI4", "50% duty cycle", "INVALID" whlsimcnt = scalar, U08, 13, "", 1.0, 0.0, 1, 4, 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 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 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 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, 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 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 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 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 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 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], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only" HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0 HCutLCType = bits, U08, 76[0:1], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only" 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], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only" 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, 1000, 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 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! and it didn't...... ; 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 CELSIUS OvrRunClt = scalar, U08, 197, "°C", 0.555, -72, -40, 102, 0 #else OvrRunClt = scalar, U08, 197, "°F", 1, -40, -40, 215, 0 #endif #if MPXH6300A OvrRunKpa = scalar, U08, 72, "KPa", 1.213675, 1.53, 0, 304.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" DecEnrichment = bits, U08, 116[5:5], "TPSdot*^(DT)", "MAPdot" KPaDotBoost = bits, U08, 66[4:4], "Never", "In Boost" DecayAccel = bits, U08, 116[6:6], "None*^(DT)", "Decay" DecayAcPoint = scalar, U08, 198, "mS", 0.1, 0, 0, 25.5, 1 ; 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 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 AlphBaroCor = bits, U08, 199, [3:3], "No", "Yes" ; 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 ; 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 ;running dwell variable railed to 6 - who needs more than 6ms? ;mindischarge railed to 1.5ms. ought to be max 1ms I guess? dwellcont = bits, U08, 109, [1:1], "Fixed duty*^", "Dwell control" dwellcrank = scalar, U08, 110, "ms", 0.1, 0, 0, 25, 1 dwellrun = scalar, U08, 111, "ms", 0.1, 0, 0, 6, 1 mindischg = scalar, U08, 143, "ms", 0.1, 0, 0, 1.5, 1 idle_dc_lo = scalar, U08, 122, "dc%", 1, 0, 0, 100, 0 ; idle_dc_hi = 0 idleperiod = scalar, U08, 144, "ticks", 1, 0, 0, 255, 0 idlekickrpm = scalar, U08, 145, "RPM", 100, 0, 100, 6000, 0 idlekickdc = scalar, U08, 146, "dc%", 1, 0, 0, 100, 0 idledashdc = scalar, U08, 147, "dc%", 1, 0, 0, 100, 0 idlemindc = scalar, U08, 148, "dc%", 1, 0, 0, 100, 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 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 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 KPA300Corr = scalar, U08, 175, "%", 0.39216, 0, 0, 100, 0 ; 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" ; MAPdot and ACCEL WIZARD STUFF mapThresh4 = scalar, U08, 91, "kPa/s", 10, 0, 0, 2550, 0 taeRates4 = array, U08, 176,[ 4], "ms", 0.1960784, 0.0, 0.0, 25.5, 1 maeRates4 = array, U08, 180,[ 4], "ms", 10, 0.0, 0.0, 2550, 0 maeBins4 = array, U08, 184,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeBins4 = array, U08, 188,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeColdA4 = scalar, U08, 192, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh4 = scalar, U08, 193, "v/s", 0.1953125, 0.0, 0.2, 49.8, 3 taeTime4 = scalar, U08, 194, "ms", 0.1, 0.0, 0.0, 25.5, 1 tdePct4 = scalar, U08, 195, "%", 1.0, 0.0, 0.0, 255.0, 0 taeColdM4 = scalar, U08, 196, "%", 1.0, 0.0, 0.0, 250.0, 0 mapProportion4 = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot" AccelMapASE = bits, U08, 199, [2:2], "Normal", "Off during ASE" 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 SPEED_DENSITY #if MPXH6300A mapBins4 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.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 #else tpsBins4 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif ; crankCold5 = scalar, U08, 168, "ms", 0.1, 0.0, 0.0, 25.5, 1 ; crankHot5 = scalar, U08, 169, "ms", 0.1, 0.0, 0.0, 25.5, 1 ; asePct5 = scalar, U08, 170, "%", 1.0, 0.0, 0.0, 255.0, 0 ; aseCount5 = scalar, U08, 171, "", 1.0, 0.0, 0.0, 255.0, 0 wueBins5 = array, U08, 172,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0 ; primePulse5 = scalar, U08, 182, "ms", 0.1, 0.0, 0.0, 25.5, 1 CrankPWT1 = scalar, U08, 183, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT2 = scalar, U08, 184, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT3 = scalar, U08, 185, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT4 = scalar, U08, 186, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT5 = scalar, U08, 187, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT6 = scalar, U08, 188, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT7 = scalar, U08, 189, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT8 = scalar, U08, 190, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT9 = scalar, U08, 191, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT10 = scalar, U08, 192, "mS", 0.1, 1, 0, 25.5, 1 ; Priming SETTINGS AlwaysPrime = bits, U08, 193[0:0], "Prime Pulse>0*^", "Always" PrimeLate = bits, U08, 193[1:2], "Power Up*^", "INVALID", "Twice","After 2 Secs" PrimeTBox = bits, U08, 193[3:3], "Priming Table", "Standard Prime" ; CLT vs MAT for cranking pulse width crankpwip = bits, U08, 193, [4:5], "INVALID", "CLT only*^", "MAT only", "CLT,MAT average" CrankRPM = scalar, U08, 194, "rpm", 100.0, 0.0, 100, 1000, 0 tpsflood = scalar, U08, 195, "raw", 1.0, 0.0, 0.0, 255.0, 0 PrimePulse = scalar, U08, 196, "mS", 0.1, 0.0, 0.0, 25.5, 1 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 SPEED_DENSITY #if MPXH6300A mapBins5 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.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 #else tpsBins5 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif ASETable1 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255, 0 ASETable2 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255, 0 ASETable3 = scalar, U08, 170, "%", 1.0, 0.0, 0.0, 255, 0 ASETable4 = scalar, U08, 171, "%", 1.0, 0.0, 0.0, 255, 0 ASETable5 = scalar, U08, 172, "%", 1.0, 0.0, 0.0, 255, 0 ASETable6 = scalar, U08, 173, "%", 1.0, 0.0, 0.0, 255, 0 ASETable7 = scalar, U08, 174, "%", 1.0, 0.0, 0.0, 255, 0 ASETable8 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 255, 0 ASETable9 = scalar, U08, 176, "%", 1.0, 0.0, 0.0, 255, 0 ASETable10 = scalar, U08, 177, "%", 1.0, 0.0, 0.0, 255, 0 ASETime = scalar, U08, 178, "", 1.0, 0.0, 0.0, 255, 0 aseIgnCount = bits, U08, 179, [0:0], "Cycles*^", "Sec" ASEFixDe = bits, U08, 179, [1:1], "Decay *^", "Fixed then Decay" ASEFixTim = scalar, U08, 180, "", 1.0, 0.0, 0.0, 255, 0 #if CELSIUS ASEFixTemp = scalar, U08, 181, "°C", 0.555, -72, -40, 100, 1 #else ASEFixTemp = scalar, U08, 181, "°F", 1, -40, -10, 120, 1 #endif VEFixASE = bits, U08, 179, [2:2], "Normal MAP *^", "Fixed MAP" #if MPXH6300A VEFixValue = scalar, U08, 182, "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A VEFixValue = scalar, U08, 182, , "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else VEFixValue = scalar, U08, 182, , "kpa", 0.965, 9, 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_1_0_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif WB_UNKNOWN afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif DIYWB_NON_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif TECHEDGE_LINEAR afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1 #elif INNOVATE_1_2_LINEAR afrBins1 = array, U08, 0, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1 #elif INNOVATE_0_5_LINEAR afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1 #elif INNOVATE_LC1_DEFAULT afrBins1 = array, U08, 0, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1 #elif ZEITRONIX_NON_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #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 SPEED_DENSITY #if MPXH6300A mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.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 #else tpsBins6 = array, U08, 72, [ 8], "TPS", 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_1_0_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif DIYWB_NON_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif TECHEDGE_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229, 9.0, 19.0, 1 #elif INNOVATE_1_2_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 0.0, 20.0, 1 #elif INNOVATE_0_5_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255, 10.0, 20.0, 1 #elif INNOVATE_LC1_DEFAULT afrBins2 = array, U08, 80, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1 #elif ZEITRONIX_NON_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #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 SPEED_DENSITY #if MPXH6300A mapBins7 = array, U08, 152, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.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 #else tpsBins7 = array, U08, 152, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif page = 8 ; boost controller targets+ rotary split table ;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 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 #if SPEED_DENSITY #if MPXH6300A splitkpaBins = array, U08, 186, [ 6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A splitkpaBins = array, U08, 186, [ 6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else splitkpaBins = array, U08, 186, [6], "kpa", 1, 0, 0.0, 255.0, 0 #endif #else splittpsBins = array, U08, 186, [ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif splitTable = array, U08, 144, [6x6], "deg", 0.352, -28.4, -10.0, 80.0, 0 splitrpmBins = array, U08, 180, [ 6], "RPM", 100.0, 0.0, 100, 25500, 0 rotary2 = bits, U08, 192, [0:0], "Off", "On" fixedsplit = scalar, U08, 193, , "deg", 0.352, -28.4, -10.0, 30.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 = egoControl1, "&Exhaust Gas Settings", 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 = "Crank/WarmUp" subMenu = CrankTble, "Cranking Settings", 5 subMenu = AfterStTbl, "After start Enrichment Settings", 6 subMenu = std_warmup, "&Warmup Wizard", 5 menu = "Fuel Table&2(DT)", { inj2t } subMenu = std_constants, "&Constants 2 (DT)", 2 subMenu = egoControl2, "&Exhaust Gas Settings", 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 = RevLimiterS, "Re&v Limiter", 4 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, "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" subMenu = wheelsim, "Stim for wheel" subMenu = rotarySettings, "Rotary trailing settings" subMenu = splitTbl, "Rotary split Table ", 0, { rotary2 } menu = "&Code Config" subMenu = codeBase, "&Codebase and outputs function" subMenu = advanced, "(NEW)&Advanced code options" subMenu = wheeldecoder, "Wheel decoder settings", 0, { wheelon } subMenu = MapSettings, "MA&P Sensor Settings" subMenu = BarroCor, "&Barometric Correction" subMenu = outputs, "&Outputs" subMenu = outputs2, "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_accel, "&Acceleration Wizard", 4 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 } subMenu = splitMap, "Rotary Split", 0, { rotary2 } 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 = Fhelp7, "Rev Limiter" 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" subMenu = Chelp7, "MAP Sensor Selection" subMenu = Chelp8, "Over Run Settings" ;------------------------------------------------------------------------------- [UserDefined] dialog = egoControl1, "EGO Control",1 field = "EGO Sensor Type", egoType1 field = "EGO Switch Point", egoSwitch1 field = "Ignition Events per Step", egoCount1 field = "Controller Step Size", egoDelta1 field = "Controller Authority ±", egoLimit1 field = "Active Above Coolant Temp", egoTemp1 field = "Active Above RPM", egoRPM1 field = "" field = "PLEASE NOTE:" field = "For Warmup and Accel bins please see" field = "Warmup and Accel Wizards in Tuning" dialog = egoControl2, "EGO Control for Second O2 Sensor",2 field = "Second Lambda fitted on X7?", TwoLambda field = "" field = "EGO Sensor Type", egoType2, {TwoLambda} field = "EGO Switch Point", egoSwitch2, {TwoLambda} ; field = "Ignition Events per Step", egoCount2, {TwoLambda} field = "Controller Step Size", egoDelta2, {TwoLambda} field = "Controller Authority ±", egoLimit2, {TwoLambda} field = "Active Above Coolant Temp", egoTemp2, {TwoLambda} field = "Active Above RPM", egoRPM2, {TwoLambda} ; field = "" ; field = "PLEASE NOTE:" ; field = "For Warmup and Accel bins please see" ; field = "Warmup and Accel Wizards in Tuning" dialog = codeBase, "Power cycle after changes", 4 topicHelp = Chelp1 field = "F1 for HELP" field = "" field = "Choose one code type" field = "Distributor (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 field = "output3 function", out3sparkd dialog = wheeldecoder, "Power cycle after changes", 4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" field = "Wheel decoder base teeth", numteeth field = "2nd trigger / missing teeth", wd_2trig field = "Missing teeth", onetwo, { !wd_2trig } 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 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 = "F1 for HELP" field = "" field = "Functions from DT (*=B+G default)" field = "EGO Correction Step Counter", egoIgnCount field = "Accel Timer", taeIgnCount field = "Hybrid Alpha N", hybridAN field = "" field = "KPa in Alpha-n Calcs:", AlphBaroCor, {algorithm1} field = "" field = "EDIS multispark", edismulti, { edis } field = "EDIS multispark rpm limit", edismultirpm, { edis & edismulti } dialog = MapSettings, "Power Cycle after Changes",4 topicHelp = Chelp7 field = "F1 for HELP" 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 = "Baro Correction factor needs to be:" field = "24% for GM 300KPa sensor" field = "28% for 6300A series sensor" field = "78% for 6400A series sensor" field = "Baro Correction Factor", KPA300BARO, {mapSensor1 & KPA300Sens} field = "KPa Correction factor needs to be:" field = "24% for GM 300KPa sensor" field = "28% for 6300A series sensor" field = "50% for 6400A series sensor" field = "KPa Correction Factor", KPA300Corr, {mapSensor1 & KPA300Sens} dialog = fuelTable, "Fuel Table selection",4 topicHelp = Fhelp2 field = "F1 for HELP" field = "" 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 = RevLimiterS, "Rev Limiter", 4 topicHelp = Fhelp7 field = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" field = "OUTPUT 3 (U1 pin15)" field = "Source or Source+OUTPUT1", Out3_Out1, { !out3sparkd } field = "OUTPUT 3 (PTD0) source", out3src, { !out3sparkd } field = "On-Off Limit", out3lim, { !out3sparkd } field = "Off Delay Timer", out3Timer, { !out3sparkd } 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 & (!wd_2trig) } 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 = "F1 for HELP" field = "" 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 = rotarySettings,"Rotary Settings",8 field = "Experimental trailing split" field = "For twin rotor only, check msefi before using" field = "trailing split support", rotary2 field = "NOTE!" field = "In the split table" field = "-1 means trailing OFF" field = "0 means fire simultaneously" field = "other values are the trailing delay in degrees" field = "" field = "Fixed split for testing (-10 = map)", fixedsplit, { rotary2 } dialog = dwellSettings,"Dwell Settings",4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" field = "Dwell control", dwellcont field = "Use: Spark output duty cycle", dwellduty50, { !dwellcont } field = "Or:" field = " Cranking dwell", dwellcrank, { dwellcont } field = " Running dwell", dwellrun, { dwellcont } field = "Minimum discharge period", mindischg, { dwellcont } field = "" field = "Note" field = "these times are for 12V. Battery voltage correction" field = "is applied. At higher voltages the time is reduced" field = "and when low it is increased" dialog = wheelsim,"Simulator for wheel",4 topicHelp = Fhelp1 field = "ONLY FOR USE ON STIM - DO NOT USE ON CAR" field = "" field = "Wheel simulator", whlsim field = "Number of steps/outputs", whlsimcnt dialog = idleControl, "Fielding 2-Wire Idle Control", 4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" 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) } field = "Idle tuning settings" field = "Recalc every x ignition events", idleperiod, { pwmIdle & (pwmidlewhen >1) } field = "Low rpm to kick up duty", idlekickrpm, { pwmIdle & (pwmidlewhen >1) } field = "Kick up duty cycle", idlekickdc, { pwmIdle & (pwmidlewhen >1) } field = "Dashpot duty cycle", idledashdc, { pwmIdle & (pwmidlewhen >1) } field = "Minimum duty cycle", idlemindc, { pwmIdle & (pwmidlewhen >1) } ; upper idle duty cycle is always zero dialog = boostIAT, "IAT Related Boost",4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "" dialog = OpenLoop, "Open Loop Mode", 4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" field = "OVER BOOST PROTECTION" field = "Over Boost Hard Cut if Boost hits", OvrBKpa dialog = HardLim, "Hard Cut/Limiter Type", 4 topicHelp = Fhelp4 field = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 @ NOS min 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 = "F1 for HELP" field = "" field = "STAGED INJECTION SETTINGS" field = " Not suitable with DT" field = "Injector Staging Mode:", IStagedMode field = "Injector Bank 2 off until:" 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 = Chelp8 field = "F1 for HELP" field = "" field = "Over Run Fuel Cut", OvrRunC field = "Cut fuel when:" field = "RPM greater than:", OvrRunRpm, {OvrRunC} field = "and KPa lower than: ", OvrRunKpa, {OvrRunC} field = "and TPS lower than: ", OvrRunTps, {OvrRunC} field = "and coolant greater than:", OvrRunClt, {OvrRunC} field = "after", OvrRunTimr, {OvrRunC} dialog = AccelDecc, "Accel Decel Trigger dot", 4 topicHelp = Fhelp6 field = "F1 for HELP" field = "" field = "Accel Enrichments Trigger:", AccDecEnrich field = "Decel Enrichments Trigger:", DecEnrichment field = "" field = "Accel Timer", taeIgnCount field = "" field = "Decay Accel Enrichment:", DecayAccel field = "Accel value at end of Accel Time:", DecayAcPoint, {DecayAccel} field = "" field = "Turn Decel Enrich off when :" , DecelBoost field = "Cut Decel Setpoint:", DecelKPa, {DecelBoost} field = "" field = "If MAPdot:" field = " Turn Accel Enrich off in boost", KPaDotBoost, {AccDecEnrich} field = " Turn Accel Enrich off during ASE", AccelMapASE, {AccDecEnrich} field = "" field = "Please see the Accel Wizard in the Tuning Section" dialog = BarroCor, "Barometric Correction", 4 topicHelp = Chelp3 field = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 = "F1 for HELP" field = "" 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 dialog = CrankTble, "Cranking / Prime Table", 5 topicHelp = Chelp9 field = "F1 for HELP" field = "Cranking RPM", CrankRPM field = "TPS value for flood clear", tpsflood field = "Prime Pump when", AlwaysPrime field = "Fire Priming Pulse", PrimeLate field = "Priming PW Source", PrimeTBox field = "Standard Priming PW:", PrimePulse, {PrimeTBox} field = "Cranking Pulse Width Temps", crankpwip #if CELSIUS field = "Cranking/Priming PW Table" field = " -40 C ", CrankPWT1 field = " -29 C ", CrankPWT2 field = " -18 C ", CrankPWT3 field = " -7 C ", CrankPWT4 field = " 4 C ", CrankPWT5 field = " 16 C ", CrankPWT6 field = " 27 C ", CrankPWT7 field = " 38 C ", CrankPWT8 field = " 54 C ", CrankPWT9 field = " 71 C ", CrankPWT10 #else field = " Pulse Widths" field = " -40 F ", CrankPWT1 field = " -20 F ", CrankPWT2 field = " 0 F ", CrankPWT3 field = " 20 F ", CrankPWT4 field = " 40 F ", CrankPWT5 field = " 60 F ", CrankPWT6 field = " 80 F ", CrankPWT7 field = " 100 F ", CrankPWT8 field = " 130 F ", CrankPWT9 field = " 160 F ", CrankPWT10 #endif dialog = AfterStTbl, "After Start Enrichment (ASE) Settings", 6 topicHelp = Chelp10 field = "F1 for HELP" field = "ASE Timer", aseIgnCount field = "ASE TOTAL Time", ASETime field = "" field = "ASE Mode", ASEFixDe field = "MAP mode during ASE", VEFixASE field = "" field = "Use Fixed ASE/MAP when coolant below:", ASEFixTemp, {ASEFixDe + VEFixASE} field = "Fixed ASE/MAP Time Period", ASEFixTim, {ASEFixDe + VEFixASE} field = "Fixed MAP Value", VEFixValue, {VEFixASE} #if CELSIUS field = "After Start Enrichment Table" field = " -40 C ", ASETable1 field = " -29 C ", ASETable2 field = " -18 C ", ASETable3 field = " -7 C ", ASETable4 field = " 4 C ", ASETable5 field = " 16 C ", ASETable6 field = " 27 C ", ASETable7 field = " 38 C ", ASETable8 field = " 54 C ", ASETable9 field = " 71 C ", ASETable10 #else field = "After Start Enrichment Table" field = " -40 F ", ASETable1 field = " -20 F ", ASETable2 field = " 0 F ", ASETable3 field = " 20 F ", ASETable4 field = " 40 F ", ASETable5 field = " 60 F ", ASETable6 field = " 80 F ", ASETable7 field = " 100 F ", ASETable8 field = " 130 F ", ASETable9 field = " 160 F ", ASETable10 #endif ;*************************** HELP STUFF *************************************** help = Fhelp1, "General Help" webHelp = "http://megasquirt.sourceforge.net/extra/" text = "For MS (fuel only) select *.
" text = "For MSnS select ^
" text = "
" text = "For more help or problems please see the Extra Website by clicking the Web Help button.
" 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" webHelp = "http://megasquirt.sourceforge.net/extra/tableswitch.html" 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" webHelp = "http://megasquirt.sourceforge.net/extra/dualego.htm" 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 = "
" 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" webHelp = "http://megasquirt.sourceforge.net/extra/launch.htm" 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" webHelp = "http://megasquirt.sourceforge.net/extra/mapdot.html" text = "Select between TPSdot / MAPdot accel/decel enrichment
" text = "
" text = "The Accel Timer can be changed from Seconds to Engine Cycle counts.
" text = "
" text = "Normal MS mode finds the increase in PW and holds that till the Accel Timer has timed out.
" text = "By selecting Decay it will find the increase to add then it will linearly decrease the Enrichment,
" text = "to the Decay Value by the time the Accel Timer has timed out.
" text = "
" 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
" text = "
" text = "Please see the Accel Wizard in the Tuning Section" help = Shelp1, "Knock Detection" text = "Please see:
" webHelp = "http://megasquirt.sourceforge.net/extra/knock.html" text = "for more info on this function.
" help = Shelp2, "IAT/CLT Related Ignition" webHelp = "http://megasquirt.sourceforge.net/extra/cltiat.html" 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" webHelp = "http://megasquirt.sourceforge.net/extra/" 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" webHelp = "http://megasquirt.sourceforge.net/extra/tableswitch.html" 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" webHelp = "http://megasquirt.sourceforge.net/extra/setup.html" 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 = "If using Alpha-n mode then you can still have the KPa " text = "in the fuel calculations. But ensure the MAP sensor connection is " text = "upstream of the throttle. Near the air filter is recommended." text = "
" 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
" 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" webHelp = "http://megasquirt.sourceforge.net/extra/waterinj.html" 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" webHelp = "http://megasquirt.sourceforge.net/extra/nitrous.html" 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 NOS min and 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" webHelp = "http://megasquirt.sourceforge.net/extra/stagedinj.html" 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.
" help = Chelp7, "MAP Sensor Selection" text = "The code can be used with differnet MAP sensors for capability of up to 400KPa.
" text = "
" text = "This is for the hard core users who would know what to do with the settings, normal
" text = "MS users are STRONGLY advised to leave this set to B+G SENSOR. Any other setting needs
" text = "a different pressure sensor fitting to the MS PCB or SEVERE lean conditions can be created." text = "
" text = "When using a different sensor you will also need to SET the relavent sensor in the INI file for MT
" text = "This can be done by opening the msns-extra.ini file and changing UNSET to SET for your sensor." help = Chelp8, "Over Run Settings" webHelp = "http://megasquirt.sourceforge.net/extra/overrun.html" text = "This is used to cut fuel off during deceleration to aid engine breaking and reduce fuel use." help = Fhelp7, "Rev Limiter" webHelp = "http://megasquirt.sourceforge.net/extra/revlimiter.htm" text = "The soft rev limiter is for spark based codes, this retards the ignition to the
" text = "Soft Limit setpoint to reduce engine power and to try to reduce engine speed.
" text = "If the soft limit point is maintained for the limiter max time setpoint then the
" text = "hard limiter will cut in. This will also come in when the RPM reaches the Hard Limit setpoint
" text = "the hard limiter can be used in fuel only mode or in spark modes" help = Chelp9, "Cranking/Priming Table" webHelp = "" text = "CRANKING RPM
" text = "The Cranking RPM value lets the MegaSquirt know when the engine is cranking or when it is running. A good starting point would be 300 as most engines crank around 200 RPM; the rule of thumb being about 100 RPM higher than your actual cranking RPM. Do not set this too high because if your RPM dips due to a low idle or a slight stall it will make the MegaSquirt think it is cranking and also reinitiate the afterstart" text = "enrichment period. Set it too low and it will try and use the VE table for crank pulsewidths instead of the Cranking/Priming PW Table, which is not good either.
" text = "
" text = "TPS VALUE FOR FLOOD CLEAR
" text = "Sometimes you might want to temporarily stop the injectors from injecting fuel during cranking to clear a flooded engine. This is achieved by holding down the gas pedal during cranking. The MegaSquirt needs to know at what point of gas pedal deflection it should turn off the injectors and a good starting point would be just before floored.
" text = "To get this value, go to Tools, Calibrate TPS, and push the gas pedal almost all the way to the floor - about where you think the fuel should be cut off and hit Get Current. Remember this value and hit CANCEL on the Calibrate TPS dialog. Insert this value for the TPS Flood Clear. If this value is set too low then you will not get any fuel during cranking. If you set this value too high, then you won't be able to press the pedal enough to trigger the Flood Clear.
" text = "
" text = "PRIME PUMP WHEN
" text = "Values for this item are either Prime Pulse > 0 or Always. If you select the first option, the pump will only be primed if the priming pulsewidth setting is greater than zero. If you select the latter option, Always, the pump will be primed regardless of your priming pulsewidth. You will most likely want to use Always as it will get your fuel pressure up before cranking, but you don't necessarily have to inject any fuel. The priming period is two seconds.
" text = "
" text = "FIRE PRIMING PULSE
" text = "The Fire Priming Pulse option allows you to select when a priming pulse is fired. If you select Power Up, a priming pulse will be fired immediately upon turning on the ignition. If you select Twice, one priming pulse will be fired when you first key the ignition on and the second pulse will be fired after a second has passed. If you select After 2 Secs, there will be one priming pulse two seconds after turning on the ignition.
" text = "The first option was in the original stock code, however, it will not necessarily work for a cold-start because there there may not already be fuel pressure in the rail when you turn the ignition on. The other two options are just different methods of firing the priming pulse. If you select Twice, then there will most likely be no" text = "fuel injected on the first pulse, unless there is already fuel pressure in the fuel rail, and then there sould be fuel injected on the next pulse. If you select the After 2 Secs option, it will give the fuel pump time to build up pressure. With that option, however, remember that if you try and start the car before allowing two seconds to elapse, no priming pulse will ever be injected.
" text = "
" text = "PRIMING PW SOURCE
" text = "There are two options for the Priming PW Source. You can either select Standard Prime which will inject a fixed amount of fuel as specified in the Standard Priming PW box, or you can select Priming PW Table which will have your priming PW be based off the Cranking/Priming PW Table. If you would like more control over your priming pulsewidths for varying temperatures," text = "then select Priming PW Table and the values specified in the Cranking/Priming PW Table will be used as the priming pulsewidth for the given temperature.
" text = "
" text = "STANDARD PRIMING PW
" text = "If you selected Standard Prime for the Priming PW Source, then this is where you select how long the injectors will stay open when the priming pulse is fired. This value is in milliseconds.
" text = "
" text = "CRANKING PULSE WIDTH TEMPS
" text = "Here you can select what temperature lookup method you would like to use for the Cranking/Priming PW Table during cranking. CLT Only uses the coolant temperature and is the original Megasquirt option. This is what most people use and if you have a standard setup with a coolant sensor, this is most likely what you will want to use. If you would like to use the manifold temperature instead, select MAT Only. You can also select CLT, MAT Average which uses an average of the two temperatures.
" text = "
" text = "CRANKING/PRIMING PW TABLE
" text = "In older versions of the MegaSquirt firmware, the cranking pulsewidth was handled by a linear interpolation between a high and low temperature pair. A linear curve was not necessarily optimal for some people so now you have the option of setting your cranking pulsewidth at various temperatures.
" text = "If you're migrating over from a MegaSquirt version that only used two values, use those as your high and low values in the Cranking/Priming PW Table and then guess the values in between. Then, when you start your car, you can adjust the pulsewidth values for the various temperatures that yield the most reliable and fastest starts.
" help = Chelp10, "After Start Enrichment (ASE)" webHelp = "" text = "It's been found that during winter the cranking and after start enrichments need tweeking
" text = "in order to get the engine to start and run without restarting it several times from cold.
" text = "The reason is felt that the after start and cranking enrichments dont follow temperature in a
" text = "linear format. So if you find this is the case you can use this table to tweek areas where it
" text = "is difficult to start. It has been found that the areas for concern are around 32F (0C) " text = "
" text = "
" text = "After Start Enrich Counter is the length of time in Seconds or engine cycles that the
" text = "after start enrich runs for. The percentage added is decayed down to zero as the time expires " text = "
" text = "
" text = "Set ASE Mode to FIXED for a timed period of ASE that does not decay, after the timer the ASE will
" text = "then decay as usual during the TOTAL ASE time period thats left. This has a temp setpoint as
" text = "it should only be needed when the coolant temperatures are fairly low. " text = "
" text = "
" text = "Setting MAP to a fixed value helps to maintain a constant PW during the initial start where the
" text = "map drops quickly from around 100KPa to the tickover KPa. This is held during the FIXED time period." text = "The FIXED period is a period of time at the start of the TOTAL ASE time. FIXED must be less than TOTAL" help = DTHelp1, "Lambda Settings" 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" ;------------------------------------------------------------------------------- [TableEditor] ; table_id, map3d_id, "title", page table = veTable1Tbl, veTable1Map, "VE Table 1", 1 ; constant, variable xBins = rpmBins1, rpm #if SPEED_DENSITY yBins = mapBins1, map #else yBins = tpsBins1, tpsADC #endif zBins = veBins1 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2 xBins = rpmBins2, rpm #if SPEED_DENSITY yBins = mapBins2, map #else yBins = tpsBins2, tpsADC #endif zBins = veBins2 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3 xBins = rpmBins3, rpm #if SPEED_DENSITY yBins = mapBins3, map #else yBins = tpsBins3, tpsADC #endif zBins = advTable1 gridHeight = 3.0 upDownLabel = "RETARDED", "ADVANCED" table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5 xBins = rpmBins4, rpm #if SPEED_DENSITY yBins = mapBins4, map #else yBins = tpsBins4, tpsADC #endif zBins = advTable2 gridHeight = 3.0 upDownLabel = "RETARDED", "ADVANCED" table = veTable3Tbl, veTable3Map, "VE Table 3. See Fuel Table Selection", 6 xBins = rpmBins5, rpm #if SPEED_DENSITY yBins = mapBins5, map #else yBins = tpsBins5, tpsADC #endif 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 #if SPEED_DENSITY yBins = mapBins6, map #else yBins = tpsBins6, tpsADC #endif zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm #if SPEED_DENSITY yBins = mapBins7, map #else yBins = tpsBins7, tpsADC #endif zBins = afrBins2 #elif WB_1_0_LINEAR table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm #if SPEED_DENSITY yBins = mapBins6, map #else yBins = tpsBins6, tpsADC #endif zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm #if SPEED_DENSITY yBins = mapBins7, map #else yBins = tpsBins7, tpsADC #endif zBins = afrBins2 #elif DIYWB_NON_LINEAR table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm #if SPEED_DENSITY yBins = mapBins6, map #else yBins = tpsBins6, tpsADC #endif zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7 xBins = rpmBins7, rpm #if SPEED_DENSITY yBins = mapBins7, map #else yBins = tpsBins7, tpsADC #endif zBins = afrBins2 #else table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (AFR)", 7 xBins = rpmBins6, rpm #if SPEED_DENSITY yBins = mapBins6, map #else yBins = tpsBins6, tpsADC #endif zBins = afrBins1 table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (AFR)", 7 xBins = rpmBins7, rpm #if SPEED_DENSITY yBins = mapBins7, map #else yBins = tpsBins7, tpsADC #endif 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 table = splitTbl, splitMap, "Rotary split Table", 8 xBins = splitrpmBins, rpm #if SPEED_DENSITY yBins = splitkpaBins, map #else yBins = splittpsBins, tpsADC #endif zBins = splitTable gridHeight = 3.0 upDownLabel = "RETARDED", "ADVANCED" ;------------------------------------------------------------------------------- [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, "O2 Driven Correction (GEGO)", "%", 80, 120, 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 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, stackGauge = stackL, "CPU stack", "bytes", 240, 200, 0, 0, 254, 254, 0, 0 ; T2XGauge = T2X, "T2 X byte", "byte", 0, 255, 0, 0, 254, 254, 0, 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 ;------------------------------------------------------------------------------- ;Turbo Gauges auxmatGauge = auxmat, "Turbo Inlet", "%TEMP", -40, 110, -15, 0, 95, 100, 3, 0 auxmatGauge1 = auxmat1, "Turbo Outlet", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0 turbo = AE, "Adiabatic Efficiency ", "%", 0, 100, -1, -1, 100, 100, 1, 1 intercooler = ICE, "Intercooler Efficiency ", "%", 0, 100, -1, -1, 100, 100, 1, 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 ; normal rpm x100 gauge ; gauge2 = cltGauge ; gauge3 = pulseWidth1Gauge ; gauge4 = dutyCycle1Gauge ; gauge6 = accelEnrichGauge ; gauge7 = egoCorrGauge ; gauge8 = advanceGauge ; Various Gauges for use in the msns-extra code, remove the ";" and renumber gauge1 = tachometer ; normal rpm x100 gauge gauge2 = egoCorrGauge gauge3 = afrGauge gauge4 = TargetAFRGauge gauge5 = turbo ; gauge5 = mapGauge gauge6 = matGauge gauge7 = VacBooGauge gauge8 = advanceGauge ; gauge1 = RpmHiResGauge ; hi-res gauge ; gauge4 = TargetAFRGauge ; gauge4 = batADCGauge ; gauge3 = mphGauge ; ONLY FOR USE WHEN VSS CONNECTED TO MS ; gauge3 = USgphGauge ; gauge3 = gphGauge ; gauge3 = USmpgGauge ; gauge3 = mpgGauge ; gauge4 = egtGauge ; gauge4 = fuelGauge ; gauge4 = throttleGauge ; gauge6 = matGauge ; gauge7 = KnockGauge ; gauge7 = pulseWidth2Gauge ; gauge7 = afrGauge ; gauge8 = dutyCycle2Gauge ; gauge8 = stackGauge ; CPU stack pointer, only useful for coders ; gauge8 = T2XGauge ; only useful for code testing ; 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 indicator = { floodclear }, "", "FLOOD CLEAR", white, black, red, black ; indicator = { portc & 0b00010000 }, "Trig2", "Trig2", white, black, green, 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, 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. ; 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 = "&AFR", "&Turbo", "PW&1", "PW&2" gauge1 = tachometer, intercooler, tachometer, tachometer gauge2 = VacBooGauge, turbo, mapGauge, mapGauge gauge3 = afrGauge, auxmatGauge, egoGauge, egoGauge gauge4 = egoCorrGauge, auxmatGauge1, pulseWidth1Gauge, pulseWidth2Gauge gauge5 = TargetAFRGauge, cltGauge, veBucketGauge, veBucketGauge gauge6 = advanceGauge, matGauge, 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 = 38 ; was 38 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 iTime = 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 ; Get raw values from ADC. x6ADC = scalar, U08, 26, "ADC", 1.000, 0.000 ;x6 turbo inlet probe (or ambient temp) x7ADC = scalar, U08, 27, "ADC", 1.000, 0.000 ;x7 turbo outlet probe 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 stackL = scalar, U08, 35, "", 1.000, 0 ; low byte of stack tpsLast = scalar, U08, 36, "", 1.000, 0 ; TPS last for Accel Wizard iTimeX = scalar, U08, 37, "s", 1.000, 0.000 ;not in code T2X = scalar, U08, 38, "s", 1.000, 0.000 accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct4 : 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 = { x6ADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C #else egttemp = { x6ADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F #endif ;convert to deg 'f tinletF = { table(x6ADC, "matfactor.inc")-40} ; Turbo Inlet (atmosphere) deg 'f toutletF = { table(x7ADC, "matfactor.inc")-40} ; Turbo outlet deg 'f ;Convert into user units for guages auxmat = { tempCvt(table(x6ADC, "thermfactor.inc")-40) } ; Manifold temperature in user units. auxmat1 = { tempCvt(table(x7ADC, "thermfactor.inc")-40) } ; Manifold temperature in user units. ;Calculate Turbo Adiabatic efficiency P1 = { barometer * 0.1450377 } ; inlet pressure absolute (barometer in psi) should be ~14.7 T1 = { tinletF + 460 } ;inlet temp in Radians P2 = { P1 + boost } ;outlet pressure absolute T2 = { (T1 * ( pow (P2 / P1, 0.283)) -460)} ; temperature rise assuming 100% compressor Efficiency AE = { ((T2 - tinletF)/(toutletF - tinletF)) * 100 } ; Adiabatic Efficiency % is difference between actual and calculated temp rises. ;Calculate Intercooler efficiency ;Static ambient temp used here, because my turbo inlet temp isn't the same as ambient due to heat wash over filter. ambient = { 10 } ; in user units. ICE = { ((auxmat1 - mat) / (auxmat1 - ambient) * 100) } ;Intercooler/Chargecooler efficiency in % ; Added for second O2 sensor #if NARROW_BAND_EGO afr2 = { table(x6ADC, "NBafr100.inc") / 100.0 } lambda2 = { afr2 / 14.7 } #elif ZEITRONIX_NON_LINEAR lambda2 = { table(egoADC, "WBafr100Zeit.inc") / 100.0 } afr2 = { lambda * 14.7 } #elif INNOVATE_LC1_DEFAULT lambda2 = { x6ADC/255.0 + 0.5 } afr2 = { lambda * 14.7 } #else lambda2 = { table(x6ADC, "WBlambda100MOT.inc") / 100.0 } afr2 = { lambda2 * 14.7 } #endif ; Added for AFR Tables #include "lambdaSensors.ini" ; 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 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 = {x6ADC < 1 ? 0.0 : x6ADC * (5/255) - 0.5} fuelpress = {x6ADC < 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 = {mapDOT} test2 = {x7ADC} ; Hi Res RPM only for 4 or greater cylinder engines. ; TimeDivisor = {(nCylinders1) > 6 ? 0.86 : (nCylinders1) > 4 ? 0.82 : (nCylinders1) > 2 ? 0.75 : 1} ; RpmHiResCalc = { (60000000 / ((cTime * (nCylinders1) + 1) / (2.0-twoStroke1))) * TimeDivisor} ; RpmHiRes = { rpm100 < 5 ? rpm : (nCylinders1) < 3 ? rpm : RpmHiResCalc} iTimefull = { (iTimeX*65536)+ iTime } RpmHiRes = { iTimefull > 0 ? (60000000 *(2.0-twoStroke1)) / (iTimefull * nCylinders1) : 0 } ; 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 = { x6ADC < 1 ? 0 : (x6ADC * Speed) /127.5 } ; MPH mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph USgph = { CCpHr / 3785 } ; US Gallons / Hr USmpg = { x6ADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon gph = { CCpHr / 4546 } ; Real Gallons / Hr mpg = { x6ADC < 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. This is unfinished! 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 floodclear = { tpsADC > 200 ? 1 : 0 } ; For flood clear indicator on main screen tpsDOTTY = { mapProportion4 ? 0 : (tpsADC - tpsLast) * 0.19} ; * 0.019 / 0.1 to convert it to V from ADC and to 1Sec from 0.1Sec mapDOTTY = { mapProportion4 ? (mapADC - tpsLast) / 0.1 : 0 } ; Divide by 0.1 to convert from 0.1Sec to 1Sec tpsDOT = { tpsDOTTY < 0 ? 0 : tpsDOTTY} ; Only display positive or it gets confusing to read mapDOT = { mapDOTTY < 0 ? 0 : mapDOTTY} ; Only display positive or it gets confusing to read Timeroll = { portc & 0b00000100 } waterIlog = { porta & 0b00010000 } ;------------------------------------------------------------------------------- [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" #unset TestCode #if TestCode entry = waterIlog, "Water Inj", int, "%d" entry = Timeroll, "TimeRoll", int, "%d" #else entry = veCurr2, "Gve2", int, "%d" entry = pulseWidth2, "PW2", float, "%.1f" #endif 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 = auxmat, "Aux Temp 1", float, "%.1f" entry = auxmat1, "Aux Temp 2", float, "%.1f" ; entry = advSpark, "Spark Angle", int, "%d" ; entry = fuelpress, "Fuel Press", int, "%d" entry = AE, "ae", int, "%d" entry = ICE, "ICE", int, "%d" ; TEST ONLY - DONT USE ; entry = iTime, "iTime", int, "%d" ; entry = iTimeX, "iTimeX", int, "%d" ; entry = iTimefull, "iTimeFull", int, "%d"