;------------------------------------------------------------------------------- [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. queryCommand = "S" ; data format signature = "MSnS-extra format 029q *********" ; gets changed when data format/this file changes versionInfo = "T" ; full text of this revision ; last edited for version 029q and MT2.25 (release) ;------------------------------------------------------------------------------- [Constants] ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale endianness = big #unset MEMPAGES ; set to enable all 13 pages for full debugging #unset LOGPAGES ; set to enable 11 pages for trigger/tooth logging #if MEMPAGES ;only use the 13 page version if you are a code developer and want to see the contents of ram ;Be sure not to let Megatune do a Chunk write command because the firmware does not correctly ;support 256 byte page writes (even though it ignores all the bytes on those pages) nPages = 13 burnCommand = "B" pageSize = 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 256, 256 pageActivate = "P\001", "P\002", "P\003", "P\000", "P\004", "P\005", "P\006", "P\007", "P\010", "P\360", "P\361", "P\362", "P\363" pageReadCommand = "V", "V", "V", "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", "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", "X%o%c%v", "", "", "", "" #elif LOGPAGES nPages = 11 burnCommand = "B" pageSize = 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189 pageActivate = "P\001", "P\002", "P\003", "P\000", "P\004", "P\005", "P\006", "P\007", "P\010", "P\360", "P\361" pageReadCommand = "V", "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", "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", "X%o%c%v", "", "" #else nPages = 9 burnCommand = "B" pageSize = 189, 189, 189, 189, 189, 189, 189, 189, 189 pageActivate = "P\001", "P\002", "P\003", "P\000", "P\004", "P\005", "P\006", "P\007", "P\010" pageReadCommand = "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", "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", "X%o%c%v" #endif ; Pages 10 & 11 are special read only pages that can be used to view realtime logged data ; of inter-tooth or inter-trigger times. Primarily for code devel or checking your trigger ; wheel is giving normal pulses. ;At present you can only access this data by using the Table Editor and viewing the data directly ;Page 10 contains the time between each tooth in the generic (missing and/or 2nd trig) and Neon ;Page 11 contains the time between "triggers" and will work for all ignition types ;93 big endian 16bit numbers are returned. The 188th 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 189th 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 93 new samples. ;Then somehow get them into a spreadsheet and plot a graph. ;i.e. if the data is (decimal) 52, 45, .... ; convert those two numbers -> (52*256) + 45 ;page 12 = RAM bytes $0000 to $00FF ($0000 to $003f return zeros) ;page 13 = RAM bytes $0100 to $01FF ;comms settings - you may need to tweak these for USB serial ;e.g. put writeblocks off and add an interwrite delay pageActivationDelay = 50 writeBlocks = on interWriteDelay = 0 ;end USB settings ; 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", "300 kPa", "400 kPa" 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 egoIgnCount= bits, U08, 188, [0:0], "mSec", "Ign Pulses*^" 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 #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", "300 kPa", "400 kPa" 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, 188[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 #if CELSIUS IdleAdvCLT = scalar, U08, 177, "C", 0.555, -72, -40, 102, 1 #else IdleAdvCLT = scalar, U08, 177, "F", 1, -40, -40, 215, 0 #endif IdleDelayTime = scalar, U08, 178, "sec", 1, 0, 0, 5, 0 StgCycles = scalar, U08, 179, "cycles", 1, 0, 0, 255, 0 #if MPXH6300A Stg2ndParmKPA = scalar, U08, 180, "KPa", 1.213675, 1.53, 0, 304.0, 0 Stg2ndParmDlt = scalar, U08, 181, "KPa", 1.213675, 1.53, 0, 304.0, 0 #elif MPXH6400A Stg2ndParmKPA = scalar, U08, 180, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 Stg2ndParmDlt = scalar, U08, 181, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else Stg2ndParmKPA = scalar, U08, 180, "kPa", 1, 0, 0, 255, 0 Stg2ndParmDlt = scalar, U08, 181, "kPa", 1,0,0,255,0 #endif 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, 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" 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" out3sparkd = bits, U08, 12, [4:4], "Output3", "Spark output D" 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*^" trig2fall = bits, U08, 33, [0:0], "rising", "falling (like IRQ)" #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 ; 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, 157, "s", 0.01, 0, 0, 2.55, 2 N2Odel_flat = scalar, U08, 158, "s", 0.01, 0, 0, 2.55, 2 N2Oholdon = scalar, U08, 159, "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, 145, "", 1, 0, 0, 255 trig6 = scalar, U08, 146, "", 1, 0, 0, 255 trig5ret = scalar, U08, 147, "", 1, 0, 0, 255 trig6ret = scalar, U08, 148, "", 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, 182, "C", 0.555, -72, -40, 102, 0 #else OvrRunClt = scalar, U08, 182, "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" KPaDotBoost = bits, U08, 66[4:4], "Never", "In Boost" DecayAccel = bits, U08, 116[6:6], "None*^(DT)", "Decay" DecayAcPoint = scalar, U08, 183, "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 StagedMAP2nd = bits, U08, 109[6:6], "Off*^", "MAP-Based" StagedAnd = bits, U08, 109[7:7], "One condition", "Both Conditions" ; 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, 184, [3:3], "No", "Yes" AFMUse = bits, U08, 184, [5:5], "No AFM *^", "AFM on X7" AirCorAFM = bits, U08, 184, [6:6], "Use IAT", "Built into AFM" ConsBarCor = bits, U08, 184, [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 falsetrig_dis = 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 ;pwm idle stuff was in here tachconf = bits, U08, 144[0:2], "OFF","X2 (JS0)","X3 (JS1)","X4 (JS2)","X5 (JS3)","Output3","Pin10","INVALID" tachconfdiv = bits, U08, 144[7:7], "Normal", "Half speed" #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 Pambient = scalar, U08, 185, "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 Pambient = scalar, U08, 185, "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 Pambient = scalar, U08, 185, "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif DecelBoost = bits, U08, 92, [7:7], "Never*^", "Above KPa Setpoint" ; 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, 161,[ 4], "ms", 0.1960784, 0.0, 0.0, 25.5, 1 maeRates4 = array, U08, 165,[ 4], "ms", 10, 0.0, 0.0, 2550, 0 maeBins4 = array, U08, 169,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeBins4 = array, U08, 173,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1 taeColdA4 = scalar, U08, 177, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh4 = scalar, U08, 178, "v/s", 0.1953125, 0.0, 0.2, 49.8, 3 taeTime4 = scalar, U08, 179, "ms", 0.1, 0.0, 0.0, 25.5, 1 tdePct4 = scalar, U08, 180, "%", 1.0, 0.0, 0.0, 255.0, 0 taeColdM4 = scalar, U08, 181, "%", 1.0, 0.0, 0.0, 250.0, 0 mapProportion4 = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot" AccelMapASE = bits, U08, 184, [2:2], "Normal*^", "Off during ASE" RPMBAsedAE = bits, U08, 184[4:4], "Normal AE*^", "RPM Based" ;???curve table RPMAE1 = scalar, U08, 152, "RPM", 100, 0, 100, 25500, 0 ; RPM based AE stuff RPMAE2 = scalar, U08, 151, "RPM", 100, 0, 100, 25500, 0 RPMAE3 = scalar, U08, 150, "RPM", 100, 0, 100, 25500, 0 RPMAE4 = scalar, U08, 149, "RPM", 100, 0, 100, 25500, 0 RPMmS1 = scalar, U08, 153, "mS", 0.1, 0, 0, 25.5, 1 RPMmS2 = scalar, U08, 154, "mS", 0.1, 0, 0, 25.5, 1 RPMmS3 = scalar, U08, 155, "mS", 0.1, 0, 0, 25.5, 1 RPMmS4 = scalar, U08, 156, "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 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 #if CELSIUS ASEFixTemp = scalar, U08, 181, "C", 0.555, -72, -40, 100, 1 #else ASEFixTemp = scalar, U08, 181, "F", 1, -40, -10, 120, 1 #endif VEFixASE = bits, U08, 179, [2:2], "Normal MAP *^", "Fixed MAP" #if MPXH6300A VEFixValue = scalar, U08, 182, "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A VEFixValue = scalar, U08, 182, "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else VEFixValue = scalar, U08, 182, "kpa", 0.965, 9, 0.0, 255.0, 0 #endif page = 7 ; TARGET AFR table 1 BINS FOR VE 1 (First find which sensor used) #if NARROW_BAND_EGO afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif WB_1_0_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif WB_UNKNOWN afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif AEM_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif AEM_NON_LINEAR 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 INNOVATE_LC1_DEFAULT afrBins1 = array, U08, 0, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1 #elif ZEITRONIX_NON_LINEAR afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #else ; Should never get here but just incase put message on screen #error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating." #exit ; Terminate MT #endif rpmBins6 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY #if MPXH6300A mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A mapBins6 = array, U08, 72, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else mapBins6 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0 #endif #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 AEM_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif AEM_NON_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif DIYWB_NON_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #elif 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 INNOVATE_LC1_DEFAULT afrBins2 = array, U08, 80, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1 #elif ZEITRONIX_NON_LINEAR afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2 #else ; Should never get here but just incase put message on screen #error "No O2 sensor configuration selected; You 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 ;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 page = 9 ; idle control and other bits ripped out of lower pages for more space idle_dc_lo = scalar, U08, 000, "dc", 1, 0, 0, 255, 0 idleperiod = scalar, U08, 001, "x 0.01sec", 1, 0, 0, 255, 0 idlecrankdc = scalar, U08, 002, "dc", 1, 0, 0, 255, 0 ;kg idledelayclock = scalar, U08, 003, "x 0.01sec", 1, 0, 0, 255, 0 ;kg idledashdc = scalar, U08, 004, "dc", 1, 0, 0, 255, 0 idlemindc = scalar, U08, 005, "dc", 1, 0, 0, 255, 0 idle_dc_hi = scalar, U08, 006, "dc", 1, 0, 0, 255, 0 ictlrpm1 = scalar, U08, 007, "lo RPM", 10, 0, 0, 2500, 0 ;kg ictlrpm2 = scalar, U08, 008, "hi RPM", 10, 0, 0, 2500, 0 ;kg Ideadbnd = scalar, U08, 009, "+/- RPM", 10, 0, 0, 2500, 0 ;kg Idashdelay = scalar, U08, 010, "x 0.01sec", 1, 0, 0, 255, 0 ;kg idlefreq = scalar, U08, 011, "10000/x = Frequency", 1, 0, 0, 255, 0 idlestartclk = scalar, U08, 012, "x 0.01sec", 1, 0, 0, 255, 0 ;kg idlePeriod2 = scalar, U08, 013, "x 0.01sec", 1, 0, 0, 255, 0 irestorerpm = scalar, U08, 014, "RPM", 10, 0, 100, 6000, 0 idleclosedc = scalar, U08, 015, "dc", 1, 0, 0, 255, 0 pwmIdle = bits, U08, 016[0:0], "B&G On-Off*^", "PWM" pwmidlewhen = bits, U08, 016[1:2], "INVALID", "Warmup only", "Closed loop only", "INVALID" IATCor = bits, U08, 016,[3:3], "Normal Correction*^", "Corrected" IATCorTy = bits, U08, 016,[4:4], "Coolant Corrected", "IAT Corrected" #if CELSIUS fastIdleTemp = scalar, U08, 17, "C", 0.555, -72.0, -40, 102 slowIdleTemp = scalar, U08, 18, "C", 0.555, -72.0, -40, 102 #else fastIdleTemp = scalar, U08, 17, "F", 1.0, -40.0, -40, 215 slowIdleTemp = scalar, U08, 18, "F", 1.0, -40.0, -40, 215 #endif fastIdleRPM = scalar, U08, 19, "RPM", 10.0, 0.0, 10, 2550 slowIdleRPM = scalar, U08, 20, "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, 21, "%", 0.502, -26.0, 0.0, 255 idleThresh = scalar, U08, 21, "ADC", 1, 0, 0, 255, 0 ;???curve wueBins9 = array, U08, 22,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0 ;???curve CrankPWT1 = scalar, U08, 32, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT2 = scalar, U08, 33, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT3 = scalar, U08, 34, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT4 = scalar, U08, 35, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT5 = scalar, U08, 36, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT6 = scalar, U08, 37, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT7 = scalar, U08, 38, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT8 = scalar, U08, 39, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT9 = scalar, U08, 40, "mS", 0.1, 1, 0, 25.5, 1 CrankPWT10 = scalar, U08, 41, "mS", 0.1, 1, 0, 25.5, 1 ; Priming SETTINGS AlwaysPrime = bits, U08, 42[0:0], "Prime Pulse>0*^", "Always" PrimeLate = bits, U08, 42[1:2], "Power Up*^", "INVALID", "Twice","After 2 Secs" PrimeTBox = bits, U08, 42[3:3], "Priming Table", "Standard Prime" ; CLT vs MAT for cranking pulse width crankpwip = bits, U08, 42, [4:5], "INVALID", "CLT only*^", "MAT only", "CLT,MAT average" ExFuelCrank = bits, U08, 42, [6:6], "Off", "On" CrankRPM = scalar, U08, 43, "rpm", 100.0, 0.0, 100, 1000, 0 tpsflood = scalar, U08, 44, "raw", 1.0, 0.0, 0.0, 255.0, 0 PrimePulse = scalar, U08, 45, "mS", 0.1, 0.0, 0.0, 25.5, 1 ExtraFMult = scalar, U08, 46, "%", 1.0, 0.0, 0.0, 255, 0 ; Coolant related correction table for air density IATCorS = array , U08, 47, [7], "%", 1.0, 0.0, 50, 150, 0 ; Coolant related correction table for air density ; IATCor1 = scalar, U08, 47, "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor2 = scalar, U08, 48, "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor3 = scalar, U08, 49, "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor4 = scalar, U08, 50, "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor5 = scalar, U08, 51, "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor6 = scalar, U08, 52 "%", 1.0, 0.0, 0.0, 255, 0 ; IATCor7 = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 255, 0 RPMRedLo = scalar, U08, 54, "RPM", 100, 0.0, 0.0, 25500, 0 RPMRedHi = scalar, U08, 55, "RPM", 100, 0.0, 0.0, 25500, 0 #if CELSIUS IATCTemp = array , U08, 56, [7], "C", 0.555, -72, -72, 102, 0 #else IATCTemp = array , U08, 56, [7], "F", 1.0, -40.0, -40, 215, 0 #endif ;#if CELSIUS ; IATCTemp1 = scalar, U08, 56, "C", 0.555, -72, -40, 102, 1 ; IATCTemp2 = scalar, U08, 57, "C", 0.555, -72, -40, 102, 1 ; IATCTemp3 = scalar, U08, 58, "C", 0.555, -72, -40, 102, 1 ; IATCTemp4 = scalar, U08, 59, "C", 0.555, -72, -40, 102, 1 ; IATCTemp5 = scalar, U08, 60, "C", 0.555, -72, -40, 102, 1 ; IATCTemp6 = scalar, U08, 61, "C", 0.555, -72, -40, 102, 1 ; IATCTemp7 = scalar, U08, 62, "C", 0.555, -72, -40, 102, 1 ;#else ; IATCTemp1 = scalar, U08, 56, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp2 = scalar, U08, 57, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp3 = scalar, U08, 58, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp4 = scalar, U08, 59, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp5 = scalar, U08, 60, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp6 = scalar, U08, 61, "F", 1.0, -40.0, -40.0, 215, 1 ; IATCTemp7 = scalar, U08, 62, "F", 1.0, -40.0, -40.0, 215, 1 ;#endif splitTable = array, U08, 63, [6x6], "deg", 0.352, -28.4, -10.0, 80.0, 0 splitrpmBins = array, U08, 99, [ 6], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY #if MPXH6300A splitkpaBins = array, U08, 105, [ 6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0 #elif MPXH6400A splitkpaBins = array, U08, 105, [ 6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0 #else splitkpaBins = array, U08, 105, [6], "kpa", 1, 0, 0.0, 255.0, 0 #endif #elif AIR_FLOW_METER splitafmBins = array, U08, 105, [6], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2 #elif ALPHA_N splittpsBins = array, U08, 105, [ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0 #endif rotary2 = bits, U08, 111, [0:0], "Off", "On" fixedsplit = scalar, U08, 112, "deg", 0.352, -28.4, -10.0, 30.0, 0 ; uncomment the following if you want to be able to save logged trigger or teeth into an MSQ ; file for onward processing. Normally best to leave commented. ;Didn't seem to work as-is with b730 ;page = 10 ;??; blob10 = array, U08, 0, [189] ; toothlog = array, U16, 0, [93] ; toothpos = scalar, U08, 186, "", 1,0,0,255 ; toothscale = scalar, U08, 187,"", 1,0,0,255 ;page = 11 ; triggerlog = array, U16, 0, [93] ; triggerpos = scalar, U08, 186, "", 1,0,0,255 ; triggerscale = scalar, U08, 187,"", 1,0,0,255 ;------------------------------------------------------------------------------- [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. ; ;---------------------------------------------------------------------------- menuDialog = main menu = "&Basic Settings" subMenu = std_constants, "&Engine Constants 1", 1 subMenu = egoControl1, "&Exhaust Gas Settings", 1 subMenu = veTable1Tbl, "Fuel &VE Table 1", 0 subMenu = AccelDecc, "&Accel Deccl Mode" subMenu = std_accel, "&Acceleration Wizard", 4 subMenu = MoreAccel, "RPM &Based Accel" subMenu = codeBase, "&Codebase and outputs function" subMenu = wheeldecoder, "Wheel decoder settings", 0, { wheelon } #if MPXH6300A subMenu = mapwarning, "MAP sensor warning", 0, { mapType1!=2 } #elif MPXH6400A subMenu = mapwarning, "MAP sensor warning", 0, { mapType1!=3 } #else subMenu = mapwarning, "MAP sensor warning", 0, { mapType1>1 } #endif menu = "Crank/&WarmUp" subMenu = CrankTble, "Cranking Settings", 9 subMenu = CrankExtra, "More Cranking Stuff", 9 subMenu = AfterStTbl, "After start Enrichment Settings", 6 subMenu = std_warmup, "&Warmup Wizard", 9 menu = "Fuel Dual Table&2", { inj2t } subMenu = std_constants, "&Constants 2 (DT)", 2 subMenu = egoControl2, "&Exhaust Gas Settings", 2 subMenu = veTable2Tbl, "&VE Table 2 (DT)" menu = "&More settings" subMenu = idleControl, "&Idle Control", 0, { !fidleUse } subMenu = idleControl2, "Idle Control (Closed Loop Settings)", 0, { pwmIdle & (pwmidlewhen >1) } subMenu = HardLim, "Rev Limiter Type" subMenu = RevLimiterS, "Rev Limits", 4 subMenu = LambdaSet, "&Lambda AFR Settings" subMenu = afrTable1Tbl, "A&FR Targets for VE Table 1", 0, { AfrTar } subMenu = afrTable2Tbl, "AF&R Targets for VE Table 3", 0, { UseVE3 && AfrTar2 } subMenu = OpenLoop, "&Open Loop Mode" subMenu = OvrRun, "Over &Run Settings" subMenu = tachoutput, "Tacho output pin", 0 subMenu = BarroCor, "&Barometric Correction", { baroCorr1 } subMenu = outputs, "&Outputs" subMenu = outputs2, "S&hift light/ fan/ Output 3+4" 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 = IdleAdvance, "Idle Advance settings", 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 } subMenu = splitTbl, "Rotary trailing settings" subMenu = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire } menu = "&Advanced" subMenu = fuelTable, "&Fuel table selection" subMenu = veTable3Tbl, "Fuel VE Table &3", 0, { UseVE3 } subMenu = LaunchSettings, "Launch &Control" subMenu = WaterInj, "&Water Injection Settings", 0, { !x2use } subMenu = NosSystem, "&Nitrous System" ; subMenu = NosSystem2, "&Nitrous Stage 2", 0, { nitrousUse && n2ostage2 } subMenu = Staged, "&Staged Injection" subMenu = MoreStaged, "More Staged Injection", 0, { IStagedMode } subMenu = OvrBoo, "Over &Boost Protection" subMenu = traction, "Anti-Rev System (&Traction Control)" subMenu = traction2, "Anti-Rev System cont...", 0, { TractionOn } 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 = clt_IATCorrC, "Coolant-Related Air Density" ; subMenu = clt_IATCorr, "Coolant-Related Air Density" subMenu = advanced, "&Advanced code options" ; the following menu gives access to some spare bytes of flash for education ;(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" plugIn = "%INSTALL_DIR%/README.txt", "&ReadMe File" plugIn = "%WORKING_DIR%/audit.log", "A&udit Log" 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 = Shelp5, "Wheel decoder Settings" 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" menuDialog = splitTbl menu = "Rotary Trailing &Settings" subMenu = rotarySettings, "Rotary trailing settings" subMenu = rotarySplitType, "Rotary trailing output type" menuDialog = clt_IATCorrC menu = "&Settings" subMenu = clt_IATCorr, "Coolant-Related Air Density" ;------------------------------------------------------------------------------- [UserDefined] dialog = mapwarning, "MAP Sensor setup readme" field = "WARNING!!!" field = "" field = "When using a 3bar or 4bar map sensor you" field = "MUST use the Megatune Configurator to enable" field = "that sensor type - otherwise all of the kpa" field = "values in Megatune will display incorrectly" field = "" dialog = egoControl1, "EGO Control",1 help = egoHelp field = "EGO Sensor Type", egoType1 field = "EGO Switch Point", egoSwitch1 field = "Ignition Events or msec per Step", egoCount1 field = "Controller Step Size", egoDelta1 field = "Controller Authority +/-", egoLimit1 field = "Active Above Coolant Temp", egoTemp1 field = "Active Above RPM", egoRPM1 field = "EGO Correction Step Counter", egoIgnCount 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 = "Controller Step Size", egoDelta2, { TwoLambda } field = "Controller Authority +/-", egoLimit2, { TwoLambda } field = "Active Above Coolant Temp", egoTemp2, { TwoLambda } field = "Active Above RPM", egoRPM2, { TwoLambda } dialog = codeBase, "Power cycle after changes", 4 topicHelp = Chelp1 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 = Shelp5 field = "Wheel decoder base teeth", numteeth field = "2nd trigger enable", wd_2trig field = "2nd trigger active edge", trig2fall, { 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 E", trig5ret field = "Trig pos F", trig6 field = "Trig return pos F", trig6ret field = "Dual dizzy mode (see F1)", dualdizzy field = "Wheel decoder routine", wheel_old 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 = "#Functions from DT (*=B+G default)" 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 = "False trigger protection", falsetrig_dis dialog = fuelTable, "Fuel Table selection",4 topicHelp = Fhelp2 field = "* = B+G default ^ = MSnS default" field = "DT = Dual Table default" field = "Injector channel 1:" field = "use table : always 1" field = "GammaE:", inj1g field = "Injector channel 2:" field = "use table:", inj2t field = "GammaE:", inj2g field = "Pulse inj2 during cranking", inj2cr field = "" field = "Switch VE Table1 for VE Table3 when" field = "NOS on or when Pin6 JP1 low.", UseVE3 field = "Delay for changing to VE3", VE3Delay, { UseVE3 } dialog = RevLimiterS, "Rev Limiter", 4 topicHelp = Fhelp7 field = "Rev Limiter" field = "MSnS Soft rev limit", SoftRevLim field = "MSnS Soft limit retard", SoftLimRetard field = "MSnS Soft limit max time", SoftLimMax field = "MSnS Hard Rev limit", HardRevLim dialog = outputs,"Outputs",4 topicHelp = Fhelp1 field = "Output turns off when actual value =" field = "On/Off limit - Hysterisis" field = "To create an output window set Upper" field = "Limit. For normal output set to zero" field = "OUTPUT 1 (X4 / 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 = "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 = "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 (see F1)", CrankAng, { TrigCrank + edis + dwellcont } field = "Hold Ignition", IgHold field = "Spark Output Inverted (see F1)", IgInv field = "EXPERIMENTAL Oddfire support", oddfire field = "" field = "Fixed Angle (-10 = use map)", FixAng field = "Trim Angle", Trim dialog = IdleAdvance, "Idle Advance Settings",3 field = "#Idle Advance Settings" field = "Idle advance (-10 = use map)", IdleAdv field = "Idle advance TPS threshold", IdleAdvTPS field = "Idle advance RPM threshold", IdleAdvRPM field = "Idle advance CLT threshold", IdleAdvCLT field = "Idle advance Wait Time", IdleDelayTime dialog = rotarySplitType, "Rotary Trailing Output Type",4 field = "trailing output type", rotaryFDign dialog = rotarySettings,"Rotary Settings",9 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 = "\t>20 means trailing OFF" field = "\t0 means fire simultaneously" field = "\tother values are the trailing delay in degrees" field = "" field = "Fixed split for testing (-10 = map)", fixedsplit, { rotary2 } dialog = dwellSettings,"Dwell Settings",4 topicHelp = DwellHelp 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 = Stim4WHelp 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 = TachoHelp 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", 9 topicHelp = Ihelp1 field = "#Algorithm", pwmIdle field = "When to use PWM idle", pwmidlewhen, { pwmIdle } field = "Idle Valve Frequency", idlefreq, { pwmIdle } field = "Cranking", idlecrankdc, { pwmIdle } field = "Mininum", idlemindc, { pwmIdle & (pwmidlewhen >1) } field = "Closed", idleclosedc, { pwmIdle & (pwmidlewhen >1) } field = "#Warmup (open loop) 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 = "Idle Speed Target" field = "*Fast Idle (lower) Temp", fastIdleTemp, { pwmIdle } field = "*Slow Idle (upper) Temp", slowIdleTemp, { pwmIdle } field = "Fast Idle Speed", fastIdleRPM, { pwmIdle & (pwmidlewhen >1) } field = "Slow (warm) Idle Speed", slowIdleRPM, { pwmIdle & (pwmidlewhen >1) } ; field = "* Denotes item also used for warmup" field = "#Dashpot Settings" field = "TPS threshold", idleThresh, { pwmIdle & (pwmidlewhen >1) } field = "Idle Activation adder", irestorerpm, { pwmIdle & (pwmidlewhen >1) } field = "Dashpot Settle Time", idledelayclock, { pwmIdle & (pwmidlewhen >1) } field = "Dashpot Adder", idledashdc, { pwmIdle & (pwmidlewhen >1) } dialog = idleControl2, "Idle Control Continued", 9 topicHelp = Ihelp2 field = "Deadband Range", Ideadbnd, { pwmIdle } field = "#Adaptive Idle Deviation Control" ; field = "RPM Deviation Control" field = "This determines how fast the closed loop control responds" field = "based on how far from the target the current RPM is" field = "if rpm = target plus 'Upper Limit', the recovery time" field = "is 'Fast Recovery'" field = "Upper Limit", ictlrpm2, { pwmIdle } field = "Lower Limit", ictlrpm1, { pwmIdle } field = "Fast recovery", idlePeriod2, { pwmIdle } field = "Slow recovery", idleperiod, { pwmIdle } field = "#Other time constants" field = "Closure Speed", Idashdelay, { pwmIdle & (pwmidlewhen >1) } field = "Startup Delay", idlestartclk, { pwmIdle & (pwmidlewhen >1) } dialog = boostIAT, "IAT Related Boost",4 topicHelp = Fhelp1 field = "#Remove boost related to IAT" field = "When IAT above", IATBoostSt field = "remove 1 psi (7KPa) every:", IATBoost field = "when tps above:", TPSBooIAT dialog = boostControl, "Boost Controller Parameters", 4 topicHelp = Fhelp1 field = "Solenoid PWM Rate", freqDiv field = "Controller Update", bcUpdateRate field = "Proportional Gain", pGain field = "Differential Gain", dGain field = "" field = "Increase Voltage =", BoostDir field = "" field = "Switch Boost Target Tables when" field = "NOS on or JP1 pin6 low", BooTbl2Use field = "" field = "Closed loop kpa limit", bc_max_diff field = "This is the difference between target" field = "boost level and actual. If greater" field = "than this limit then goes open loop" field = "and uses duty cycle from table" field = "Note. 0% duty = low boost, 100% = full boost" field = "" field = "Typical ambient pressure", Pambient, { !baroCorr1 } ; ENHANCED STUFF dialog = LaunchSettings, "Launch Control", 4 topicHelp = Fhelp5 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 = "#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 = OpenLoopHelp field = "Open Loop O2 Correction:", OLoopEgo field = "" field = "If TPS selected then go Open Loop @", TpsOn field = "If KPa selected then go Open Loop @", KPaOn field = "Set selection to zero for no Openloop" field = "Restart MS after changes" dialog = WaterInj,"Water Injection Setpoints", 4 topicHelp = Chelp4 field = "#Please Note:" field = "O2 correction turns OFF when water starts" field = "Water Injection", WaterInj field = "Start Water Injection when Boost above", StartWIKPa, { WaterInj } field = "and engine speed above:", WaterIRpm, { WaterInj } field = "and Manifold Air Temp above", WaterIIat, { WaterInj } dialog = IatCltIg, "IAT/Clt Related Ignition", 4 topicHelp = Shelp2 field = "Coolant/Iat Related Advance", CltAdv field = "Add 1 degree of ignition advance every", IgAdvDeg, { CltAdv } field = "when below: Coolant setpoint ", IgAdvTemp, { CltAdv } field = "Note: IAT Retard will work when 3C above " field = " Coolant setpoint" field = "Max allowable added ignition advance ", MaxIatAdv, { CltAdv } field = " " field = "Pull 1 degree of ignition retard every", IgRetDeg, { CltAdv } field = "when MAP above", IatAdvKpa, { CltAdv } field = "and IAT above", IgRetTemp, { CltAdv } dialog = Knock,"Knock Detection System", 4 topicHelp = Shelp1 field = "Knock Detector System", KnockOn field = "Ignore Knocks when above", KnockRpm, { KnockOn } field = "Ignore Knocks when MAP above ", KnockKpa, { KnockOn } field = "Ignore Knocks when below ", KnockRpmL, { KnockOn } field = "First Knock: Retard by", KnockRet, { KnockOn } field = "Subsequent Knocks: Retard by", KnockSb, { KnockOn } field = "Max Retard Allowed ", KnockMax, { KnockOn } field = "Advance when no knock:", KnockAdv, { KnockOn } field = "Wait time between steps:", KnockTim, { KnockOn } field = "" field = "#If using Boost Control:" field = "Amount of boost to remove/add in" field = "the above steps", KnockBoost, { boostUse && KnockOn } field = "Maximum boost to remove", BoostMaxKn, { boostUse && KnockOn } dialog = SparkT2, "Spark Table selection", 4 topicHelp = Shelp4 field = "Use Spark Table 1" field = "until JP1 pin6 input low or" field = "NOS system on, then use:", STTable2On field = "Delay before switching to Table 2", ST2Delay, { STTable2On } dialog = OvrBoo, "Over Boost Protection", 4 topicHelp = Fhelp1 field = "OVER BOOST PROTECTION" field = "Over Boost Hard Cut if Boost hits", OvrBKpa dialog = HardLim, "Hard Cut/Limiter Type", 4 topicHelp = Fhelp4 field = "!**********C A U T I O N**************" field = "!IGNITION CUT IS NOT SUITABLE" field = "!FOR VEHICLES FITTED WITH" field = "! CATALYTIC CONVERTERS" field = "!*Spark Cut doesn't work for Edis users*" field = "BASE NUMBER to cut sparks from", SparkCutBase field = "#REV LIMITER" field = "Hard Cut Type", HCutType field = "Cut 'n' sparks out of BASE NUMBER", HCutSpark field = "#LAUNCH CONTROL" field = "Hard Cut Type", HCutLCType field = "Cut 'n' sparks out of BASE NUMBER", HCutLCSpark field = "#OVER BOOST PROTECTION" field = "Hard Cut Type", OvrBCutType field = "Cut 'n' sparks out of BASE NUMBER", SparkCutBNum dialog = NosSystem, "Nitrous System", 4 topicHelp = Chelp5 field = "Nitrous Control", nitrousUse field = "Turn 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 = "#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 = "" field = "Staging second Parameter", StagedMAP2nd, { IStagedMode } field = "Staging on one or both params", StagedAnd, { StagedMAP2nd } field = "!Restart MS after changes" dialog = MoreStaged, "More staging settings",3 field = "#MORE STAGED INJECTION SETTINGS" field = "" field = "Injector 2nd parameter kPa", Stg2ndParmKPA, { StagedMAP2nd } field = "Injector 2nd parameter delta", Stg2ndParmDlt, { StagedMAP2nd } field = "" field = "Injector staging delay", StgCycles dialog = OvrRun, "Over Run Fuel Cut", 4 topicHelp = Chelp8 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 = "Accel Enrichments Trigger:", AccDecEnrich 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 = "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 = "To help stop 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 = "USE same sensor as primary sensor" field = "MAP sensor connected to X7" field = "Constant Baro Correction:", ConsBarCor dialog = traction, "Anti-Rev System(Traction Control)", 4 topicHelp = Fhelp1 field = "Traction Control", TractionOn field = "MODE=:", TractMode field = "(RPM Based)RPMdot Threshold", RPMThresh, { !TractMode } field = "(VSS Based)Sensor Differential", TractScale, { TractMode } field = "(VSS Based)Low Speed Slip Threshold ", TractSlip, { TractMode } field = "(VSS Based)Half Speed Slip Threshold", TractSlipH, { TractMode } field = "Operate Anti-Rev between Max and Min" field = "(VSS Based)Max Undriven input", TractVSSMax, { TractMode } field = "(VSS Based)Min Undriven input", TractVSSMin, { TractMode } field = "Enrichment Bins (mSec)" field = "", RPM1S field = "", RPM2S field = "", RPM3S field = "", RPM4S field = "Retard Ignition by", field = "", TractRet1, { ignmode } field = "", TractRet2, { ignmode } field = "", TractRet3, { ignmode } field = "", TractRet4, { ignmode } dialog = traction2, "Anti-Rev System cont...", 4 topicHelp = Fhelp1 field = "Spark Cut 'n' from Base Value" field = "", TractSC1, { ignmode } field = "", TractSC2, { ignmode } field = "", TractSC3, { ignmode } field = "", TractSC4, { ignmode } field = "" field = "Turn NOS off during Anti-Rev?", TractNOS, { nitrousUse } field = "" field = "Retard, Enrichment + Spark cut" field = "for nn Engine Cycles" field = "", TractCyc1 field = "", TractCyc2 field = "", TractCyc3 field = "", TractCyc4 field = "or untill:", TractCySec dialog = CrankExtra, "More Cranking Stuff",9 topicHelp = Chelp9a 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", 9 topicHelp = Chelp9 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 = "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", 9 topicHelp = airdenHelp field = "Air Density Correction:", IATCor field = "Correction based on:", IATCorTy, { IATCor } ; field = "!Set both to 25500 for no reduction!" field = "Start to reduce correction at:", RPMRedLo, { IATCor } field = "End correction at:", RPMRedHi, { IATCor } field = "" field = "If you want to see air temp gauge instead you need to" field = "edit the msns-extra.ini file and find [CurveEditor]" field = "Change cltGauge to matGauge" field = "Or just look at where the green ball is on the graph" dialog = demo, "Demo menu", 3 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 = "Note that a value of 0.3 could mean 0.3 seconds or 3 ignition pulses.
" text = "The Cycles option is useful because the enrichment will reduce at higher rpms
" 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" text = " 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." text = " 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" ; KG rewrote this help info section 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 = "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 = "--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. Note that the Frequency of actuation is 1000 / this value
" text = "
" text = "Please Note: true DUTY CYCLE% = Lower or Upper dc * 100 / Idle Valve Frequency value" text = "example Freq value - 200 = 50 hz operation, a DC value of 80 = 80*100/200 = 40% true duty cycle
" 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 = "There is an inverse repationship between frequency of operation and control precision because of the algorithm" text = "Used to control the PWM output. Lower frequencies have more steps between dc values. 100hz operation has 100 steps" text = "and therefore has 1% control steps. 50hz operation has 200 steps and has 0.5% duty cycle steps and that is why" text = "the duty cycle values put into MT need to be double the true DC% value.
" text = "Some valves may emit a buzzing sound which can be eliminated by increasing the frequency above 100 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 = "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 = "-- Cranking (dc) is the duty cycle required at cranking.
" text = "-- Minimum (dc) is the duty cycle slightly lower than a warm idle dc when regulated.
" text = "-- Closed (dc) is the duty cycle where the valve closes.
" text = "The values here follow the rule above and are related to teh frequency selected and are not true DC except when the idlefreq values is 100.
" text = "Some valves are normally closed (use 0 here) others require a certain DC to clsoe and will regulate" text = "above this value. Bosch 2 wire valves are normally open, close at 25% and regulate at about 40%.
" 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 (fully warmed up).
" text = "
" text = "The two RPM set points are linearly interpolated between the two temperatures to provide a smooth" text = "transition during warmup
" text = "
" text = "--TPS Threshold is the point above which the idle valve closes in ADC (as it is no longer needed).
" text = "--Idle Activation (rpm) is 'how many rpm' above idle that the idle valve returns to operation after the throttle" text = "has been opened and closed again. This follows the idle speed as it is interpolated from Fast Idle RPM to Slow Idle RPM
" text = "--Dashpot Settle is the wait time required after a dashpot event for the rpms to settle below the " text = "idle activation point. After a dashpot it is possible that rpms will overshoot the activation point and this is the time required to settle below activation point.
" text = "--Dashpot Adder (dc) is the dashpot duty cycle added to the last controlled idle duty cycle which allows" text = "it to recover to a nice idle with minimal overshoot. These values should be low: 1-5 DC
" 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 = "More Closed Loop Settings
" text = "
" text = "Deadband range
" text = "This is a range of rpm that you do not want it to bother changing duty cycle to regulate idle.
" text = "30 to 50 rpm seems to be good here try smaller values unitl it seems stable.
" text = "
" text = "Adaptive idle control
" text = "This controls the time between idle control events. The goal is to have a Slow Recovery which is tuned to the" text = "engine's time constant at idle. You do not want it to hunt nor have falling idle speed. The Fast Recovery" text = "is how fast you want it to recover to a decent idle when the idle speed is higher or lower than the target" text = "this can be tuned for startup and to see what is needed to recover if idle speed drops significantly below target" text = "for example when the A/C or electric fans kick on and the idle drops below target." text = "
" text = "The rpm values determine the curve. The lower value should be close to the dead band value and the upper one should be" text = "a bit further away, maybe 100 or 200 rpm
" text = "the next 2 values are time constants needed for startup and idle valve closure" text = "--Closure speed comtrols the speed at which the idle valve closes. It is the time step delay between each" text = "as it steps to a closed dc value" text = "--Startup delay is a wait time right after the engine is started that the system stabilizes before" text = "it attempts to find an idle speed
" text = "
" text = "Idle Timing
" 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 = "This is the angle BTDC when the trigger tooth/vane etc. passes the sensor
" text = "Typically you should aim for 60-70deg.
" text = "If using an OEM distributor setup like HEI7 or TFI then 5-15deg is typical
" text = "Do NOT use a value between 15 and 40 deg or your engine will not run correctly.
" text = "
" 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
" text = "
" text = "When using dwell control and trigger return cranking you MUST still" text = "specify the cranking advance which needs to match the trigger return angle." text = "The dwell calculations need this for accurate cranking dwell" text = "
" text = "Choosing spark output inverted or not is VERY IMPORTANT. This is determined" text = "by the way you drive your coil(s) - see the website. When the VB921 is used" text = "per the diagrams you will choose Inverted. Get it right or you will risk" text = "damaging components as well as getting wildly inaccurate timing" 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 = Shelp5, "Wheel decoder settings" webHelp = "http://megasquirt.sourceforge.net/extra/setup-wheel.html" text = "Read the web help for more information and diagrams" text = "
" text = "The base teeth normally means the number of tooth places per 360deg" text = "i.e. on a 36-1 enter 36, on a 60-2 enter 60 (58 physical teeth and 2 gaps)" text = "
" text = "When using 2nd trigger and missing tooth for COP setups, enter the number of" text = "teeth between 2nd triggers. e.g. on 60-2 enter 120" text = "
" text = "Trigger numbers must follow in sequence" text = "

" text = "Dual dizzy mode is intended for use on dual distributor vehicles such as" text = "the Lexus V8. Setup trigger teeth for each firing event and the code will" text = "fire coil A and coil in turn" text = "
i.e. triggers A,C,E fire coil A; triggers B,D,F fire coil B
" text = "There is a choice of wheel decoder style 024 vs 025. It has been found that" text = "Low wheel counts < 20 teeth need to use the 024 style, higher numbers of teeth" text = "may work better with 025 style" help = Chelp1, "Codebase and Output functions" webHelp = "http://megasquirt.sourceforge.net/extra/setup.html" text = "When running ignition you must choose one ignition type and select as many spark" text = "outputs as you have coils
" text = "i.e. distributor must have SparkA only; 4cyl wasted spark SparkA, SparkB only
" text = "
For fuel only with a simple tach input signal (i.e. not a 60-2 wheel) turn" text = "off all ignition types and spark outputs
" text = "If you are running a multi-toothed wheel like 36-1, 60-2, 24/2 etc. you have to" text = "configure the wheel decoder as if you were running spark and set a minimum of SparkA" text = "
" text = "Choose I/O pin usage.
" text = "FIdle = usually idle control
" text = " previously it has been used as spark output
" text = "
" text = "LED17/D14 is prefferred SparkA output
" text = "Spark outputs must be used in sequence, i.e. for two outputs you must use A,B
" 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 = "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." text = " 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" text = " to BUILT INTO MAF." text = "
" text = "False trigger protection should always be set to Enabled, unless you are using the" text = "trigger logging feature. Whilst logging triggers it can be handy to disable the" text = "protection so that all triggers (including noise) gets logged" 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" text = " a constant barometric correction sensor." text = "
" text = "A way to gain Constant Baro Correction when in normal speed density mode is by" text = " fitting an extra MAP sensor to input X7 (JS5 V3.0) The MAP sensor MUST be the" text = " 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 = 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 braking" text = " 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 " text = "first option, the pump will only be primed if the priming pulsewidth setting " text = "is greater than zero. If you select the latter option, Always, the pump will " text = "be primed regardless of your priming pulsewidth. You will most likely want to " text = "use Always as it will get your fuel pressure up before cranking, but you don't " text = "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" text = "fired. If you select Power Up, a priming pulse will be fired immediately upon " text = "turning on the ignition. If you select Twice, one priming pulse will be fired " text = "when you first key the ignition on and the second pulse will be fired after a " text = "second has passed. If you select After 2 Secs, there will be one priming pulse " text = "two seconds after turning on the ignition.
" text = "The first option was in the original stock code, however, it will not " text = "necessarily work for a cold-start because there there may not already be fuel " text = "pressure in the rail when you turn the ignition on. The other two options are " text = "just different methods of firing the priming pulse. If you select Twice, then " text = "there will most likely be no" text = "fuel injected on the first pulse, unless there is already fuel pressure in the " text = "fuel rail, and then there sould be fuel injected on the next pulse. If you " text = "select the After 2 Secs option, it will give the fuel pump time to build up " text = "pressure. With that option, however, remember that if you try and start the " text = "car before allowing two seconds to elapse, no priming pulse will ever be " text = "injected.
" text = "
" text = "PRIMING PW SOURCE
" text = "There are two options for the Priming PW Source. You can either select " text = "Standard Prime which will inject a fixed amount of fuel as specified in the " text = "Standard Priming PW box, or you can select Priming PW Table which will have " text = "your priming PW be based off the Cranking/Priming PW Table. If you would " text = "like more control over your priming pulsewidths for varying temperatures," text = "then select Priming PW Table and the values specified in the " text = "Cranking/Priming PW Table will be used as the priming pulsewidth for the " text = "given temperature.
" text = "
" text = "STANDARD PRIMING PW
" text = "If you selected Standard Prime for the Priming PW Source, then this is where " text = "you select how long the injectors will stay open when the priming pulse is " text = "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 " text = "the Cranking/Priming PW Table during cranking. CLT Only uses the coolant " text = "temperature and is the original Megasquirt option. This is what most people " text = "use and if you have" text = "a standard setup with a coolant sensor, this is most likely what you will " text = "want to use. If you would like to use the manifold temperature instead, " text = "select MAT Only. You can also select CLT, MAT Average which uses an average " text = "of the two temperatures.
" text = "
" text = "CRANKING/PRIMING PW TABLE
" text = "In older versions of the MegaSquirt firmware, the cranking pulsewidth was " text = "handled by a linear interpolation between a high and low temperature pair. " text = " A linear curve was not necessarily optimal for some people so now you have " text = "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, " text = "use those as your high and low values in the Cranking/Priming PW Table and then " text = "guess the values in between. Then, when you start your car, you can adjust the " text = "pulsewidth values for the various temperatures that yield the most reliable and " text = "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 " text = "or when it is running. A good starting point would be 300 as most engines " text = "crank around 200 RPM; the rule of thumb being about 100 RPM higher than your " text = "actual cranking RPM. Do not set this too high because if your RPM dips due " text = "to a low idle or a slight stall it will make the MegaSquirt think it is " text = "cranking and also reinitiate the afterstart" text = "enrichment period. Set it too low and it will try and use the VE table for " text = "crank pulsewidths instead of the Cranking/Priming PW Table, which is not " text = "good either.
" text = "
" text = "TPS VALUE FOR FLOOD CLEAR
" text = "Sometimes you might want to temporarily stop the injectors from injecting " text = "fuel during cranking to clear a flooded engine. This is achieved by holding " text = "down the gas pedal during cranking. The MegaSquirt needs to know at what " text = "point of gas pedal deflection it should turn off the injectors and a good " text = "starting point would be just before floored.
" text = "To get this value, go to Tools, Calibrate TPS, and push the gas pedal almost " text = "all the way to the floor - about where you think the fuel should be cut off " text = "and hit Get Current. Remember this value and hit CANCEL on the Calibrate " text = "TPS dialog. Insert this value for the TPS Flood Clear. If this value is " text = "set too low then you will not get any fuel during cranking. If you set this " text = "value too high, then you won't be able to press the pedal enough to trigger " text = "the Flood Clear.
" text = "
" text = "If the First Start Enrichment option is set to ON you will have the option " text = "to increase the cranking PW for the first start of the day. Just turn on the " text = "ignition and then pump the throttle 3 times before cranking. If the TPS value " text = "goes above the FLOODCLEAR more than 3 times before you crank the engine then " text = "the cranking PW will be multiplied by the Extra Cranking Fuel Multiplier. So " text = "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 " text = "first attempt to start the motor or if you apply the throttle past the " text = "FLOODCLEAR setting. This is to assist starting a motor that requires " text = "additional fuel to start only on the first start after sitting a long time. " text = "If the engine fails to start on the first attempt, the First Start Enrichment " text = "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 " text = "need tweeking
" text = "in order to get the engine to start and run without restarting it several " text = "times from cold.
" text = "The reason is felt that the after start and cranking enrichments dont follow " text = "temperature in a
" text = "linear format. So if you find this is the case you can use this table to " text = "tweek areas where it
" text = "is difficult to start. It has been found that the areas for concern are around " text = "32F (0C) " text = "
" text = "
" text = "After Start Enrich Counter is the length of time in Seconds or engine cycles " text = "that the
" text = "after start enrich runs for. The percentage added is decayed down to zero as " text = "the time expires " text = "
" text = "
" text = "Set ASE Mode to FIXED for a timed period of ASE that does not decay, after " text = "the timer the ASE will
" text = "then decay as usual during the TOTAL ASE time period thats left. This has a " text = "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 " text = "initial start where the
" text = "map drops quickly from around 100KPa to the tickover KPa. This is held during " text = "the FIXED time period." text = "The FIXED period is a period of time at the start of the TOTAL ASE time. " text = "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. " text = "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 " text = "Air Temp Sensor. There have been a few instances where the air temp is more " text = "affected by the coolant temp at low manifold pressures or Throttle positions " text = "rather than the entering air temp as measured at the MAT. In this case it was " text = "found that the engine could run lean for the same air temp depending on the " text = "coolant temperature. To help TUNE this we have added Coolant Correction " text = "percentage.
" text = "With this function enabled the correction percentage is interpolated from the " text = "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 " text = "value is where the coolant correction is started to be removed, and the " text = "correction End position is where there will no longer be any coolant correction. " text = "The coolant correction is interpolated between these 2 points. At engine speeds " text = "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 " text = "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 " text = "more realistic measurement of density." text = "
" text = "So if start is 3000rpm and end is 6000, and correction is 150%, then at 3000rpm " text = "correction will be 150%, at 4500rpm correction will be 125% and at 6000rpm " text = "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
" help = OpenLoopHelp, "Open Loop Mode" text = "You can turn off closed loop oxygen sensor monitoring above a TPS position" text = "or kpa value.
" text = "The aim of this is so that only the VE table is used to control fuelling, typically" text = "at full throttle/load conditions" help = TachoHelp, "Tacho Output pin" text = "When running coilpacks or COP, many people have a problem getting a signal to" text = "run their tachometer. This option sends a pulse on a chosen output for each" text = "tach event. There is NO error checking, so you must make sure that the chosen" text = "pin is not already being used for something else.
" text = "You will also need to add a small transistor driver circuit" help = DwellHelp, "Dwell control" text = "If you use direct coil control (VB921) or a non-smart dwell ignition module" text = "it is VITAL that you enable dwell control with the correct spark invert/non-invert setting" text = "The dwell numbers given are get-you-going numbers but will need adjusting.
" text = "If your ignition driver/coil are getting warm or hot then the dwell is too high
" text = "Min discharge is the time the coil is allowed to spark before charging starts again.
" text = "
" text = "Some Bosch ignition modules are smart-dwell and need the 75% setting instead of true dwell" help = Stim4WHelp, "Stim for wheel" text = "This option is for toothed wheel users to test their Megasquirt on the bench using" text = "the stimulator where the correct input signal is unavailable.
" text = "
" text = "DO NOT use on the real engine or you will flood the engine with fuel" help = egoHelp, "Exhaust gas settings" text = "These are the basic settings for EGO correction where a narrowband or wideband" text = "oxygen sensor automatically adjusts the mixture as you drive to a target value" text = "the more advanced settings are through the Target AFR system which can only" text = "be used with a Wideband
" text = "Refer to the Megamanual for basic EGO settings as these remain much the same as" text = "standard MS1 code" ;------------------------------------------------------------------------------- [CurveEditor] curve = clt_IATCorrC, "Coolant corrected Air Density, see Settings", 9 topicHelp = airdenHelp columnLabel = "Temp", "Offset" xBins = IATCTemp, coolant yBins = IATCorS gauge = cltGauge #if CELSIUS xAxis = -40, 100, 15 #else xAxis = -40, 220, 14 #endif yAxis = 50, 150, 11 [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)" 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)" 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)" #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 - see settings", 9 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 deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0 baroADCGauge = baroADC, "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 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 baroGauge = barometer, "Barometer", "kPa", 60, 110, 0, 20, 200, 245, 0, 0 barocorrGauge = baroCorrection, "baro correction", "%", 0, 120, -1, -1, 999, 999, 0, 0 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 bcDCGauge = bcDC, "Boost Control DC", "%", 0, 100, -1, -1 999, 999, 0, 0 idleDCGauge = idleDC, "Idle DC", "%", 0, 100, -1, -1 999, 999, 0, 0 RealDutyGauge1 = dutyCy1Real, "Fuel Delivery 1", "Flow", 0, 75, -1, -1, 75, 75, 1, 1 RealDutyGauge2 = dutyCy2Real, "Fuel Delivery 2", "Flow", 0, 75, -1, -1, 75, 75, 1, 1 ;------------------------------------------------------------------------------- [FrontPage] #if NARROW_BAND_EGO egoLEDs = 0.0, 1.0, 0.5 ; NB settings. #else ; If you reverse these range values as you see below, then the LED ; bar will work as you expect, high on the right, low on the left. egoLEDs = 4.0, 1.0, 2.5 ; WB settings. #endif ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 ;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 ; = expression, off-label, on-label, off-bg, off-fg, on-bg, on-fg 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 && (( engine & 3 ) != 1) }, "", "FLOOD CLEAR", white, black, red, black ; indicator = { portc & 0b00010000 }, "Trig2", "Trig2", white, black, green, black ; indicator = { squirt & 0b01000000}, "BC ON", "BC OFF", 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. ;;gives error 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] deadValue = { 0 } ; Convenient unchanging value. ochGetCommand = "R" ; was "a" and before that "A" ochBlockSize = 39 ; 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 bcDC = scalar, U08, 38, "%", 0.3922, 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(fuelADC, "WBafr100Zeit.inc") / 100.0 } afr2 = { lambda * 14.7 } #elif INNOVATE_LC1_DEFAULT lambda2 = { fuelADC/255.0 + 0.5 } 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") } barometer = { (baroADC + 1.53) * 1.213675 } map = { (mapADC + 1.53) * 1.213675 } #elif MPXH6400A ; barometer = { table(baroADC, "kpafactor4250.inc") } barometer = { (baroADC + 2.147) * 1.6197783 } 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 } ; User defined Opening Time for Real Duty Cycle, enter your opening time and select gauge RealDuty1 or 2 Open_Time1 = {1.0} Open_Time2 = {1.0} InjectorRating1 = {100} ;Nom Injector flow rating Injector 1 InjectorRating2 = {100} ;Nom Injector flow rating Injector 2 dutyCy1Real = { rpm < 100 ? 0 : InjectorRating1*nSquirts1/altDiv1*(pulseWidth1-Open_Time1)/cycleTime1 } dutyCy2Real = { rpm < 100 ? 0 : InjectorRating2*nSquirts2/altDiv2*(pulseWidth2-Open_Time2)/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 } iTimefull = { (iTimeX*65536)+ iTime } RpmHitmp = { iTimefull > 0 ? (60000000 *(2.0-twoStroke1)) / (iTimefull * nCylinders1) : 0 } ; get rid of the 1 or 2 rpm display that seems to worry some users RpmHiRes = { RpmHitmp > 20 ? RpmHitmp : 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 ; -------------- ---------- ----- ------ ;change the next line to #set if you still want to use the older logviewer #unset MSLVV_COMPATIBLE #if MSLVV_COMPATIBLE entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpm100, "RPM", int, "%d" entry = map, "MAP", int, "%d" entry = throttle, "TP", int, "%d" entry = egoVoltage, "O2", float, "%.3f" entry = mat, "MAT", float, "%.1f" entry = coolant, "CLT", float, "%.1f" entry = engine, "Engine", int, "%d" entry = egoCorrection, "Gego", int, "%d" entry = airCorrection, "Gair", int, "%d" entry = warmupEnrich, "Gwarm", int, "%d" entry = baroCorrection, "Gbaro", int, "%d" entry = gammaEnrich, "Gammae", int, "%d" entry = accDecEnrich, "TPSacc", int, "%d" entry = veCurr1, "Gve", int, "%d" entry = pulseWidth1, "PW", float, "%.1f" entry = veCurr2, "Gve2", int, "%d" entry = pulseWidth2, "PW2", float, "%.1f" entry = dutyCycle1, "DutyCycle1", float, "%.1f" entry = dutyCycle2, "DutyCycle2", float, "%.1f" ; Last three are for MSLVV compatibility, but we dont use these, we use the ; three underneath. entry = pulseWidth2, "UserData1", int, "%d" entry = veCurr2, "UserData2", int, "%d" entry = idleDC, "UserData3", int, "%d" #else ; if using the newer log viewer we have no such limits on fields - so do lots entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpm100, "RPM/100", int, "%d" entry = map, "MAP", int, "%d" entry = throttle, "TP", int, "%d" entry = egoVoltage, "O2", float, "%.3f" entry = mat, "MAT", float, "%.1f" entry = coolant, "CLT", float, "%.1f" entry = engine, "Engine", int, "%d" entry = egoCorrection, "Gego", int, "%d" entry = airCorrection, "Gair", int, "%d" entry = warmupEnrich, "Gwarm", int, "%d" entry = baroCorrection, "Gbaro", int, "%d" entry = gammaEnrich, "Gammae", int, "%d" entry = accDecEnrich, "TPSacc", int, "%d" entry = veCurr1, "Gve", int, "%d" entry = pulseWidth1, "PW", float, "%.1f" entry = veCurr2, "Gve2", int, "%d" entry = pulseWidth2, "PW2", float, "%.1f" entry = dutyCycle1, "DutyCycle1", float, "%.1f" entry = dutyCycle2, "DutyCycle2", float, "%.1f" entry = pulseWidth2, "pulseWidth2", int, "%d" entry = veCurr2, "veCurr22", int, "%d" entry = idleDC, "idleDC", int, "%d" entry = bcDC, "BCDuty3", int, "%d" entry = advSpark, "Spark Angle", int, "%d" entry = egttemp, "EGT", int, "%d" entry = fuelpress, "Fuel Press", int, "%d" entry = KnockDeg, "Knock", int, "%d" entry = RpmHiRes, "RPM", int, "%d" entry = barometer, "barometer", int, "%d" entry = porta, "porta", int, "%d" entry = portb, "portb", int, "%d" entry = portc, "portc", int, "%d" entry = portd, "portd", 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" #endif