;------------------------------------------------------------------------------- [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. queryCommand = "S" ; data format signature = "MSnS-extra format 027a *********" ; gets changed when data format/this file changes versionInfo = "T" ; full text of this revision ; last edited for version 027a2 and MT2.25b627 or later ; put ALPHA-N back in, (add #set SPEED_DENSITY to your settings file to disable) ;------------------------------------------------------------------------------- [Constants] ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale endianness = big ;this is the normal eight page setup 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" ;this is the optional 10 page version with pages 9 & 10 returning logged data ;At present you can only access this data by using the Table Editor and viewing the data directly ;Page 9 contains the time between each tooth in the missing tooth wheel decoder _ONLY_ ;Page 10 contains the time between "triggers" and will work for all ignition types ;99 big endian 16bit numbers are returned. The 199th byte is the address of the _next_ byte to ;be written. The code logs continuously once the page is selected so you need to start from the ;next byte and wrap around to the beginning to get the data in the right order ;The 200th byte indicates the time units. 0 = microseconds, 1= 0.1ms units ;After you've selected the page, pause a little then hit Fetch, you'll get 99 new samples. ;Then somehow get them into a spreadsheet and plot a graph. ; ; nPages = 10 ; burnCommand = "B" ; pageSize = 200, 200, 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","P\360","P\361" ; pageReadCommand = "V", "V", "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 = off ; 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 #elif AIR_FLOW_METER afmBins1 = array, U08, 170, [ 12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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 #elif AIR_FLOW_METER afmBins2 = array, U08, 170, [12], "Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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 #elif AIR_FLOW_METER afmBins3 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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, S08, 170, "Deg", 0.352, 0, -45, 45, 0 CrankAng = scalar, U08, 171, "Deg", 0.352, -28.4, -10, 80, 0 IgHold = scalar, U08, 172, "", 1, 0, 0, 100, 0 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" oddfire = bits, U08, 173[4:4], "No", "Yes" IdleAdv = scalar, U08, 174, "Deg", 0.352,-28.4, -10, 80, 0 IdleAdvTPS = scalar, U08, 175, "ADC", 1, 0, 0, 255, 0 IdleAdvRPM = scalar, U08, 176, "RPM", 100, 0, 0, 1200, 0 spare3_177 = scalar, U08, 177, "", 1, 0, 0, 255, 0 spare3_178 = scalar, U08, 178, "", 1, 0, 0, 255, 0 spare3_179 = scalar, U08, 179, "", 1, 0, 0, 255, 0 spare3_180 = scalar, U08, 180, "", 1, 0, 0, 255, 0 spare3_181 = scalar, U08, 181, "", 1, 0, 0, 255, 0 spare3_182 = scalar, U08, 182, "", 1, 0, 0, 255, 0 spare3_183 = scalar, U08, 183, "", 1, 0, 0, 255, 0 spare3_184 = scalar, U08, 184, "", 1, 0, 0, 255, 0 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 A" led17Use = bits, U08, 1, [1:1], "Squirt*^", "Spark output A" 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" ;spark outputs E & F spkeop = bits, U08, 116, [3:3], "Shiftlight", "Spark output E" spkfop = bits, U08, 116, [4:4], "Knock input", "Spark output F" 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], "Off", "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" rotaryFDign = bits, U08, 11, [4:4], "FC Trailing", "FD Trailing" 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*^", "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, 6, 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, 6000, 0 VLaunch = bits, U08, 46[1:1], "Off", "On" LC_flatsel = scalar, U08, 124, "RPM", 100, 0, 0, 25500, 0 LC_flatlim = scalar, U08, 128, "RPM", 100, 0, 3000, 6000, 0 LC_f_slim = scalar, U08, 140, "RPM", 100, 0, 3000, 6000, 0 LC_f_limangle = scalar, U08, 141, "Deg", 0.352, -28.4, -10, 45, 0 ; 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 Only", "Fuel & Spark" HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0 HCutLCType = bits, U08, 76[0:1], "INVALID", "Spark Cut Only", "Fuel Only", "Fuel & Spark" 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 Only", "Fuel & Spark" 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 ; n2ostage2 = bits, U08, ??where??, "Off", "Stage2 on" ;nitrous/launch N2Odel_launch = scalar, U08, 172, "s", 0.01, 0, 0, 2.55, 2 N2Odel_flat = scalar, U08, 173, "s", 0.01, 0, 0, 2.55, 2 N2Oholdon = scalar, U08, 174, "s", 0.01, 0, 0, 2.55, 2 ;wheel decoder numteeth = scalar, U08, 90, "", 1, 0, 0, 255 trig1 = scalar, U08, 25, "", 1, 0, 0, 255 trig2 = scalar, U08, 26, "", 1, 0, 0, 255 trig3 = scalar, U08, 27, "", 1, 0, 0, 255 trig4 = scalar, U08, 28, "", 1, 0, 0, 255 trig1ret = scalar, U08, 29, "", 1, 0, 0, 255 trig2ret = scalar, U08, 30, "", 1, 0, 0, 255 trig3ret = scalar, U08, 31, "", 1, 0, 0, 255 trig4ret = scalar, U08, 32, "", 1, 0, 0, 255 trig5 = scalar, U08, 160, "", 1, 0, 0, 255 trig6 = scalar, U08, 161, "", 1, 0, 0, 255 trig5ret = scalar, U08, 162, "", 1, 0, 0, 255 trig6ret = scalar, U08, 163, "", 1, 0, 0, 255 miss2nd = bits, U08, 66[0:0], "no missing", "missing teeth" dualdizzy = bits, U08, 92, [4:4], "Normal", "Dual dizzy" ; 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" AFMUse = bits, U08, 199, [5:5], "No AFM *^", "AFM on X7" AirCorAFM = bits, U08, 199, [6:6], "Use IAT", "Built into AFM" ConsBarCor = bits, U08, 199, [7:7], "Not Fitted*^", "Extra MAP fitted to X7" ; 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 ;Advanced options for testing hrd_disable = bits, U08, 92, [2:2], "Enabled*", "Disabled" wheel_old = bits, U08, 92, [3:3], "025 style", "024s9 style" ;Dwell control ;running dwell variable railed to 8 - who needs more than 8ms? ;mindischarge railed to 1.5ms. ought to be max 1ms I guess? Normal value say 0.1ms 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, 8, 1 mindischg = scalar, U08, 143, "ms", 0.1, 0, 0, 1.5, 1 idle_dc_lo = scalar, U08, 122, "Freq", 1, 0, 0, 255, 0 idle_dc_hi = scalar, U08, 149, "Freq", 1, 0, 0, 255, 0 idleperiod = scalar, U08, 144, "Ignition Events", 1, 0, 0, 255, 0 idlekickrpm = scalar, U08, 145, "RPM", 100, 0, 100, 6000, 0 idlekickdc = scalar, U08, 146, "Freq", 1, 0, 0, 255, 0 idledashdc = scalar, U08, 147, "Freq", 1, 0, 0, 255, 0 idlemindc = scalar, U08, 148, "Freq", 1, 0, 0, 255, 0 idlekpaval1 = scalar, U08, 150, "KPA", 1, 0, 0, 100, 0 idlekpaval2 = scalar, U08, 151, "KPA", 1, 0, 0, 100, 0 ikpamin1 = scalar, U08, 152, "Freq", 1, 0, 0, 255, 0 ikpamin2 = scalar, U08, 153, "Freq", 1, 0, 0, 255, 0 idlefreq = scalar, U08, 154, "10000/x = Frequency", 1, 0, 0, 255, 0 delay2rpm = scalar, U08, 155, "RPM", 100, 0, 100, 6000, 0 idlePeriod2 = scalar, U08, 156, "Ignition Events", 1, 0, 0, 255, 0 irestorerpm = scalar, U08, 157, "RPM", 100, 0, 100, 6000, 0 idleclosed = scalar, U08, 158, "Freq", 1, 0, 0, 255, 0 tachconf = bits, U08, 159[0:2], "OFF","X2 (JS0)","X3 (JS1)","X4 (JS2)","X5 (JS3)","Output3","Pin10","INVALID" tachconfdiv = bits, U08, 159[7:7], "Normal", "Half speed" 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" RPMBAsedAE = bits, U08, 199[4:4], "Normal AE*^", "RPM Based" RPMAE1 = scalar, U08, 164, "RPM", 100, 0, 100, 25500, 0 ; RPM based AE stuff RPMAE2 = scalar, U08, 165, "RPM", 100, 0, 100, 25500, 0 RPMAE3 = scalar, U08, 166, "RPM", 100, 0, 100, 25500, 0 RPMAE4 = scalar, U08, 167, "RPM", 100, 0, 100, 25500, 0 RPMmS1 = scalar, U08, 168, "mS", 0.1, 0, 0, 25.5, 1 RPMmS2 = scalar, U08, 169, "mS", 0.1, 0, 0, 25.5, 1 RPMmS3 = scalar, U08, 170, "mS", 0.1, 0, 0, 25.5, 1 RPMmS4 = scalar, U08, 171, "mS", 0.1, 0, 0, 25.5, 1 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 #elif AIR_FLOW_METER afmBins4 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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" ExFuelCrank = bits, U08, 193, [6:6], "Off", "On" 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 ExtraFMult = scalar, U08, 197, "%", 1.0, 0.0, 0.0, 255, 0 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 #elif AIR_FLOW_METER afmBins5 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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 IATCor = bits, U08, 179,[3:3], "Normal Correction*^", "Corrected" IATCorTy = bits, U08, 179,[4:4], "Coolant Corrected", "IAT Corrected" #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 ; Coolant related correction table for air density IATCor1 = scalar, U08, 183, "%", 1.0, 0.0, 0.0, 255, 0 IATCor2 = scalar, U08, 184, "%", 1.0, 0.0, 0.0, 255, 0 IATCor3 = scalar, U08, 185, "%", 1.0, 0.0, 0.0, 255, 0 IATCor4 = scalar, U08, 186, "%", 1.0, 0.0, 0.0, 255, 0 IATCor5 = scalar, U08, 187, "%", 1.0, 0.0, 0.0, 255, 0 IATCor6 = scalar, U08, 188, "%", 1.0, 0.0, 0.0, 255, 0 IATCor7 = scalar, U08, 189, "%", 1.0, 0.0, 0.0, 255, 0 RPMRedHi = scalar, U08, 190, "RPM", 100, 0.0, 0.0, 25500, 0 RPMRedLo = scalar, U08, 191, "RPM", 100, 0.0, 0.0, 25500, 0 #if CELSIUS IATCTemp1 = scalar, U08, 192, "C", 0.555, -72, -40, 102, 1 IATCTemp2 = scalar, U08, 193, "C", 0.555, -72, -40, 102, 1 IATCTemp3 = scalar, U08, 194, "C", 0.555, -72, -40, 102, 1 IATCTemp4 = scalar, U08, 195, "C", 0.555, -72, -40, 102, 1 IATCTemp5 = scalar, U08, 196, "C", 0.555, -72, -40, 102, 1 IATCTemp6 = scalar, U08, 197, "C", 0.555, -72, -40, 102, 1 IATCTemp7 = scalar, U08, 198, "C", 0.555, -72, -40, 102, 1 #else IATCTemp1 = scalar, U08, 192, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp2 = scalar, U08, 193, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp3 = scalar, U08, 194, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp4 = scalar, U08, 195, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp5 = scalar, U08, 196, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp6 = scalar, U08, 197, "F", 1.0, -40.0, -40.0, 215, 1 IATCTemp7 = scalar, U08, 198, "F", 1.0, -40.0, -40.0, 215, 1 #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 DYNOJET_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0314, 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 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 #elif AIR_FLOW_METER afmBins6 = array, U08, 72, [8], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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 WB_UNKNOWN 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 DYNOJET_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0314, 0, 0.0, 5.0, 2 #elif TECHEDGE_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1 #elif INNOVATE_1_2_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1 #elif INNOVATE_0_5_LINEAR afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255.0, 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 #elif AIR_FLOW_METER afmBins7 = array, U08, 152, [8], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N tpsBins7 = array, U08, 152, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif ;nitrous stage 2 ; Nitrous System Nos2Rpm = scalar, U08, 160, "RPM", 100, 0, 1000, 25000, 0 Nos2RpmMax= scalar, U08, 161, "RPM", 100, 0, 3000, 25000, 0 Nos2delay = scalar, U08, 162, "s", 0.01, 0, 0, 2.55,2 Nos2Angle = scalar, U08, 163, "Deg", 0.352, 0, 0, 30, 0 Nos2PWLo = scalar, U08, 164, "mSec", 0.1, 0, 0, 25.5, 1 Nos2PWHi = scalar, U08, 165, "mSec", 0.1, 0, 0, 25.5, 1 ;oddfire wheel decoder ;outaoffs = bits, U08, 166, [0:2], "0", "+22.5", "+45", "+67.5", "+90", "+112.5", "+135", "+157.5" outaoffs = bits, U08, 166, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outaoffv = scalar, U08, 167, "deg", 0.352, 0, 0, 45, 1 outboffs = bits, U08, 168, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outboffv = scalar, U08, 169, "deg", 0.352, 0, 0, 45, 1 outcoffs = bits, U08, 170, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outcoffv = scalar, U08, 171, "deg", 0.352, 0, 0, 45, 1 outdoffs = bits, U08, 172, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outdoffv = scalar, U08, 173, "deg", 0.352, 0, 0, 45, 1 outeoffs = bits, U08, 174, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outeoffv = scalar, U08, 175, "deg", 0.352, 0, 0, 45, 1 outfoffs = bits, U08, 176, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID" outfoffv = scalar, U08, 177, "deg", 0.352, 0, 0, 45, 1 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 #elif AIR_FLOW_METER splitafmBins = array, U08, 186, [6], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N 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 = CrankExtra, "(NEW)More Cranking Stuff", 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 = "&Fuel Basics" subMenu = fuelTable, "&Fuel table selection" subMenu = LambdaSet, "&Lambda AFR Settings" subMenu = OpenLoop, "&Open Loop Mode" subMenu = OvrRun, "Over &Run Settings" subMenu = clt_IATCorr, "(NEW) Coolant related Air Density" subMenu = AccelDecc, "&Accel Deccl Mode" subMenu = MoreAccel, "(NEW) RPM &Based Accel" subMenu = std_accel, "&Acceleration Wizard", 4 menu = "&General" subMenu = OvrBoo, "Over &Boost Protection" subMenu = HardLim, "&Hard Cut/Limiter Type" subMenu = RevLimiterS, "Re&v Limiter", 4 subMenu = LaunchSettings, "Launch &Control" subMenu = traction, "Anti-Rev System (&Traction Control)" subMenu = traction2, "Anti-Rev System cont...", 0, {TractionOn} subMenu = idleControl, "&Idle Control", 0, { !fidleUse } subMenu = idleControl2, "Idle Control (Closed Loop Settings)", 0, { pwmIdle & (pwmidlewhen >1) } 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 } subMenu = tachoutput, "Tacho output pin", 0 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 = rotarySplitType, "Rotary trailing output type", 0, { rotary2} 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 = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire } subMenu = MapSettings, "MA&P Sensor Settings" subMenu = BarroCor, "NEW &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 = NosSystem2, "&Nitrous Stage 2", 0, { nitrousUse && n2ostage2 } subMenu = NosSystem2, "&Nitrous Stage 2", 0, { 0 } subMenu = Staged, "&Staged Injection" ; the following menu gives access to some spare bytes of flash ;uncomment to use it ; subMenu = demo, "Example Demo" menu = "&Tuning" subMenu = std_realtime, "&Realtime Display" 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 } subMenu = boostMap1, "Boost 1", 8, { boostUse } subMenu = boostMap3, "Boost 2", 8, { boostUse && BooTbl2Use} subMenu = boostMap2, "Boost duty targets", 8, { boostUse } 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 = Ihelp1, "Idle Control" subMenu = Ihelp2, "Idle Control (Closed Loop Settings)" 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 = "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(D14) function", led17Use field = "LED18(D15) function", led18Use field = "LED19(D16) function", led19Use field = "Multiplex ignition?", toy_dli field = "X2 (JS0) function", x2use field = "X4 (JS2) function", boostUse field = "output3/Spark D", out3sparkd field = "pin10 shift / Spark E", spkeop field = "knock in / Spark F", spkfop dialog = wheeldecoder, "Power cycle after changes", 4 topicHelp = Fhelp1 field = "F1 for HELP" field = "" field = "Wheel decoder base teeth", numteeth field = "2nd trigger enable", wd_2trig field = "2nd trigger and missing teeth", miss2nd, { wd_2trig } field = "Missing teeth", onetwo, { !wd_2trig || ( wd_2trig && miss2nd) } 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 = "Trig pos E", trig5 field = "Trig return pos F", trig5ret field = "Trig pos F", trig6 field = "Trig return pos F", trig5ret field = "Dual dizzy EXPERIMENTAL", dualdizzy dialog = oddwheel, "Oddfire wheel offsets", 7 field = "HIGHLY EXPERIMENTAL" field = "" field = "Output A offset steps", outaoffs, { trig1 } field = "plus value", outaoffv, { trig1 } field = "Output B offset steps", outboffs, { trig2 } field = "plus value", outboffv, { trig2 } field = "Output C offset steps", outcoffs, { trig3 } field = "plus value", outcoffv, { trig3 } field = "Output D offset steps", outdoffs, { trig4 } field = "plus value", outdoffv, { trig4 } field = "Output E offset steps", outeoffs, { trig5 } field = "plus value", outeoffv, { trig5 } field = "Output F offset steps", outfoffs, { trig6 } field = "plus value", outfoffv, { trig6 } 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 = "Unless your using a MAF," field = "ENSURE MAF SET TO NO !!" field = "Mass Air Flow Meter MAF: (X7)", AFMUse field = "Air Density Correction:", AirCorAFM , {AFMUse} field = "" field = "EDIS multispark", edismulti, { edis } field = "EDIS multispark rpm limit", edismultirpm, { edis && edismulti } field = "" field = "Enable hi-res dwell", hrd_disable field = "Wheel decoder routine", wheel_old 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 = "28% for GM 3-BAR and 6300A series sensor" field = "78% for 6400A series sensor" field = "Baro Correction Factor", KPA300BARO, {mapSensor1 && KPA300Sens} field = "KPa Correction factor needs to be:" field = "28% for GM 3-BAR and 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 / JS2) 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 / JS3) 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, { !spkfop } field = "Shift light Lower Threshold", ShiftLower, { shiftUse } field = "Shift Light Upper Threshold", ShiftUpper, { shiftUse && (!wd_2trig) } field = "Fan control (X2 / JS0 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, { !oddfire } 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 = "EXPERIMENTAL Oddfire support", oddfire field = "" field = "Fixed Angle (-10 = use map)", FixAng field = "Trim Angle", Trim field = "Idle advance (-10 = use map)", IdleAdv field = "Idle advance TPS threshold", IdleAdvTPS field = "Idle advance RPM threshold", IdleAdvRPM dialog = rotarySplitType, "Rotary Trailing Output Type",4 field = "trailing output type", rotaryFDign, { rotary2 } 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 = ">20 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 = tachoutput,"Tacho output pin",4 ; topicHelp = Fhelp1 field = "MAKE SURE THIS PIN IS NOT ALREADY IN USE" field = "" field = "Tacho output pin", tachconf field = "Normal or half speed", tachconfdiv dialog = idleControl, "PWM 2-Wire Idle Control", 4 topicHelp = Ihelp1 field = "Algorithm", pwmIdle field = "When to use PWM idle", pwmidlewhen, { pwmIdle } field = "Warmup Settings" field = "Idle frequency at lower temp", idle_dc_lo, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) } field = "Idle frequency at upper temp", idle_dc_hi, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) } field = "Closed Loop Primary Settings" field = "*Fast Idle (lower) Temp", fastIdleTemp, { pwmIdle } field = "*Slow Idle (upper) Temp", slowIdleTemp, { pwmIdle } field = "Fast Idle", fastIdleRPM, { pwmIdle & (pwmidlewhen >1) } field = "Slow Idle", slowIdleRPM, { pwmIdle & (pwmidlewhen >1) } field = "* Denotes item also used for warmup" field = "Idle Valve Frequency*", idlefreq, { pwmIdle } field = "Throttle Threshold", idleThresh, { pwmIdle & (pwmidlewhen >1) } field = "IdleDC above Threshold", idleclosed, { pwmIdle & (pwmidlewhen >1) } field = "Idle Restore", irestorerpm, { pwmIdle & (pwmidlewhen >1) } field = "Frequency at Idle Restore", idledashdc, { pwmIdle & (pwmidlewhen >1) } field = "Idle kick up", idlekickrpm, { pwmIdle & (pwmidlewhen >1) } field = "Idle Kick up frequency", idlekickdc, { pwmIdle & (pwmidlewhen >1) } field = "Please see 'Idle Control (Closed Loop Settings)' " dialog = idleControl2, "Idle Control Continued", 4 topicHelp = Ihelp2 field = "Duty Cycle Limitations" field = " -- KPA min 1 > KPA min 2 > Minimum for proper function" field = "KPA Corrected Minimum 1", ikpamin1, { pwmIdle & (pwmidlewhen >1) } field = "KPA Corrected Minimum 2", ikpamin2, { pwmIdle & (pwmidlewhen >1) } field = "Minimum frequency", idlemindc, { pwmIdle & (pwmidlewhen >1) } field = "No Correction when KPA = 100, " field = " -- KPA 1 > KPA 2 for proper function" field = "KPA Correction Threshold 1", idlekpaval1, { pwmIdle & (pwmidlewhen >1) } field = "KPA Correction Threshold 2", idlekpaval2, { pwmIdle & (pwmidlewhen >1) } field = "Idle Timing" field = "" field = "Primary Idle Period", idleperiod, { pwmIdle & (pwmidlewhen >1) } field = "Secondary Idle Period", idlePeriod2, { pwmIdle & (pwmidlewhen >1) } field = "Secondary Period Active Above", delay2rpm, { pwmIdle & (pwmidlewhen >1) } ; field = "Idle is most stable when" ; field = "Sitting on a DC limit" ; field = "KPA limit 1 must be greater than" ; field = "KPA limit 2. When limit set to 100" ; field = "No correction occurs" ; field = "Manifold pressure is an indication" ; field = "Of engine load, these settings allow" ; field = "load compensation by raising the" ; field = "duty cycle above 'kpa' set points" 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>0)} field = "Retard to : ", LachDeg, {launchUse && (ignmode>0)} field = "Enable Launch when TPS above ", LachTps, {launchUse} field = "Launch Control Hard Rev Limit", LaunchLim, {launchUse} field = "Variable Launch", VLaunch, {launchUse} field = "Flat shift arming rpm", LC_flatsel, {launchUse} field = "Flat shift mode retard above", LC_f_slim, {launchUse && (ignmode>0)} field = "Retard to : ", LC_f_limangle, {launchUse && (ignmode>0)} field = "Flat shift hard rev limit", LC_flatlim, {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 N2O on when above", NosRpm, {nitrousUse} field = "And Coolant Temp above", NosClt, {nitrousUse} field = "And TPS >", NosTps, {nitrousUse} ; field = "" field = "Additional Fuel PW @ N2O min rpm", NosPWLo, {nitrousUse} field = "NOS Max RPM", NosRpmMax, {nitrousUse} field = "Additional Fuel PW @ N2O Max RPM", NosPWHi, {nitrousUse} ; field = "" field = "If ST2 off Retard Ignition by" NosAngle, {nitrousUse} ; field = "" field = "If Dual Table enrich ", DtNos, {nitrousUse} field = "Nitrous delay after launch", N2Odel_launch, {nitrousUse && launchUse} field = "Nitrous delay after flat shift", N2Odel_flat, {nitrousUse && launchUse} ;not yet implemented field = "Nitrous fuel hold on", N2Oholdon, {nitrousUse} field = "" field = "Turbo Anti-Lag System: (see help)", NosLagSystem, {nitrousUse} field = "Fire N2O when conditions above met" field = "and MAP above", NosLowKpa, {nitrousUse && NosLagSystem} field = "and MAP below", NosHiKpa, {nitrousUse && NosLagSystem} field = "" ; field = "Enable 2nd stage", n2ostage2, { nitrousUse } dialog = NosSystem2, "Nitrous System stage 2", 7 ; topicHelp = Chelp5 field = "Enable stage 2 above", Nos2Rpm field = "NOS Max RPM", Nos2RpmMax field = "delay after stage1", Nos2delay field = "Retard Ignition by", Nos2Angle field = "Additional Fuel PW @ N2O min rpm", Nos2PWLo field = "Additional Fuel PW @ N2O Max RPM", Nos2PWHi 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 = "" dialog = MoreAccel, "RPM Based Accel", 4 topicHelp = Fhelp6a field = "F1 for Help" field = "RPM BAsed Accel is triggered as usual via MAP or TPS" field = "but it is NOT based on a rate of change of MAP " field = "or TPS. The fuel added is based on the engine's RPM." field = "RPM Based Accel Enrichment:", RPMBAsedAE field = "" field = "Engine Speed high", RPMAE1, {RPMBAsedAE} field = "Engine Speed mid - high", RPMAE2, {RPMBAsedAE} field = "Engine Speed low - mid", RPMAE3, {RPMBAsedAE} field = "Engine Speed low", RPMAE4, {RPMBAsedAE} field = "" field = "Enrichment for high speed:", RPMmS4, {RPMBAsedAE} field = "Enrichment for mid - high speed:", RPMmS3, {RPMBAsedAE} field = "Enrichment for low - mid speed:", RPMmS2, {RPMBAsedAE} field = "Enrichment for low speed:", RPMmS1, {RPMBAsedAE} field = "" field = "MAP Threshold:" , mapThresh4, {RPMBAsedAE} field = "TPS Threshold:" , tpsThresh4, {RPMBAsedAE} field = "Accel Time:", taeTime4, {RPMBAsedAE} 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 field = "" field = "Constant Baro corr in Alpha_n:", AlphBaroCor, {algorithm1} field = "" field = "This is ONLY for use with a second " field = "MAP sensor connected to X7" field = "Constant Baro Correction:", ConsBarCor 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 = CrankExtra, "More Cranking Stuff",5 topicHelp = Chelp9a field = "F1 for Help" field = "Cranking RPM", CrankRPM field = "TPS value for flood clear", tpsflood field = "" field = "Extra fuel for cranking:" field = "Use First Start Enrichment:", ExFuelCrank field = "Extra Cranking Fuel Enrichment: ", ExtraFMult, {ExFuelCrank} field = "If normal cranking PW = 10.0mS and " field = "Enrichment = 50% then PW = 15.0mS" dialog = CrankTble, "Cranking / Prime Table", 5 topicHelp = Chelp9 field = "F1 for HELP" 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 = "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 dialog = clt_IATCorr, "Coolant corrected Air Density", 6 topicHelp = airdenHelp field = "PLEASE SEE HELP FILE F1" field = "Air Density Correction:" , IATCor field = "Correction based on:", IATCorTy, {IATCor} field = "User defined temperature 1 ", IATCTemp1, {IATCor} field = "User defined temperature 2 ", IATCTemp2, {IATCor} field = "User defined temperature 3 ", IATCTemp3, {IATCor} field = "User defined temperature 4 ", IATCTemp4, {IATCor} field = "User defined temperature 5 ", IATCTemp5, {IATCor} field = "User defined temperature 6 ", IATCTemp6, {IATCor} field = "User defined temperature 7 ", IATCTemp7, {IATCor} field = "Correction for Temp 1 ", IATCor1, {IATCor} field = "Correction for Temp 2 ", IATCor2, {IATCor} field = "Correction for Temp 3 ", IATCor3, {IATCor} field = "Correction for Temp 4 ", IATCor4, {IATCor} field = "Correction for Temp 5 ", IATCor5, {IATCor} field = "Correction for Temp 6 ", IATCor6, {IATCor} field = "Correction for Temp 7 ", IATCor7, {IATCor} field = "Set both to 25500 for no reduction!" field = "Start to reduce correction at:", RPMRedLo, {IATCor} field = "End correction at:", RPMRedHi, {IATCor} dialog = demo, "Demo menu", 3 field = "spare 3 177", spare3_177 field = "spare 3 178", spare3_178 field = "spare 3 179", spare3_179 field = "spare 3 180", spare3_180 field = "spare 3 181", spare3_181 field = "spare 3 182", spare3_182 field = "spare 3 183", spare3_183 field = "spare 3 184", spare3_184 ;*************************** 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 = "Typically this is wired to a thumb switch or clutch/brake pedal switch" 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.
" text = "
" text = "The flat shift settings are for use with a clutch switch and allow" text = "for different limits when changing gear. To disable, set the arming" text = "RPM above you maximum rpm" text = "If you press the clutch above the flat shift arming limit then the code" text = "uses the flat shift limits, else it uses the launch limits" 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 = Fhelp6a, "RPM Based Accel" webHelp ="" text = "THIS OPTION IS USED FOR A VERY SPECIALISED INSTALL!! 99.9% of installs will not need this option.
" text = "This is triggered via a rate of change of TPS or MAP as the usual Accel Stuff, BUT the enrichment is based on how fast the engine is running.
" text = "The MAP and TPS based Accel erichment bins in the Accel Wizard will be ignored in this mode. The Trigger values will still be current." text = "This is often required with high strung small displacement MOTORS and race motors" help = Ihelp1, "Idle Control" webHelp = "http://megasquirt.sourceforge.net/extra/pwmidle.html" text = "Idle control can be used in B&G on/off, Warm up, or Closed-Loop Modes.
" text = "
" text = "--B&G on/off simply opens or closes a valve to provide additional air below a temperature threshold
" text = "
" text = "--Warm up mode linearly varies the duty cycle of a 2 wire solenoid actuated valve to provide" text = "additional air during cold startup, while gradually scaling down the duty cycle until the engine is warm.
" text = "
" text = "--Closed-loop mode attempts to keep the engine idling at a set rpm by using PWM with a 2 wire" text = "solenoid actuated valve, and actively varying the duty cycle to maintain rpm.
" text = "
" text = "
" text = "Warmup Settings:
" text = "--Lower temp idle frequency is the higher duty cycle required to start and run a cold engine.
" text = "--Upper temp idle frequency is the duty cycle the idle valve will be scaled down to as the engine warms up.
" text = "
" text = "--Idle valve frequency
" text = "
" text = "This is generally something most people will not need to mess with, however, different idle valves are designed to work" text = "best at specific operational frequencies.
" text = "
" text = "Please Note: DUTY CYCLE = Lower or Upper frequency / Idle Valve Frequency
" text = "
" text = "These two values are linearly interpolated from one to the other starting from the lower engine temp" text = "to the higher engine temp (fast idle temp, and slow idle temp.)" text = "
" text = "
" text = "Closed Loop Settings:
" text = "
" text = "This is fairly experimental code, but with careful manipulation of variables it should be possible to" text = "produce a stable idle.
" text = "
" text = "--Fast Idle RPM is the idle target for the engine at, or below the fast idle temperature.
" text = "--Slow Idle RPM is the idle target for the engine at, or above the slow idle temperature.
" text = "
" text = "The two RPM set points are linearly interpolated between the two temperatures to provide a smooth" text = "transition during warmup
" text = "
" text = "--Throttle Threshold is the point above which the idlevalve closes (as it is no longer needed).
" text = "--Idle Restore RPM is the rpm point at which the idle valve returns to operation after the throttle" text = "has been opened and closed again.
" text = "--Frequency at Idle Restore is the amount the valve will open when you return to idle after letting" text = "go of the throttle. (This will likely need to be a few points above the highest minimum frequency.
" text = "
" text = "--Idle kick up rpm is the point at which the idle control will make a last ditch effort to restore" text = "idle. If for some reason the engine is suddenly loaded and drops below this rpm the idle control" text = "will open the valve radically in order to keep the engine from stalling.
" text = "--Idle kick up frequency is the amount the valve is opened when the engine falls below the kick up" text = "rpm
" text = "
" text = "See next help section 'Idle Control (Closed Loop Settings)' for more information.
" help = Ihelp2, "Idle Control (Closed Loop Settings)" webHelp = "http://megasquirt.sourceforge.net/extra/pwmidle.html" text = "Closed Loop Settings
" text = "
" text = "
" text = "Duty Cycle Limitations
" text = "
" text = "Idle control seems most stable when the code is allowed to 'rest' on minimum idle frequency limits.
" text = "
" text = "Since idle air demands are greater when the engine is loaded at idle there had to be some sort of" text = "load compensation. Turns out manifold pressure is quite representative of engine load at idle just the" text = "same as it is while driving.
" text = "
" text = "--KPA Corrected Minimum 1 is the minimum frequency when manifold air pressure is above the KPA correction Threshold 1.
" text = "--KPA Corrected Minimum 2 is the minimum frequency when manifold air pressure is above the KPA correction threshold 2.
" text = "--Minimum frequency is the absolute minimum the valve should ever be open whenever the idle is active. This should be" text = "set to a point the engine has a stable idle. It may help to set the slow idle target speed 100 or so rpm under your 'ideal'" text = "idlespeed and use this minimum frequency value to hold your 'ideal' idle by preventing the code from lowering the duty cycle.
" text = "
" text = "Once you have set your minimum frequency with no load on the engine, you can continue fine tuning by identifying" text = "frequency requirements for various idle loading. (A/c activation, Switching into gear with an automatic, etc...
" text = "
" text = "--KPA correction 1 should be used for the most radical engine loading condition.
" text = "--KPA correction 2 should be used for small loading conditions such as electric fan activation. (just to increase the DC%" text = "by another point or so to keep a stable idle rpm.
" text = "
" text = "This ordering is important since the logical progression of the code will not allow a higher kpa limit to be sensed" text = "if a lower one has previously been breeched.
" text = "
" text = "If the KPA correction is not desired, the KPA correction thresholds can be set to 100kpa. This will keep them from" text = "from affecting idle frequency as it is unlikely you will be idleing at or near 100kpa.
" text = "
" text = "
" text = "Idle Timing
" text = "
" text = "While most valves operate at 100 hertz, some older style 2-wire valves will work better at frequencies as low as 39 hertz." text = "Some newer valves may emit a buzzing sound which can be eliminated by increasing the frequency to 200 hertz.
" text = "
" text = "There is a formula for modifying the idle valve frequency. The formula is '10000/desired frequency = x where x is" text = "is the variable you input in megatune. For example '100' would be 100 hertz, and '50' would be 200 hertz
" text = "
" text = "
" text = "--Primary idle period is the speed at which the code attempts to make modifications to the frequency of the idle valve." text = "This period is a counted measurement of spark ignition events. The higher the number the longer the code 'waits' to" text = "make idle frequency modifications. Higher numbers will tend to reduce idle 'surge' or 'hunt'.
" text = "
" text = "--Secondary idle period is an option to help more quickly lower the idle after a kickup recovery. It might be best" text = "to set this the same as the primary period. If the idle falls too quickly you could also increase the period to prevent" text = "rapid idle frequency changes (since ignition events come faster at higher rpm's)
" text = "
" text = "--Secondary period active above, refers to the rpm at which the code switches to the secondary period. Anything below" text = "this rpm and the idle code will operate at the primary idle period, anything above and it will operate at the secondary" text = "period
" text = "
" text = "
" text = "Questions can be directed to http://msefi.com" 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 (JS0) output = Water Inj Pump Out
" text = " Cooling Fan Out
" text = "" text = "X4 (JS2) output = Output1
" text = " Boost Control
" text = "" text = "Shift Light outputs are on PTC3 and 4 (JS7 and JS8 for V3 pcb's)
" help = Chelp2, "Advanced code options" 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. This means that the KPa value becomes part of the fuel calculations, the same as in Speed density. This is very important for turbo applications where Alpha_n is used.
" text = "
" text = "We have added the facility for a Mass Air Flow Meter to run the fuel calculations rather than" text = " a MAP sensor. Connect the MAF 0-5V output up to pin X7 (JS5) via a filter circuit as described on the Extra website. " text = "In MegaTune ensure the Mass_Air_Flow Mode is set in the Settings.ini file. this is some what experimental, expect " text = "the VE table to look very linear with lots of rows of numbers the same value in the horizontal axis." text = "
" text = "
" text = "
" text = "Air Density Correction is most likely built into the MAF you are using, so set to BUILT INTO MAF." 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.
" text = "
" text = "If using Alpha-n mode then you can use the MAP sensor thats on the MS board as a constant barometric correction sensor." text = "
" text = "A way to gain Constant Baro Correction when in normal speed density mode is by fitting an extra MAP sensor to input X7 (JS5 V3.0) The MAP sensor MUST be the same type as fitted to your MS" text = "
" 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 = "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 = Chelp9a, "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 = "If the First Start Enrichment option is set to ON you will have the option to increase the cranking PW for the first start of the day. Just turn on the ignition and then pump the throttle 3 times before cranking. If the TPS value goes above the FLOODCLEAR more than 3 times before you crank the engine then the cranking PW will be multiplied by the Extra Cranking Fuel Multiplier. So if the normal cranking PW is set to 10.0mS and the multiplier is 50% then the " text = "cranking PW will be 15.0mS. This setting returns to the normal PW after the first attempt to start the motor or if you apply the throttle past the FLOODCLEAR setting. This is to assist starting a motor that requires additional fuel to start only on the first start after sitting a long time. If the engine fails to start on the first attempt, the First Start Enrichment can be reactivated after the engine has set for two sec without cranking." 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" help = airdenHelp, "Coolant Corrected Air Density" text = "Unless you really know what your doing this MUST be set to NORMAL CORRECTION. This is ONLY suitable for fine tuning an already tuned engine!" text = "
" text = "Air Density Correction is a factor of Inlet Air Temp measured from the Manifold Air Temp Sensor. There have been a few instances where the air temp is more affected by the coolant temp at low manifold pressures or Throttle positions rather than the entering air temp as measured at the MAT. In this case it was found that the engine could run lean for the same air temp depending on the coolant temperature. To help TUNE this we have added Coolant Correction percentage.
" text = "With this function enabled the correction percentage is interpolated from the table, depending on the coolant temperature. So Air Density would now be :
" text = " Air Density = (MAT Related Air Density) * Coolant related correction %
" text = "E.G. Air Density = 120 * 110 % = 132" text = "
" text = "This correction can then be reduced by the engines RPM. The Reduction Start value is where the coolant correction is started to be removed, and the correction End position is where there will no longer be any coolant correction. The coolant correction is interpolated between these 2 points. At engine speeds lower then the start point the correction will be as the Coolant Correction Table. " text = "Between the Start and End values the Coolant Correction is reduced at a linear rate. At the End value the Coolant Correction rate is removed totally." text = "
" text = "The idea is that as rpm increases as does air flow, so the MAT sensor will be a more realistic measurement of density." text = "
" text = "So if start is 3000rpm and end is 6000, and correction is 150%, then at 3000rpm correction will be 150%, at 4500rpm correction will be 125% and at 6000rpm correction will be 100% (i.e. no correction)." text = "
" text = "We have allowed the temperatures to be user defined, suggested temps would be :
" text = "Temp 1 = -40 F
" text = "Temp 2 = -20 F
" text = "Temp 3 = 0 F
" text = "Temp 4 = 20 F
" text = "Temp 5 = 50 F
" text = "Temp 6 = 80 F
" text = "Temp 7 = 120 F
" ;------------------------------------------------------------------------------- [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 #elif AIR_FLOW_METER yBins = afmBins1, MAFVolts #elif ALPHA_N yBins = tpsBins1, tpsADC #endif zBins = veBins1 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" allowAutoTune = on table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2 xBins = rpmBins2, rpm #if SPEED_DENSITY yBins = mapBins2, map #elif AIR_FLOW_METER yBins = afmBins2, MAFVolts #elif ALPHA_N yBins = tpsBins2, tpsADC #endif zBins = veBins2 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" allowAutoTune = on table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3 xBins = rpmBins3, rpm #if SPEED_DENSITY yBins = mapBins3, map #elif AIR_FLOW_METER yBins = afmBins3, MAFVolts #elif ALPHA_N yBins = tpsBins3, tpsADC #endif zBins = advTable1 gridHeight = 3.0 upDownLabel = "ADVANCED", "RETARDED" table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5 xBins = rpmBins4, rpm #if SPEED_DENSITY yBins = mapBins4, map #elif AIR_FLOW_METER yBins = afmBins4, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins5, MAFVolts #elif ALPHA_N yBins = tpsBins5, tpsADC #endif zBins = veBins3 gridHeight = 1.0 upDownLabel = "(RICHER)", "(LEANER)" allowAutoTune = on allowAutoTune = on #if NARROW_BAND_EGO table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm #if SPEED_DENSITY yBins = mapBins6, map #elif AIR_FLOW_METER yBins = afmBins6, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins7, MAFVolts #elif ALPHA_N yBins = tpsBins7, tpsADC #endif zBins = afrBins2 #elif WB_UNKNOWN table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7 xBins = rpmBins6, rpm #if SPEED_DENSITY yBins = mapBins6, map #elif AIR_FLOW_METER yBins = afmBins6, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins7, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins6, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins7, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins6, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = afmBins7, MAFVolts #elif ALPHA_N 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 #elif AIR_FLOW_METER yBins = splitafmBins, MAFVolts #elif ALPHA_N 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 idleGauge = idleDC "IdleDC", "%", 0, 255, -1, -1, 256, 256, 0, 0 #if NARROW_BAND_EGO egoGauge = egoVoltage, "Rear Bank O2 Voltage", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2 #else egoGauge = egoVoltage, "Rear Bank O2 Voltage", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2 #endif #if NARROW_BAND_EGO ego2Gauge = ego2Voltage, "Front Bank O2 Voltage", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2 #else ego2Gauge = ego2Voltage, "Front Bank O2 Voltage", "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, "AE Driven Fuel Pct", "Pct", 100, 200, 0, 0, 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, 150, -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 YGForceGauge = YForce, "Y G-Force", "G", -3, 3, 0, 0, 2, 3, 3 XGForceGauge = XForce, "X G-Force", "G", -3, 3, 0, 0, 2, 3, 3 MAFGauge = MAFVolts, "Volts", "V", 0, 5, 0, 0, 5, 5, 2 ;------------------------------------------------------------------------------- [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 ;Gauge Setup 0 gauge1 = RpmHiResGauge ; gauge2 = cltGauge gauge3 = pulseWidth1Gauge gauge4 = dutyCycle1Gauge gauge5 = mapGauge ; gauge6 = matGauge gauge7 = afrGauge gauge8 = advanceGauge ;Gauge Setup 1 ; gauge1 = RpmHiResGauge ; gauge2 = cltGauge ; gauge3 = pulseWidth1Gauge ; gauge4 = dutyCycle1Gauge ; gauge5 = mapGauge ; gauge6 = accelEnrichGauge ; gauge7 = egoCorrGauge ; gauge8 = advanceGauge ;Gauge Setup 2 ; gauge1 = tachometer ; gauge2 = throttleGauge ; gauge3 = cltGauge ; gauge4 = matGauge ; gauge5 = mapGauge ; gauge6 = veGauge ; gauge7 = ego2Gauge ; gauge8 = advanceGauge ;Gauge Setup 3 ; gauge1 = RpmHiResGauge ; gauge2 = cltGauge ; gauge3 = pulseWidth1Gauge ; gauge4 = dutyCycle1Gauge ; gauge5 = mapGauge ; gauge6 = accelEnrichGauge ; gauge7 = egoCorrGauge ; gauge8 = advanceGauge ;Gauge Setup 4 ; gauge1 = tachometer gauge2 = throttleGauge ; gauge3 = idleGauge ; gauge4 = pulseWidth1Gauge ; gauge5 = mapGauge gauge6 = cltGauge ; gauge7 = matGauge ; gauge7 = accelEnrichGauge ; gauge8 = advanceGauge ;Gauge Setup 5 Alpha-N / MAF ; gauge1 = tachometer ; gauge2 = tpsADCGauge ; gauge2 = MAFGauge ; gauge3 = pulseWidth1Gauge ; gauge4 = accelEnrichGauge ; gauge5 = cltGauge ; gauge6 = veGauge ; gauge7 = voltMeter ; gauge8 = mapGauge ; gauge5 = tpsADCGauge ; 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 ; gauge8 = test2Gauge ; G FORCE GAUGES ; gauge7 = XGForceGauge ; gauge8 = YGForceGauge ;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. gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. ; The four radio buttons on the tuning screen select a "page" of six ; gauges. The gauge numbering is the same as the front page, across ; then down. ; 1 2 ; 3 4 ; 5 6 ; ; gaugeColumns allows you to hide or show gauges in column 2 (i.e., ; gauges 2, 4 and 6). gaugeColumns = 2 ; Only 1 or 2 are valid. ; Page 1 Page 2 Page 3 Page 4 pageButtons = "&EGO", "&WUE", "PW&1", "PW&2" ; gauge1 = tachometer, tachometer, tachometer, tachometer gauge1 = RpmHiResGauge, RpmHiResGauge, RpmHiResGauge, RpmHiResGauge gauge2 = mapGauge, mapGauge, mapGauge, mapGauge ; gauge3 = egoGauge, egoGauge, egoGauge, egoGauge gauge3 = afrGauge, afrGauge, afrGauge, afrGauge gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidth1Gauge, pulseWidth2Gauge gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycle1Gauge, dutyCycle2Gauge ;------------------------------------------------------------------------------- [OutputChannels] ; The number of bytes MegaTune should expect as a result ; of sending the "A" command to MegaSquirt is determined ; by the value of ochBlockSize, so be very careful when ; you change it. deadValue = { 0 } ; Convenient unchanging value. ochGetCommand = "R" ; was "a" and before that "A" ochBlockSize = 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, "mS", 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 fuelADC = scalar, U08, 26, "ADC", 1.000, 0.000 ; ADC from X7 (second O2 or fuel pressure) egtADC = scalar, U08, 27, "ADC", 1.000, 0.000 CltIatAngle = scalar, U08, 28, "deg", 1.000, 0.000 KnockAngle = scalar, U08, 29, "deg", 1.000, 0.000 egoCorrection2 = scalar, U08, 30, "%", 1.000, 0.000 ; Second O2 sensor correction porta = scalar, U08, 31, "", 1.000, 0 ; porta raw value portb = scalar, U08, 32, "", 1.000, 0 ; portb raw value portc = scalar, U08, 33, "", 1.000, 0 ; portc raw value portd = scalar, U08, 34, "", 1.000, 0 ; portd raw value 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 ; dwelldelay1 = scalar, U16, 38, "0.1ms", 1, 0.000 ; dwelldelay2 = scalar, U16, 40, "0.1ms", 1, 0.000 ; dwelldelay3 = scalar, U16, 42, "0.1ms", 1, 0.000 ; dwelldelay4 = scalar, U16, 44, "0.1ms", 1, 0.000 accDecEnrich = { (engine & 0b00100000) ? 100 : ((pulseWidth-injOpen1) / (pulseWidth-(accelEnrich / 10)-injOpen1) * 100) }, "%" ; In percent, centered on 100% meaning no correction. 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. ego2Voltage = { fuelADC / 255.0 * 5.0 } ; EGO sensor voltage 2. mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units. rpm = {rpm100*100 } ; True RPM. time = { timeNow } ; "timeNow" is a parameterless built-in function. #if CELSIUS egttemp = { egtADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C #else egttemp = { egtADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F #endif ; Added for second O2 sensor #if NARROW_BAND_EGO afr2 = { table(fuelADC, "NBafr100.inc") / 100.0 } lambda2 = { afr2 / 14.7 } #elif ZEITRONIX_NON_LINEAR lambda2 = { table(egoADC, "WBafr100Zeit.inc") / 100.0 } afr2 = { lambda * 14.7 } #else lambda2 = { table(fuelADC, "WBlambda100MOT.inc") / 100.0 } afr2 = { lambda2 * 14.7 } #endif #include "lambdaSensors.ini" #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 = {fuelADC < 1 ? 0.0 : fuelADC * (5/255) - 0.5} fuelpress = {fuelADC < 1 ? 0.0 : fuelvolt / 0.04 +1} altDiv1 = { alternate1 ? 2 : 1 } altDiv2 = { alternate2 ? 2 : 1 } cycleTime1 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke1) } nSquirts1 = { nCylinders1/divider1 } dutyCycle1 = { rpm < 100 ? 0 : 100.0*nSquirts1/altDiv1*pulseWidth1/cycleTime1 } cycleTime2 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke2) } nSquirts2 = { nCylinders2/divider2 } dutyCycle2 = { rpm < 100 ? 0 : 100.0*nSquirts2/altDiv2*pulseWidth2/cycleTime2 } ; These next two are needed to make the runtime dialog look good. veCurr = { veCurr1 } pulseWidth = { pulseWidth1 } ; G FORCE DISPLAY Alter Values for XOffset and YOffset to get the G at zero when stationary ; this is to compensate for any tilting the chip has at rest. YOffset = {182} XOffset = {187} YForce = {egtADC > YOffset + 1 ? (egtADC - YOffset) * 0.04464 : egtADC < YOffset - 1 ? (egtADC - YOffset) * 0.04464 : 0 } ; 1G = 312mV * 1.41 gain from amp = 440mV XForce = {fuelADC > XOffset + 1 ? (fuelADC - XOffset) * 0.04464 : fuelADC < XOffset - 1 ? (fuelADC - XOffset) * 0.04464 : 0 } ; 1G = 312mV * 1.41 gain from amp = 440mV ; Test use only test = {mapDOT} test2 = {egtADC} ; 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 = { fuelADC < 1 ? 0 : (fuelADC * Speed) /127.5 } ; MPH mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph USgph = { CCpHr / 3785 } ; US Gallons / Hr USmpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon gph = { CCpHr / 4546 } ; Real Gallons / Hr mpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / gph } ; Real Miles / Gallon ;***************************************************************************** ; CHANGE THESE VALUES TO FIND THE APPROXIMATE BHP FOR YOUR ENGINE. ; CALCULATIONS WERE PROVIDED BY ERIC. THESE WILL ONLY WORK IF A SUITABLE VEHICLE SPEED ; SENSOR IS CONNECTED TO THE MSnS-EXTRA CODE. 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 } MAFVolts = {fuelADC * 0.0196078} ;------------------------------------------------------------------------------- [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" #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 are for datalogging the egt,fuel pressure, GForces, spark angle ; and knock retard. Only 3 can be used at once for MSLVV compatability. entry = advSpark, "Spark Angle", int, "%d" entry = egttemp, "EGT", int, "%d" ; entry = fuelpress, "Fuel Press", int, "%d" entry = KnockDeg, "Knock", int, "%d" ; entry = XForce, "X GForce", float, "%.2f" ; X on X7 ; entry = YForce, "Y GForce", float, "%.2f" ; Y on X6 ; entry = MAFVolts, "MAF Volts", float, "%.2f" ; MAF on X7 ; TEST ONLY - DONT USE ; entry = iTime, "iTime", int, "%d" ; entry = iTimeX, "iTimeX", int, "%d" ; entry = iTimefull, "iTimeFull", int, "%d" ; TESTING ; entry = dwelldelay1, "dd1", int, "%d" ; entry = dwelldelay2, "dd2", int, "%d" ; entry = dwelldelay3, "dd3", int, "%d" ; entry = dwelldelay4, "dd4", int, "%d"