;------------------------------------------------------------------------------- #unset CAN_COMMANDS [MegaTune] MTversion = 2.25 ; MegaTune itself; needs to match exec version. queryCommand = "Q" ;signature = 20 signature = "speeduino 201702-dev" versionInfo = "S" ; Put this in the title bar. ;[TunerStudio] ; iniSpecVersion = 3.24 ;------------------------------------------------------------------------------- [SettingGroups] ; the referenceName will over-ride previous, so if you are creating a ; settingGroup with a reference name of lambdaSensor, it will replace the ; setting group defined in the settingGroups.xml of the TunerStudio config ; folder. If is is an undefined referenceName, it will be added. ; keyword = referenceName, DisplayName ;settingGroup = boostUnits, "Boost table units" ;settingOption = DEFAULT, "kPa" ;settingOption = BOOSTPSI, "PSI" [PcVariables] ; valid types: boolean, double, int, list ; ; no offset as they are local variables. ; entry format the same as Constants, except there is no offset. ; arrays are not yet supported. ; name = class, type, shape, units, scale, translate, lo, hi, digits ; name = type, min, max; ; ; type List: value will be index. rpmhigh = scalar, U16, "rpm", 1, 0, 0, 30000, 0 rpmwarn = scalar, U16, "rpm", 1, 0, 0, 30000, 0 rpmdang = scalar, U16, "rpm", 1, 0, 0, 30000, 0 [Constants] ;---------------------------------------------------------------------------- ; Constants Definition ; -------------------- ; ; Scalar Values ; ------------- ; The scaling and translation values are used as follows: ; msValue = userValue / scale - translate ; userValue = (msValue + translate) * scale ; ; ; Temperatures are fine, check out the Fielding IAC example (fastIdleT). ; ; Array Values ; ------------ ; Arrays are specified just like scalars, except that they have a "shape" ; entry in the fourth parameter. The shape allows you to define lists or ; tables, for example [8] defines a list with eight values and [2x4] defines ; a table with eight values (two rows and four columns). Tables may be ; stored in either "X-" or "Y-order." X-order means that memory is layed ; out like. ; ; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]... ; ; Y-order would be ; ; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]... ; ; To use the TableEditor, you must define two lists and a table, and ; the lengths of the lists must correspond to the shape of the table. ; ; Bit Fields ; ---------- ; Bits are numbered 0-7, the rightmost being bit zero. The basic ; data word that stores bit fields must be unsigned. ; ; You need NOT supply the correct number of labels matching the ; number of bits you've specified (one bit requires 2 values, two ; bits requires 4 values and so on). If you neglect to supply enough ; labels, they will be synthesized using the sequence "1", "2" and so ; on based upon their position in the sequence (the cltType and matType ; will end up with identical lists). ; ; If you specify a label as "INVALID" (all upper case), then it will ; not be displayed in the combo box, so you can leave out values that ; make no sense. ; ;---------------------------------------------------------------------------- endianness = little nPages = 10 burnCommand = "B" pageSize = 288, 64, 288, 64, 288, 64, 64, 160, 192, 128 pageActivationDelay = 10 pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012" pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" pageValueWrite = "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" ; pageChunkWrite = "" ; No chunk write for standard MS blockingFactor = 2048 tableBlockingFactor = 2048 delayAfterPortOpen=1000 ;validateArrayBounds = true blockReadTimeout = 2000 ;tsWriteBlocks = off ;writeBlocks = off interWriteDelay = 10 ;Page 1 is the fuel map and axis bins only page = 1 ; 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 veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 #if SPEED_DENSITY ;mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0 mapBins = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N tpsBins = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #elif AIR_FLOW_METER #error "Speeduino does not support MAF" ;#exit #endif ;-------------------------------------------------- ;Start Page 2 ;Page 2 is all general settings (Previously part of page 1) ;-------------------------------------------------- page = 2 unused2-1 = scalar, U08, 0, "ms", 0.1, 0.0, 0.0, 25.5, 1 unused2-2 = scalar, U08, 1, "ms", 0.1, 0.0, 0.0, 25.5, 1 asePct = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0 aseCount = scalar, U08, 3, "s", 1.0, 0.0, 0.0, 255, 0 wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 crankingPct= scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0 pinLayout = bits, U08, 15, [0:7], "Speeduino v0.1", "Speeduino v0.2", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NA6 MX5 PNP", "Turtana PCB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Plazomat I/O 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Daz V6 Shield 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" tachoPin = bits, U08, 16, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" tachoDiv = bits, U08, 16, [6:7], "Normal", "Half", "INVALID", "INVALID" tdePct = scalar, U08, 17, "ms", 0.1, 0.0, 0.0, 25.5, 1 taeColdA = scalar, U08, 18, "ms", 0.1, 0.0, 0.0, 25.5, 1 tpsThresh = scalar, U08, 19, "%/s", 1.0, 0.0, 0.0, 255, 0 taeTime = scalar, U08, 20, "ms", 10, 0.0, 0.0, 2550, 0 ; Display (Options for what the display is showing) display = bits, U08, 21, [0:2], "Unused", "Adafruit 128x32", "Generic 128x32", "Adafruit 128x64", "Generic 128x64", "INVALID", "INVALID", "INVALID" display1 = bits U08, 21, [3:5], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" display2 = bits U08, 21, [6:7], "O2", "Voltage", "CPU", "Mem" display3 = bits U08, 22, [0:2], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" display4 = bits U08, 22, [3:4], "O2", "Voltage", "CPU", "Mem" display5 = bits U08, 22, [5:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" displayB1 = bits U08, 23, [0:3], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" displayB2 = bits U08, 23, [4:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" reqFuel = scalar, U08, 24, "ms", 0.1, 0.0, 0.0, 25.5, 1 divider = scalar, U08, 25, "", 1.0, 0.0 alternate = bits, U08, 26, [0:0], "Simultaneous", "Alternating" multiplyMAP= bits, U08, 26, [1:1], "No", "Yes" includeAFR = bits, U08, 26, [2:2], "No", "Yes" unused2-26d= bits, U08, 26, [3:3], "No", "Yes" unused2-26e= bits, U08, 26, [4:4], "No", "Yes" unused2-26f= bits, U08, 26, [5:5], "No", "Yes" unused2-26g= bits, U08, 26, [6:6], "No", "Yes" indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled" injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1 inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0 inj2Ang = scalar, U16, 30, "deg", 1.0, 0.0, 0.0, 360, 0 inj3Ang = scalar, U16, 32, "deg", 1.0, 0.0, 0.0, 360, 0 inj4Ang = scalar, U16, 34, "deg", 1.0, 0.0, 0.0, 360, 0 ; Config1 mapSample = bits, U08, 36, [0:1], "Instantaneous", "Cycle Average", "Cycle Minimum", "INVALID" twoStroke = bits, U08, 36, [2:2], "Four-stroke", "Two-stroke" injType = bits, U08, 36, [3:3], "Port", "Throttle Body" nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" ; Config2 cltType = bits, U08, 37, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3" matType = bits, U08, 37, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3" nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" ; Config3 engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire" flexEnabled= bits, U08, 38, [1:1], "Off", "On" algorithm = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" baroCorr = bits, U08, 38, [3:3], "Off", "On" injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential" canEnable = bits, U08, 38, [6:6], "Disable", "Enable" unused2-38h= bits, U08, 38, [7:7], "No", "Yes" primePulse = scalar, U08, 39, "ms", 0.1, 0.0, 0.0, 25.5, 1 dutyLim = scalar, U08, 40, "%", 1.0, 0.0, 0.0, 100.0, 0 flexFreqLow = scalar, U08, 41, "Hz", 1.0, 0.0, 0.0, 250.0, 0 flexFreqHigh = scalar, U08, 42, "Hz", 1.0, 0.0, 0.0, 250.0, 0 boostMaxDuty = scalar, U08, 43, "%", 1.0, 0.0, 0.0, 100.0, 0 tpsMin = scalar, U08, 44, "ADC", 1.0, 0.0, 0.0, 255.0, 0 tpsMax = scalar, U08, 45, "ADC", 1.0, 0.0, 0.0, 255.0, 0 mapMin = scalar, U08, 46, "kpa", 1.0, 0.0, 0.0, 255.0, 0 mapMax = scalar, U16, 47, "kpa", 1.0, 0.0, 0.0, 25500, 0 fpPrime = scalar, U08, 49, "s", 1.0, 0.0, 0.0, 255.0, 0 stoich = scalar, U08, 50, ":1", 0.1, 0.0, 0.0, 25.5, 1 oddfire2 = scalar, U16, 51, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) flexFuelLow = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 250.0, 0 flexFuelHigh = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 250.0, 0 flexAdvLow = scalar, U08, 59, "Deg", 1.0, 0.0, 0.0, 250.0, 0 flexAdvHigh = scalar, U08, 40, "Deg", 1.0, 0.0, 0.0, 250.0, 0 iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 boostMinDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles for boost control ;-------------------------------------------------- ;Start Ignition table (Page 3) ;-------------------------------------------------- page = 3 advTable1 = array, U08, 0,[16x16], "deg", 1.0, 0.0, 0.0, 255.0, 0 rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY mapBins2 = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N tpsBins2 = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #elif AIR_FLOW_METER #error "Speeduino does not support MAF" #exit #endif ;-------------------------------------------------- ;Start Page 4 ;These are primarily ignition related settings (Previously part of page 2) ;-------------------------------------------------- page = 4 TrigAng = scalar, S16, 0, "Deg", 1, 0, -360, 360, 0 FixAng = scalar, U08, 2, "Deg", 1, 0, 0, 80, 0 CrankAng = scalar, U08, 3, "Deg", 1, 0, -10, 80, 0 TrigAngMul = scalar, U08, 4, "", 1, 0, 0, 88, 0 ; Multiplier for tooth counts that don't evenly divide into 360 TrigEdge = bits, U08, 5,[0:0], "Leading", "Trailing" TrigSpeed = bits, U08, 5,[1:1], "Crank Speed", "Cam Speed" IgInv = bits, U08, 5,[2:2], "Going Low", "Going High" oddfire = bits, U08, 5,[3:3], "No", "Yes" TrigPattern= bits, U08, 5,[4:7], "Missing Tooth", "Basic Distributor", "Dual Wheel", "GM 7X", "4G63 / Miata", "GM 24X", "Jeep 2000", "Audi 135", "Honda D17", "Miata 99-05", "Mazda AU", "Non-360 Dual", "Nissan 360", "INVALID", "INVALID", "INVALID" TrigEdgeSec= bits, U08, 6,[0:0], "Leading", "Trailing" fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" unused4-6h = bits, U08, 6,[7:7], "No", "Yes" unused4-7 = scalar, U08, 7, "ADC", 1, 0, 0, 255, 0 IdleAdvRPM = scalar, U08, 8, "RPM", 100, 0, 0, 1200, 0 #if CELSIUS IdleAdvCLT = scalar, U08, 9, "C", 1, -40, -40, 102, 1 #else IdleAdvCLT = scalar, U08, 9, "F", 1.8, -22.23, -40, 215, 0 #endif IdleDelayTime = scalar, U08, 10, "sec", 1, 0, 0, 5, 0 StgCycles = scalar, U08, 11, "cycles", 1, 0, 0, 255, 0 ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ;Dwell control ;running dwell variable railed to 8 - who needs more than 8ms? dwellcont = bits, U08, 12, [0:0], "INVALID", "Dwell control" useDwellLim= bits, U08, 12, [1:1], "Off", "On" sparkMode = bits, U08, 12, [2:3], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential" dfcoEnabled= bits, U08, 12, [4:4], "Off", "On" TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive" ignCranklock=bits, U08, 12, [7:7], "Off", "On" dwellcrank = scalar, U08, 13, "ms", 0.1, 0, 0, 25, 1 dwellrun = scalar, U08, 14, "ms", 0.1, 0, 0, 8, 1 numteeth = scalar, U08, 15, "teeth", 1.0, 0.0, 0.0, 255, 0 onetwo = scalar, U08, 16, "teeth", 1.0, 0.0, 0.0, 255, 0 crankRPM = scalar, U08, 17, "rpm", 100, 0.0, 100, 1000, 0 tpsflood = scalar, U08, 18, "%", 1.0, 0.0, 0.0, 255.0, 0 ;Rev Limits SoftRevLim = scalar, U08, 19, "rpm", 100, 0.0, 100, 25500, 0 SoftLimRetard = scalar, U08, 20, "deg", 1.0, 0.0, 0.0, 80, 0 SoftLimMax = scalar, U08, 21, "s", 0.1, 0.0, 0.0, 25.5, 1 HardRevLim = scalar, U08, 22, "rpm", 100, 0.0, 100, 25500, 0 ;TPS based acceleration enrichment taeBins = array, U08, 23, [ 4], "%/s", 10.0, 0.0, 0.00, 2550.0, 0 taeRates = array, U08, 27, [ 4], "%", 1.0, 0.0, 0.00, 255.0, 0 ; 4 bytes ;WUE Bins (Needed somewhere to put these #if CELSIUS wueBins = array, U08, 31, [10], "C", 1.0, -40, -40, 102.0, 0 #else wueBins = array, U08, 31, [10], "F", 1.8, -22.23, -40, 215.0, 0 #endif ;Dwell config options dwellLim = scalar, U08, 41, "ms", 1, 0, 0, 32, 0 dwellRates = array, U08, 42, [6], "%", 1.0, 0.0, 0.00, 255.0, 0 ;IAT (Inlet air temp) timing retard #if CELSIUS iatRetBins = array, U08, 48, [ 6], "C", 1.0, 0.0, 0.00, 255.0, 0 #else iatRetBins = array, U08, 48, [ 6], "F", 1.8, 17.77, 0.00, 255.0, 0 ; No -40 degree offset here #endif iatRetRates = array, U08, 54, [ 6], "deg", 1.0, 0.0, 0.00, 255.0, 0 ;Decelleration Fuel Cut Off (DFCO) dfcoRPM = scalar, U08, 60, "RPM", 10.0, 0.0, 100, 2550, 0 dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0 dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0 ;ranking ignition bypass ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" ignBypassPin = bits , U08, 63, [1:6], "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" ;-------------------------------------------------- ;Start AFR page ;-------------------------------------------------- page = 5 afrTable = array, U08, 0,[16x16], "AFR", 0.1, 0.0, 7, 25.5, 1 rpmBinsAFR = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY mapBinsAFR = array, U08, 272,[ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N tpsBinsAFR = array, U08, 272,[ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #elif AIR_FLOW_METER #error "Speeduino does not support MAF" #exit #endif ;-------------------------------------------------- ;Start page 6 ; Page 6 is all settings associated with O2/AFR ;-------------------------------------------------- page = 6 egoAlgorithm= bits , U08, 0, [0:1], "Simple", "INVALID", "PID", "No correction" ; * ( 1 byte) egoType = bits , U08, 0, [2:3], "Disabled", "Narrow Band", "Wide Band", "INVALID" ; egoOption boostEnabled= bits, U08, 0, [4:4], "Off", "On" vvtEnabled = bits, U08, 0, [5:5], "Off", "On" boostCutType= bits, U08, 0, [6:7], "Off", "Spark Only", "Fuel Only","Both" egoKP = scalar, U08, 1, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) egoKI = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) egoKD = scalar, U08, 3, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) #if CELSIUS egoTemp = scalar, U08, 4, "C", 1.0, -40, -40, 102.0, 0 #else egoTemp = scalar, U08, 4, "F", 1.8, -22.23, -40, 215.0, 0 #endif egoCount = scalar, U08, 5, "", 4.0, 0.0, 4.0, 255.0, 0 ; * ( 1 byte) egoDelta = scalar, U08, 6, "%", 1.0, 0.0, 0.0, 255.0, 0 ; * ( 1 byte) egoLimit = scalar, U08, 7, "", 1, 0, 0, 16, 0 ego_min = scalar, U08, 8, "AFR", 0.1, 0.0, 7, 25, 1 ego_max = scalar, U08, 9, "AFR", 0.1, 0.0, 7, 25, 1 ego_sdelay = scalar, U08, 10, "sec", 1, 0, 0, 120, 0 egoRPM = scalar, U08, 11, "rpm", 100, 0.0, 100, 25500, 0 egoTPSMax = scalar, U08, 12, "%", 1, 0, 0, 120, 0 vvtPin = bits , U08, 13, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" unused6-13e = bits, U08, 13, [6:6], "ONE", "INVALID" unused6-13f = bits, U08, 13, [7:7], "ONE", "INVALID" boostPin = bits, U08, 14, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" unused6-14e = bits, U08, 14, [6:6], "ONE", "INVALID" unused6-14f = bits, U08, 14, [7:7], "ONE", "INVALID" brvBins = array, U08, 15, [6], "V", 0.1, 0, 6, 24, 1 ; Bins for the battery reference voltage injBatRates = array, U08, 21, [6], "%", 1, 0, 0, 255, 0 ;Values for injector pulsewidth vs voltage #if CELSIUS airDenBins = array, U08, 27, [9], "C", 1.0, -40, -40, 215, 0 ; Bins for the air density correction curve #else airDenBins = array, U08, 27, [9], "F", 1.8, -22.23, -40, 215, 0 ; Bins for the air density correction curve #endif airDenRates = array, U08, 36, [9], "%", 1.0, 0.0, 0, 255, 0 ; Values for the air density correction curve ; PWM Frequencies boostFreq = scalar, U08, 45, "Hz", 2.0, 0.0, 10, 511, 0 vvtFreq = scalar, U08, 46, "Hz", 2.0, 0.0, 10, 511, 0 idleFreq = scalar, U08, 47, "Hz", 2.0, 0.0, 10, 511, 0 ; Launch Control launchPin = bits , U08, 48, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" launchEnable= bits, U08, 48, [6:6], "No", "Yes" launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0 lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0 lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0 lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0 idleKP = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) idleKI = scalar, U08, 54, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) idleKD = scalar, U08, 55, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0.0, 511.0, 0 boostKP = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostKI = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) boostKD = scalar, U08, 59, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) lnchPullRes = bits, U08, 60, [0:1], "Float" , "Pullup", "INVALID", "INVALID" fuelTrimEnabled= bits, U08, 60, [2:2], "No", "Yes" flatSEnable = bits, U08, 60, [3:3], "No", "Yes" unused6-60e = bits, U08, 60, [4:4], "ONE", "INVALID" unused6-60f = bits, U08, 60, [5:5], "ONE", "INVALID" unused6-60g = bits, U08, 60, [6:6], "ONE", "INVALID" unused6-60h = bits, U08, 60, [7:7], "ONE", "INVALID" ; Flat shift flatSSoftWin = scalar, U08, 61, "rpm", 100, 0.0, 100, 25500, 0 flatSRetard = scalar, U08, 62, "deg", 1.0, 0.0, 0.0, 80, 0 flatSArm = scalar, U08, 63, "rpm", 100, 0.0, 100, 25500, 0 ;-------------------------------------------------- ;Start idle and fan controls (Page 7) ;-------------------------------------------------- page = 7 iacCLValues = array, U08, 0, [10], "RPM", 10.0, 0.0, 0, 2550, 0 iacOLStepVal = array, U08, 10, [10], "Steps", 3, 0, 0, 765, 0 iacOLPWMVal = array, U08, 20, [10], "Duty %", 1.0, 0, 0, 100, 0 #if CELSIUS iacBins = array, U08, 30, [10], "C", 1.0, -40, -40, 215, 0 #else iacBins = array, U08, 30, [10], "F", 1.8, -22.23, -40, 215, 0 #endif iacCrankSteps= array, U08, 40, [4], "Steps", 3, 0, 0, 765, 0 iacCrankDuty = array, U08, 44, [4], "Duty %", 1.0, 0, 0, 100, 0 #if CELSIUS iacCrankBins = array, U08, 48, [4], "C", 1.0, -40, -40, 215, 0 #else iacCrankBins = array, U08, 48, [4], "F", 1.8, -22.23, -40, 215, 0 #endif iacAlgorithm = bits , U08, 52, [0:2], "None", "On/Off", "PWM Open loop", "PWM Closed loop", "Stepper", "INVALID", "INVALID", "INVALID" iacStepTime = bits , U08, 52, [3:5], "1", "2", "3", "4", "5", "6" iacChannels = bits, U08, 52, [6:6], "1", "2" iacPWMdir = bits , U08, 52, [7:7], "Normal", "Reverse" #if CELSIUS iacFastTemp = scalar, U08, 53, "C", 1.0, -40, -40, 215, 0 #else iacFastTemp = scalar, U08, 53, "F", 1.8, -22.23, -40, 215, 0 #endif iacStepHome = scalar, U08, 54, "Steps", 3, 0, 0, 765, 0 iacStepHyster= scalar, U08, 55, "Steps", 1, 0.0, 0.0, 10, 0 ; Begin fan control vairables fanInv = bits, U08, 56, [0:0], "No", "Yes" fanEnable = bits, U08, 56, [1:1], "Off", "On/Off" fanPin = bits , U08, 56, [2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #if CELSIUS fanSP = scalar, U08, 57, "C", 1.0, -40, -40, 215.0, 0 fanHyster = scalar, U08, 58, "C", 1.0, 0.0, 0.0, 40, 0 #else fanSP = scalar, U08, 57, "F", 1.8, -22.23, -40, 215.0, 0 fanHyster = scalar, U08, 58, "F", 1.0, 0.0, 0.0, 40, 0 #endif fanFreq = scalar, U08 , 59, "Hz", 2.0, 0.0, 10, 511, 0 #if CELSIUS fanPWMBins = array, U08, 60, [4], "C", 1.0, -40, -40, 215, 0 #else fanPWMBins = array, U08, 60, [4], "F", 1.8, -22.23, -40, 215, 0 #endif ;-------------------------------------------------- ;Boost and vvt maps (Page 8) ;-------------------------------------------------- page = 8 ;notes for boostTable in PSI~~~There are 6.895 psis to a kPa then x 2 like the kPa ver~~~div atmos. pressure in kPa by 2 and make neg so to subtract instead of add ; #if BOOSTPSI ; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0 ; #else boostTable = array, U08, 0,[8x8], "kPa", 2.0, 0.0, 0, 511, 0 ; #endif rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 vvtTable = array, U08, 80,[8x8], "%", 1.0, 0.0, 0, 100, 0 rpmBinsVVT = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 tpsBinsVVT = array, U08, 152,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 ;-------------------------------------------------- ;Sequential fuel trim tables (Page 9) ;-------------------------------------------------- page = 9 fuelTrim1Table = array, U08, 0,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim1rpmBins = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim2Table = array, U08, 48,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim2rpmBins = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim3Table = array, U08, 96,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim3rpmBins = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif fuelTrim4Table = array, U08, 144,[6x6], "%", 1.0, -128, -50, 50, 0 fuelTrim4rpmBins = array, U08, 180,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0 #if SPEED_DENSITY fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 #elif ALPHA_N fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 #endif ;-------------------------------------------------- ;CANBUS control (Page 10) ;-------------------------------------------------- page = 10 unused10_0 = scalar, U08, 0, "", 1, 0, 0, 255, 0 unused10_1 = scalar, U08, 1, "", 1, 0, 0, 255, 0 unused10_2 = scalar, U08, 2, "", 1, 0, 0, 255, 0 unused10_3 = scalar, U08, 3, "", 1, 0, 0, 255, 0 unused10_4 = scalar, U08, 4, "", 1, 0, 0, 255, 0 unused10_5 = scalar, U08, 5, "", 1, 0, 0, 255, 0 unused10_6 = scalar, U08, 6, "", 1, 0, 0, 255, 0 unused10_7 = scalar, U08, 7, "", 1, 0, 0, 255, 0 unused10_8 = scalar, U08, 8, "", 1, 0, 0, 255, 0 unused10_9 = scalar, U08, 9, "", 1, 0, 0, 255, 0 unused10_10 = scalar, U08, 10, "", 1, 0, 0, 255, 0 unused10_11 = scalar, U08, 11, "", 1, 0, 0, 255, 0 unused10_12 = scalar, U08, 12, "", 1, 0, 0, 255, 0 unused10_13 = scalar, U08, 13, "", 1, 0, 0, 255, 0 unused10_14 = scalar, U08, 14, "", 1, 0, 0, 255, 0 unused10_15 = scalar, U08, 15, "", 1, 0, 0, 255, 0 unused10_16 = scalar, U08, 16, "", 1, 0, 0, 255, 0 unused10_17 = scalar, U08, 17, "", 1, 0, 0, 255, 0 unused10_18 = scalar, U08, 18, "", 1, 0, 0, 255, 0 unused10_19 = scalar, U08, 19, "", 1, 0, 0, 255, 0 unused10_20 = scalar, U08, 20, "", 1, 0, 0, 255, 0 unused10_21 = scalar, U08, 21, "", 1, 0, 0, 255, 0 unused10_22 = scalar, U08, 22, "", 1, 0, 0, 255, 0 unused10_23 = scalar, U08, 23, "", 1, 0, 0, 255, 0 unused10_24 = scalar, U08, 24, "", 1, 0, 0, 255, 0 unused10_25 = scalar, U08, 25, "", 1, 0, 0, 255, 0 unused10_26 = scalar, U08, 26, "", 1, 0, 0, 255, 0 unused10_27 = scalar, U08, 27, "", 1, 0, 0, 255, 0 unused10_28 = scalar, U08, 28, "", 1, 0, 0, 255, 0 unused10_29 = scalar, U08, 29, "", 1, 0, 0, 255, 0 unused10_30 = scalar, U08, 30, "", 1, 0, 0, 255, 0 unused10_31 = scalar, U08, 31, "", 1, 0, 0, 255, 0 unused10_32 = scalar, U08, 32, "", 1, 0, 0, 255, 0 unused10_33 = scalar, U08, 33, "", 1, 0, 0, 255, 0 unused10_34 = scalar, U08, 34, "", 1, 0, 0, 255, 0 unused10_35 = scalar, U08, 35, "", 1, 0, 0, 255, 0 unused10_36 = scalar, U08, 36, "", 1, 0, 0, 255, 0 unused10_37 = scalar, U08, 37, "", 1, 0, 0, 255, 0 unused10_38 = scalar, U08, 38, "", 1, 0, 0, 255, 0 unused10_39 = scalar, U08, 39, "", 1, 0, 0, 255, 0 unused10_40 = scalar, U08, 40, "", 1, 0, 0, 255, 0 unused10_41 = scalar, U08, 41, "", 1, 0, 0, 255, 0 unused10_42 = scalar, U08, 42, "", 1, 0, 0, 255, 0 unused10_43 = scalar, U08, 43, "", 1, 0, 0, 255, 0 unused10_44 = scalar, U08, 44, "", 1, 0, 0, 255, 0 unused10_45 = scalar, U08, 45, "", 1, 0, 0, 255, 0 unused10_46 = scalar, U08, 46, "", 1, 0, 0, 255, 0 unused10_47 = scalar, U08, 47, "", 1, 0, 0, 255, 0 unused10_48 = scalar, U08, 48, "", 1, 0, 0, 255, 0 unused10_49 = scalar, U08, 49, "", 1, 0, 0, 255, 0 unused10_50 = scalar, U08, 50, "", 1, 0, 0, 255, 0 unused10_51 = scalar, U08, 51, "", 1, 0, 0, 255, 0 unused10_52 = scalar, U08, 52, "", 1, 0, 0, 255, 0 unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0 unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0 unused10_55 = scalar, U08, 55, "", 1, 0, 0, 255, 0 unused10_56 = scalar, U08, 56, "", 1, 0, 0, 255, 0 unused10_57 = scalar, U08, 57, "", 1, 0, 0, 255, 0 unused10_58 = scalar, U08, 58, "", 1, 0, 0, 255, 0 unused10_59 = scalar, U08, 59, "", 1, 0, 0, 255, 0 unused10_60 = scalar, U08, 60, "", 1, 0, 0, 255, 0 unused10_61 = scalar, U08, 61, "", 1, 0, 0, 255, 0 unused10_62 = scalar, U08, 62, "", 1, 0, 0, 255, 0 unused10_63 = scalar, U08, 63, "", 1, 0, 0, 255, 0 unused10_64 = scalar, U08, 64, "", 1, 0, 0, 255, 0 unused10_65 = scalar, U08, 65, "", 1, 0, 0, 255, 0 unused10_66 = scalar, U08, 66, "", 1, 0, 0, 255, 0 unused10_67 = scalar, U08, 67, "", 1, 0, 0, 255, 0 unused10_68 = scalar, U08, 68, "", 1, 0, 0, 255, 0 unused10_69 = scalar, U08, 69, "", 1, 0, 0, 255, 0 unused10_70 = scalar, U08, 70, "", 1, 0, 0, 255, 0 unused10_71 = scalar, U08, 71, "", 1, 0, 0, 255, 0 unused10_72 = scalar, U08, 72, "", 1, 0, 0, 255, 0 unused10_73 = scalar, U08, 73, "", 1, 0, 0, 255, 0 unused10_74 = scalar, U08, 74, "", 1, 0, 0, 255, 0 unused10_75 = scalar, U08, 75, "", 1, 0, 0, 255, 0 unused10_76 = scalar, U08, 76, "", 1, 0, 0, 255, 0 unused10_77 = scalar, U08, 77, "", 1, 0, 0, 255, 0 unused10_78 = scalar, U08, 78, "", 1, 0, 0, 255, 0 unused10_79 = scalar, U08, 79, "", 1, 0, 0, 255, 0 unused10_80 = scalar, U08, 80, "", 1, 0, 0, 255, 0 unused10_81 = scalar, U08, 81, "", 1, 0, 0, 255, 0 unused10_82 = scalar, U08, 82, "", 1, 0, 0, 255, 0 unused10_83 = scalar, U08, 83, "", 1, 0, 0, 255, 0 unused10_84 = scalar, U08, 84, "", 1, 0, 0, 255, 0 unused10_85 = scalar, U08, 85, "", 1, 0, 0, 255, 0 unused10_86 = scalar, U08, 86, "", 1, 0, 0, 255, 0 unused10_87 = scalar, U08, 87, "", 1, 0, 0, 255, 0 unused10_88 = scalar, U08, 88, "", 1, 0, 0, 255, 0 unused10_89 = scalar, U08, 89, "", 1, 0, 0, 255, 0 unused10_90 = scalar, U08, 90, "", 1, 0, 0, 255, 0 unused10_91 = scalar, U08, 91, "", 1, 0, 0, 255, 0 unused10_92 = scalar, U08, 92, "", 1, 0, 0, 255, 0 unused10_93 = scalar, U08, 93, "", 1, 0, 0, 255, 0 unused10_94 = scalar, U08, 94, "", 1, 0, 0, 255, 0 unused10_95 = scalar, U08, 95, "", 1, 0, 0, 255, 0 unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0 unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0 unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0 unused10_100 = scalar, U08, 100, "", 1, 0, 0, 255, 0 unused10_101 = scalar, U08, 101, "", 1, 0, 0, 255, 0 unused10_102 = scalar, U08, 102, "", 1, 0, 0, 255, 0 unused10_103 = scalar, U08, 103, "", 1, 0, 0, 255, 0 unused10_104 = scalar, U08, 104, "", 1, 0, 0, 255, 0 unused10_105 = scalar, U08, 105, "", 1, 0, 0, 255, 0 unused10_106 = scalar, U08, 106, "", 1, 0, 0, 255, 0 unused10_107 = scalar, U08, 107, "", 1, 0, 0, 255, 0 unused10_108 = scalar, U08, 108, "", 1, 0, 0, 255, 0 unused10_109 = scalar, U08, 109, "", 1, 0, 0, 255, 0 unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 unused10_114 = scalar, U08, 114, "", 1, 0, 0, 255, 0 unused10_115 = scalar, U08, 115, "", 1, 0, 0, 255, 0 unused10_116 = scalar, U08, 116, "", 1, 0, 0, 255, 0 unused10_117 = scalar, U08, 117, "", 1, 0, 0, 255, 0 unused10_118 = scalar, U08, 118, "", 1, 0, 0, 255, 0 unused10_119 = scalar, U08, 119, "", 1, 0, 0, 255, 0 unused10_120 = scalar, U08, 120, "", 1, 0, 0, 255, 0 unused10_121 = scalar, U08, 121, "", 1, 0, 0, 255, 0 unused10_122 = scalar, U08, 122, "", 1, 0, 0, 255, 0 unused10_123 = scalar, U08, 123, "", 1, 0, 0, 255, 0 unused10_124 = scalar, U08, 124, "", 1, 0, 0, 255, 0 unused10_125 = scalar, U08, 125, "", 1, 0, 0, 255, 0 unused10_126 = scalar, U08, 126, "", 1, 0, 0, 255, 0 unused10_127 = scalar, U08, 127, "", 1, 0, 0, 255, 0 ;------------------------------------------------------------------------------- [ConstantsExtensions] requiresPowerCycle = nCylinders requiresPowerCycle = pinLayout requiresPowerCycle = fanPin requiresPowerCycle = reqFuel requiresPowerCycle = numteeth requiresPowerCycle = onetwo requiresPowerCycle = injOpen requiresPowerCycle = IgInv requiresPowerCycle = fanInv requiresPowerCycle = boostEnabled requiresPowerCycle = vvtEnabled ; requiresPowerCycle = vvtChannels requiresPowerCycle = boostFreq requiresPowerCycle = vvtFreq requiresPowerCycle = idleFreq requiresPowerCycle = sparkMode requiresPowerCycle = launchPin requiresPowerCycle = launchEnable requiresPowerCycle = launchHiLo requiresPowerCycle = flexEnabled requiresPowerCycle = oddfire2 requiresPowerCycle = oddfire3 requiresPowerCycle = oddfire4 requiresPowerCycle = iacCLminDuty requiresPowerCycle = iacCLmaxDuty requiresPowerCycle = boostMinDuty requiresPowerCycle = boostMaxDuty defaultValue = pinLayout, 1 defaultValue = TrigPattern, 0 defaultValue = sparkMode, 0 defaultValue = indInjAng, 0 defaultValue = inj1Ang, 355 defaultValue = inj2Ang, 355 defaultValue = inj3Ang, 355 defaultValue = inj4Ang, 355 defaultValue = nInjectors, 4 defaultValue = dutyLim, 100 defaultValue = mapMin, 10 defaultValue = mapMax, 260 defaultValue = fpPrime, 3 defaultValue = TrigFilter, 0 defaultValue = ignCranklock,0 defaultValue = multiplyMAP, 0 defaultValue = includeAFR, 0 defaultValue = stoich, 14.7 defaultValue = flexEnabled, 0 defaultValue = oddfire2, 0 defaultValue = oddfire3, 0 defaultValue = oddfire4, 0 defaultValue = flexFreqLow, 50 defaultValue = flexFreqHigh,150 defaultValue = flexFuelLow, 100 defaultValue = flexFuelHigh,163 defaultValue = flexAdvLow, 0 defaultValue = flexAdvHigh, 13 defaultValue = fuelPumpPin, 0 defaultValue = fanPin, 0 defaultValue = iacCLminDuty,0 defaultValue = iacCLmaxDuty,100 defaultValue = boostMinDuty,0 defaultValue = boostMaxDuty,100 ;Default pins defaultValue = fanPin, 0 defaultValue = vvtPin, 0 defaultValue = launchPin, 0 defaultValue = boostPin, 0 defaultValue = fuelPumpPin, 0 defaultValue = tachoPin, 0 [Menu] ;---------------------------------------------------------------------------- ; There are five pre-defined values that may be used to define your menus. ; The first four allow access to the "standard" dialog boxes, the last one ; merely draws a separator (horizontal line) in the menu. ; ; std_constants ; std_enrichments ; std_realtime ; std_warmup ; ; std_separator ; ; If you use any of the std_constants, std_enrichments or std_warmup ; editors, they may be optionally suffixed with a page number (only ; useful for multi-page code variants), which causes them to edit the ; specified page. If you leave off the page specifier, they edit logical ; page one as specified in the Constants section. ; ; There are four special menu names, which when used append to the standard ; menus of the same name instead of creating a new one. The menu names ; are "File", "Communications", "Tools" and "Help". ; ;---------------------------------------------------------------------------- menuDialog = main menu = "Settings" ;subMenu = std_injection, "&Constants" subMenu = engine_constants, "Engine Constants" subMenu = injChars, "Injector Characteristics" subMenu = triggerSettings, "&Trigger Setup" ;subMenu = OLED, "OLED Setup" subMenu = airdensity_curve, "IAT Density" menu = "&Tuning" subMenu = std_realtime, "&Realtime Display" subMenu = accelEnrichments, "&Acceleration Enrichment" subMenu = egoControl, "AFR/O2", 3 subMenu = RevLimiterS, "Rev Limits", 2 subMenu = flexFueling, "Flex Fuel", 2 subMenu = veTableDialog, "&VE Table", 0 subMenu = sparkTbl, "&Spark Table", 2 subMenu = afrTable1Tbl, "A&FR Table", 5 subMenu = std_separator subMenu = inj_trimad, "Sequential fuel trim", 9 menu = "&Spark" subMenu = sparkSettings, "&Spark Settings" subMenu = sparkTbl, "Spark Table", 2 ;subMenu = IdleAdvance, "Idle Advance settings", ;subMenu = Knock, "Kn&ock System" subMenu = dwellSettings, "Dwell settings" subMenu = dwell_correction_curve, "Dwell Compensation" subMenu = iat_retard_curve, "&IAT Retard" ;subMenu = wheelsim, "Stim for wheel" ;subMenu = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire } menu = "&Starting/Idle" subMenu = crankPW, "Cranking Settings" subMenu = warmup, "Warmup Enrichment" subMenu = std_separator subMenu = idleSettings, "Idle Control" subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { iacAlgorithm == 3 } subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 } subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 } subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 || iacAlgorithm == 5 } subMenu = iacStepCrank_curve, "Idle - Stepper Motor Cranking", 7, { iacAlgorithm == 4 || iacAlgorithm == 5 } menu = "&Accessories" subMenu = fanSettings, "Thermo Fan" subMenu = LaunchControl, "Launch Control / Flat Shift" subMenu = fuelpump, "Fuel Pump" subMenu = std_separator subMenu = boostSettings, "Boost Control" subMenu = boostTbl, "Boost target", 8, { boostEnabled } subMenu = std_separator subMenu = vvtSettings, "VVT Control" subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled } subMenu = std_separator subMenu = tacho, "Tacho Output" subMenu = std_separator subMenu = canIO, "Canbus Interface" menuDialog = main menu = "T&ools" subMenu = mapCal, "Calibrate MAP" ;subMenu = battcalib, "Calibrate Battery Voltage" ;subMenu = std_separator ;---------------------------------------------- ;subMenu = flash_unlock, "Un/Lock calibrations" subMenu = std_ms2gentherm, "Calibrate Thermistor Tables", 0 ;, {flashlock} subMenu = std_ms2geno2, "Calibrate &AFR Table", 0;, {flashlock} menuDialog = main menu = "3D &Tuning Maps" subMenu = veTable1Map, "Fuel Table" subMenu = sparkMap, "Spark Table", 3 subMenu = afrTable1Map, "AFR Target Table" menu = "Help" subMenu = helpGeneral, "Speeduino Help" ;------------------------------------------------------------------------------- [SettingContextHelp] ; constantName = "Help Text" ; tool tips tooltips ;Ensure all settings are defined as some MS2/BG words shipped with TS are not applicable. nCylinders = "The number of cylinders in your engine." alternate = "" engineType = "Most engines are Even Fire. Typical odd-fire engines are V-twin, some V4, Vmax, some V6, V10." twoStroke = "Four-Stroke (most engines), Two-stroke." nInjectors = "Number of primary injectors." mapSample = "The method used for calculating the MAP reading\nFor 1-2 Cylinder engines, Cycle Minimum is recommended.\nFor more than 2 cylinders Cycle Average is recommended" stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" injLayout = "The injector layout and timing to be used. Options are: \n 1. Paired - 2 injectors per output. Outputs active is equal to half the number of cylinders. Outputs are timed over 1 crank revolution. \n 2. Semi-sequential: Same as paired except that injector channels are mirrored (1&4, 2&3) meaning the number of outputs used are equal to the number of cylinders. Only valid for 4 cylinders or less. \n 3. Banked: 2 outputs only used. \n 4. Sequential: 1 injector per output and outputs used equals the number of cylinders. Injection is timed over full cycle. " TrigPattern = "The type of input trigger decoder to be used." numteeth = "Number of teeth on Primary Wheel." TrigSpeed = "Primary trigger speed." onetwo = "Number of Missing teeth on Primary Wheel." TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor." TrigAngMul = "A multiplier used by non-360 degree tooth wheels (i.e. Wheels where the tooth count doesn't divide evenly into 360. Usage: (360 * ) / tooth_count = Whole number" StgCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing." TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing." TrigFilter = "Tuning of the trigger filter algorithm. The more aggressive the setting, the more noise will be removed, however this increases the chance of some true readings being filtered out (False positive). Medium is safe for most setups. Only select 'Aggressive' if no other options are working" sparkMode = "Wasted Spark: Ignition outputs are on the channels <= half the number of cylinders. Eg 4 cylinder outputs on IGN1 and IGN2.\nSingle Channel: All ignition pulses are output on IGN1.\nWasted COP: Ignition pulses are output on all ignition channels up to the number of cylinders. Eg 4 cylinder outputs on all ignition channels. No valid for >4 cylinders" IgInv = "Whether the spark fires when the ignition sign goes high or goes low. Most ignition systems 'Going Low' but please verify this as damage to coils can result from the incorrect selection" fanInv = "" fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5" taeTime = "The duration of the acceleration enrichment" iacChannels = "The number of output channels used for PWM valves. Select 1 for 2-wire valves or 2 for 3-wire valves." iacStepTime = "Time between each stepper motor step.\nIncrease this if the motor appears to behave intermittently." iacStepHome = "On startup the stepper motor moves this many steps to return to its home position. Set this value to a few more than the actual number to ensure the motor has returned to its full position." iacStepHyster = "The minimum number of steps to move in any one go." iacAlgorithm = "Selects method of idle control.\nNone = no idle control valve.\nOn/Off valve.\nPWM valve (2,3 wire).\nStepper Valve (4,6,8 wire)." iacPWMdir = "Normal PWM valves increase RPM with higher duty. If RPM decreases with higher duty then select Reverse" iacCLminDuty= "When using closed loop idle control, this is the minimum duty cycle that the PID loop will allow. Combined with the maximum value, this specifies the working range of your idle valve iacCLmaxDuty= "When using closed loop idle control, this is the maximum duty cycle that the PID loop will allow. Combined with the minimum value, this specifies the working range of your idle valve oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1" oddfire3 = "The ATDC angle of channel 3 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 2)" oddfire4 = "The ATDC angle of channel 4 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 3)" dfcoRPM = "The RPM above which DFCO will be active. Typically set a few hundred RPM above maximum idle speed" dfcoHyster = "Hysteresis for DFCO RPM. 200-300 RPM is typical for this, however a higher value may be needed if the RPM is fluctuating around the cutout speed" dfcoTPSThresh= "The TPS value below which DFCO will be active. Typical value is 5%-10%, but higher may be needed if TPS signal is noisy" launchPin = "The ARDUINO pin that the clutch switch is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" ignBypassPin = "The ARDUINO pin that the ignition bypass is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" ignBypassEnable = "If turned on, a ground signal will be output during cranking on the specified pin. This is used to bypass the Speeduino ignition control during cranking." ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved." multiplyMAP = "If enabled, the MAP reading is included directly into the pulsewidth calculation. This results in a flatter VE table that can be easier to tune in some instances. VE table must be retuned when this value is changed." includeAFR = "When enabled, the current AFR reading is incorporated directly in the pulsewidth calculation as a percentage of the current target ratio. VE table must be retuned when this value is changed. " flexEnabled = "Turns on readings from the Flex sensor and enables the below adjustments" flexFreqLow = "The frequency of the sensor at 0% ethanol (50Hz for standard GM/Continental sensor)" flexFreqHigh = "The frequency of the sensor at 100% ethanol (150Hz for standard GM/Continental sensor)" flexFuelLow = "Fuel % to be used for the lowest ethanol reading (Typically 100%. ie No adjustment)" flexFuelHigh = "Fuel % to be used for the highest ethanol reading (Typically 163% for 100% ethanol)" flexAdvLow = "Additional advance (in degrees) at lowest ethanol reading (Typically 0)" flexAdvHigh = "Additional advance (in degrees) at highest ethanol reading (Typically 10-20 degrees)" flatSArm = "The RPM switch point that determines whether an eganged clutch is for launch control or flat shift. Below this figure, an engaged clutch is considered to be for launch, above this figure an active clutch input will be considered a flat shift. This should be set at least several hundred RPM above idle" flatSSoftWin= "The number of RPM below the flat shift point where the softlimit will be applied (aka Soft limit window). Recommended values are 200-1000" flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window" [UserDefined] ; Enhanced TunerStudio dialogs can be defined here ; MegaTune will over look this section ; These dialogs will over-ride those in the UserDefined Section ; User defined ar loaded first, then if one by the same name is defiend here, ; it will replace the MegaTune definition ; dialog = name, Title, Layout ; ; valid options for layout are xAxis, yAxis, border ; for an xAxis, each field added will be added from right to left ; A yAxis layout will add fields from top to bottom ; A border layout will expect an additional constraint to determine placement ; valid border constraints are north, South, East, West, Center ; all 5 do not need to be filled. ; The field name can be either a constant reference, or a reference to another ; dialog which will be added. ; dialogs can be nested and can be mixed with fields dialog = engine_constants_southwest, "Speeduino Board" field = "Stoichiometric ratio", stoich field = "Injector Layout", injLayout, { nCylinders <= 4 } field = "Board Layout", pinLayout field = "MAP Sample method", mapSample dialog = engine_constants_west, "" panel = std_injection, North panel = engine_constants_southwest dialog = engine_constants_northeast, "Oddfire Angles" field = "Channel 2 angle", oddfire2, { engineType == 1 } field = "Channel 3 angle", oddfire3, { engineType == 1 && nCylinders >= 3 } field = "Channel 4 angle", oddfire4, { engineType == 1 && nCylinders >= 4 } dialog = engine_constants_east, "" panel = engine_constants_northeast, North field = "" dialog = engine_constants, "", border panel = engine_constants_west, West panel = engine_constants_east, East # Flex fuel stuff dialog = flexFueling, "Flex Fuel" field = "Flex sensor", flexEnabled dialog = flexn, "" field = "#Spark/Fuel" field = "Sensor Frequency" field = "Fuel Multiplier%" field = "Additional advance" #field = "#Temp Sense" #field = "Sensor PW" #field = "Fuel Temp" dialog = flexl, "" field = "Low" field = "", flexFreqLow, { flexEnabled } field = "", flexFuelLow, { flexEnabled } field = "", flexAdvLow, { flexEnabled } #field = "Low" #field = "", ff_tpw0, { flexEnabled && (fueltemp1 == 1)} #field = "", ff_temp0, { flexEnabled && (fueltemp1 == 1)} dialog = flexh, "" field = "High" field = "", flexFreqHigh, { flexEnabled } field = "", flexFuelHigh, { flexEnabled } field = "", flexAdvHigh, { flexEnabled } #field = "High" #field = "", ff_tpw1, { flexFuel && (fueltemp1 == 1)} #field = "", ff_temp1, { flexFuel && (fueltemp1 == 1)} dialog = ff_table, "Flex Fuel Calibration", xAxis panel = flexn panel = flexl panel = flexh dialog = ff_fallback, "", yAxis #field = "Baseline Ethanol%", flex_baseline, { flexFuel } #field = "#Fallback For Sensor Failure" #field = "Fallback Fuel Multiplier%", fuelCorr_default, { flexFuel > 0 } #field = "Fallback Timing Addition", fuelSpkDel_default, { flexFuel > 0 } dialog = flexFuelTop, "" field = "Flex Fuel Sensor", flexEnabled #field = "Sensor Port", flexport, { flexFuel > 0 } # field = "Temperature Input", fueltemp1 dialog = flexFueling, "Fuel Sensor Settings", yAxis panel = flexFuelTop panel = ff_table panel = ff_fallback dialog = tacho, "Tacho" field = "Output pin", tachoPin field = "Output speed", tachoDiv dialog = canIO, "CanBus interface" field = "Enable/Disable", canEnable dialog = accelEnrichments_center, "" field = "TPSdot Threshold", tpsThresh field = "Accel Time", taeTime ; field = "Cold Accel Enrichment", taeColdA ; field = "Cold Accel Mult", taeColdM ;field = "Decel Fuel Amount", tdePct dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)" field = "Enabled", dfcoEnabled field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled } field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled } dialog = accelEnrichments_north_south, "" liveGraph = pump_ae_Graph, "AE Graph" graphLine = afr graphLine = TPSdot, "%", -2000, 2000, auto, auto dialog = accelEnrichments_north, "", xAxis panel = time_accel_tpsdot_curve ;panel = time_accel_tpsdot_tbl dialog = accelEnrichments, "Acceleration Enrichment" panel = accelEnrichments_north, North panel = accelEnrichments_north_south, Center panel = accelEnrichments_center, Center panel = accelEnrichments_south, South dialog = veTableDialog_north, "" panel = veTable1Tbl dialog = veTableDialog_south, "" field = "Multiply VE value by MAP", multiplyMAP field = "Include AFR directly", includeAFR, { egoType == 2 } dialog = veTableDialog, "VE Table" panel = veTableDialog_north, North panel = veTableDialog_south, South dialog = injChars, "Injector Characteristics" field = "Injector Open Time", injOpen field = "Injector close angle" field = "", inj1Ang, { indInjAng == 0 } field = "Individual channel setting", indInjAng field = "Channel 1", inj1Ang, { indInjAng } field = "Channel 2", inj2Ang, { nCylinders > 1 && indInjAng } field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3))) } field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3))) } field = "Injector Duty Limit", dutyLim panel = injector_voltage_curve dialog = egoControl, "" field = "Sensor Type", egoType field = "Algorithm", egoAlgorithm, { egoType } field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } field = "Controller Step Size", egoDelta, { egoType && (egoAlgorithm == 0) } field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } dialog = fanSettings,"Fan Settings",7 field = "Fan Mode", fanEnable field = "Fan output pin", fanPin, { fanEnable } field = "Fan Output Inverted", fanInv , { fanEnable } field = "Fan temperature SP", fanSP, { fanEnable } field = "Fan hysteresis", fanHyster, { fanEnable } dialog = stepper_idle, "Stepper Idle" field = "Step time (ms)", iacStepTime, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Home steps", iacStepHome, { iacAlgorithm == 4 || iacAlgorithm == 5 } field = "Minimum Steps", iacStepHyster, { iacAlgorithm == 4 || iacAlgorithm == 5 } dialog = pwm_idle, "PWM Idle" field = "Number of outputs", iacChannels, { iacAlgorithm == 2 || iacAlgorithm == 3 } field = "Idle valve frequency", idleFreq, { iacAlgorithm == 2 || iacAlgorithm == 3 } field = "Idle valve direction", iacPWMdir, { iacAlgorithm == 2 || iacAlgorithm == 3 } dialog = closedloop_idle, "Closed loop Idle" field = "P", idleKP, { iacAlgorithm == 3 } field = "I", idleKI, { iacAlgorithm == 3 } field = "D", idleKD, { iacAlgorithm == 3 } field = "Minimum valve duty", iacCLminDuty, { iacAlgorithm == 3 } field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 } dialog = idleSettings, "Idle Settings" topicHelp = "http://speeduino.com/wiki/index.php/Idle" field = "Idle control type", iacAlgorithm field = "#Fast Idle" field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 } panel = pwm_idle panel = stepper_idle panel = closedloop_idle dialog = fuelpump, "Fuel pump" field = "Fuel pump pin", fuelPumpPin dialog = crankPW, "Cranking Pulsewidths (ms)" field = "Cranking RPM (Max)", crankRPM field = "Flood Clear level", tpsflood field = "" field = "Fuel pump prime duration", fpPrime field = "Priming Pulsewidth", primePulse field = "" field = "Cranking Enrichment %", crankingPct field = "" field = "Cranking bypass", ignBypassEnable field = "Bypass output pin", ignBypassPin { ignBypassEnable } field = "Fix cranking timing with trigger", ignCranklock, { TrigPattern == 1 || TrigPattern == 4 || TrigPattern == 10} dialog = aseSettings, "Afterstart Enrichment" field = "Enrichment %", asePct field = "Number of Sec to run", aseCount dialog = triggerSettings,"Trigger Settings",4 topicHelp = "http://speeduino.com/wiki/index.php/Decoders" field = "Trigger Pattern", TrigPattern field = "Primary base teeth", numteeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 } field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 } field = "Missing teeth", onetwo, { TrigPattern == 0 } field = "Secondary teeth", onetwo, { TrigPattern == 2 } field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 } field = "Trigger Angle ", TrigAng field = "This number represents the angle ATDC when " field = "tooth #1 passes the primary sensor." field = "" field = "Skip Revolutions", StgCycles field = "Note: This is the number of revolutions that will be skipped during" field = "cranking before the injectors and coils are fired" field = "Trigger edge", TrigEdge field = "Secondary trigger edge", TrigEdgeSec, { TrigPattern == 0 || TrigPattern == 2 } field = "Trigger Filter", TrigFilter dialog = sparkSettings,"Spark Settings",4 field = "Spark output mode", sparkMode field = "Cranking advance Angle", CrankAng ;field = "Hold Ignition", IgHold field = "Spark Outputs triggers", IgInv field = "" field = "Fixed Angle (0 = use map)", FixAng ;field = "Trim Angle", Trim dialog = dwellSettings, "Dwell Settings", 4 topicHelp = DwellHelp ;field = "Dwell control", dwellcont ;field = "Or:" field = " Cranking dwell", dwellcrank field = " Running dwell", dwellrun ;field = "Minimum discharge period", mindischg, { dwellcont } field = "" field = "#Note" field = "The above times are for 12V. Voltage correction" field = "is applied. At higher voltages the time is reduced" field = "and when low it is increased" field = "" field = "Overdwell protection" field = "Use Overdwell protection", useDwellLim field = "Max dwell time", dwellLim, { useDwellLim } field = "Note: Set the maximum dwell time at least 3ms above" field = "your desired dwell time (Including cranking)" dialog = RevLimiterS, "Rev Limiter", 4 topicHelp = Fhelp7 field = "Rev Limiter" field = "Soft rev limit", SoftRevLim field = "Soft limit absolute timing", SoftLimRetard field = "Soft limit max time", SoftLimMax field = "Hard Rev limit", HardRevLim dialog = clutchInput, "Clutch input" field = "Clutch Input Pin", launchPin, { launchEnable || flatSEnable } field = "Clutch enabled when signal is",launchHiLo, { launchEnable || flatSEnable } field = "Clutch Pullup Resistor", lnchPullRes, { launchEnable || flatSEnable } field = "Launch / Flat Shift switch RPM",flatSArm, { launchEnable || flatSEnable } dialog = LaunchControl, "Launch Control / Flat shift", 6 topicHelp = Fhelp7 panel = clutchInput ; Launch control field = "Launch Control" field = "Enable Launch", launchEnable field = "Soft rev limit", lnchSoftLim, { launchEnable } field = "Soft limit absolute timing", lnchRetard, { launchEnable } field = "Hard rev limit", lnchHardLim, { launchEnable } field = "Fuel adder during launch", lnchFuelAdd, { launchEnable } ; Flat shift field = "Flat Shift" field = "Enable flat shift", flatSEnable field = "Soft rev window", flatSSoftWin, { flatSEnable } field = "Soft limit absolute timing", flatSRetard, { flatSEnable } dialog = OLED, "OLED Display", 2 field = "Display Type", display field = "#Note" field = "ECU must be rebooted after changing above value" field = "Field 1", display1, { display } field = "Field 2", display2, { display } field = "Field 3", display3, { display } field = "Field 4", display4, { display } ;field = "Bar 1", displayB1, { display } ;field = "Bar 2", displayB2, { display > 2 } dialog = mapCal, "Calibrate MAP" field = "#MAP Sensor" settingSelector = "Common MAP Sensors" settingOption = "MPX4115", mapMin=10, mapMax=122 settingOption = "MPX4250", mapMin=10, mapMax=260 settingOption = "GM 1-BAR", mapMin=10, mapMax=105 settingOption = "GM 2-BAR", mapMin=9, mapMax=208 settingOption = "GM 3-BAR / MPXH6300", mapMin=1, mapMax=315 settingOption = "MPXH5700", mapMin=0, mapMax=700 settingOption = "MPXH6400", mapMin=3, mapMax=416 settingOption = "MPX4400", mapMin=0, mapMax=400 settingOption = "Denso 079800", mapMin=0, mapMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 dialog = boostSettings, "Boost Control" field = "Boost Control Enabled", boostEnabled field = "Boost output pin", boostPin, { boostEnabled } field = "Boost solenoid freq.", boostFreq, { boostEnabled } field = "Boost Cut", boostCutType, { boostEnabled } field = "Boost Limit", boostLimit, { boostEnabled && boostCutType } field = "Closed Loop settings" field = "P", boostKP, { boostEnabled } field = "I", boostKI, { boostEnabled } field = "D", boostKD, { boostEnabled } field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled } field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled } dialog = vvtSettings, "VVT Control" field = "VVT Control Enabled", vvtEnabled field = "VVT output pin", vvtPin, { vvtEnabled } field = "VVT solenoid freq.", vvtFreq, { vvtEnabled } dialog = wc_note field = "For 99% of engines, warmup must have 100% in the final row. Typical maximum is 255% (cold)." dialog = warmup, "Warmup Enrichment (WUE) - Percent Multiplier" panel = warmup_curve panel = wc_note field = "" panel = aseSettings ;Fuel trim composite dialog dialog = inj_trim1TblTitle, "Channel #1" panel = fuelTrimTable1Tbl, Center, { fuelTrimEnabled } dialog = inj_trim2TblTitle, "Channel #2" panel = fuelTrimTable2Tbl, { fuelTrimEnabled } dialog = inj_trim3TblTitle, "Channel #3" panel = fuelTrimTable3Tbl, { fuelTrimEnabled } dialog = inj_trim4TblTitle, "Channel #4" panel = fuelTrimTable4Tbl, { fuelTrimEnabled } dialog = inj_trimadt, "", xAxis panel = inj_trim1TblTitle panel = inj_trim2TblTitle dialog = inj_trimadb, "", xAxis panel = inj_trim3TblTitle panel = inj_trim4TblTitle dialog = inj_trimad,"Injector Cyl 1-4 Trims", yAxis field = "Individual fuel trim enabled", fuelTrimEnabled, { injLayout == 3 } panel = inj_trimadt, North panel = inj_trimadb, South ;------------------------------------------------------------------------------- ; General help text help = helpGeneral, "Speeduino General Help" webHelp = "http://speeduino.com/wiki/index.php/Speeduino" text = "For current WIKI documentation, click the Web Help button," text = "or visit http://www.speeduino.com/." text = "
" text = "
why not visit our forum http://speeduino.com/forum/" ;------------------------------------------------------------------------------ ; ------------------------------------------------------------- ; Help down here [SettingContextHelp] [CurveEditor] ;time-based accel enrichment curve = time_accel_tpsdot_curve, "TPS based AE" columnLabel = "TPSdot", "Added" xAxis = 0, 1200, 6 yAxis = 0, 250, 4 xBins = taeBins, TPSdot yBins = taeRates ;gauge = cltGauge ; Correction curve for dwell vs battery voltage curve = dwell_correction_curve, "Dwell voltage correction" columnLabel = "Voltage", "Dwell" xAxis = 6, 22, 6 yAxis = 0, 255, 6 xBins = brvBins, batteryVoltage yBins = dwellRates ; Correction curve for injectors vs battery voltage curve = injector_voltage_curve, "Injector voltage correction" columnLabel = "Voltage", "Injector" xAxis = 6, 22, 6 yAxis = 0, 255, 6 xBins = brvBins, batteryVoltage yBins = injBatRates ; Correction curve for Air Density vs temperature curve = airdensity_curve, "IAT density correction" columnLabel = "Air Temperature", "Fuel Amount" xAxis = -40, 160, 6 yAxis = 0, 255, 6 xBins = airDenBins, iat yBins = airDenRates ; IAT based ignition timing retard curve = iat_retard_curve, "IAT timing retard" columnLabel = "Inlet Air Temp", "Retard" xAxis = -40, 200, 5 yAxis = 0, 30, 5 xBins = iatRetBins, iat yBins = iatRetRates ; Curves for idle control ; Standard duty table for PWM valves curve = iacPwm_curve, "IAC PWM Duty" columnLabel = "Coolant Temperature", "Valve" #if CELSIUS xAxis = -40, 215, 6 #else xAxis = -40, 315, 6 #endif yAxis = 0, 100, 4 xBins = iacBins, coolant yBins = iacOLPWMVal ; Cranking duty table for PWM valves curve = iacPwmCrank_curve, "IAC PWM Cranking Duty" columnLabel = "Coolant Temperature", "Valve" xAxis = -40, 215, 6 yAxis = 0, 100, 4 xBins = iacCrankBins, coolant yBins = iacCrankDuty curve = iacStep_curve, "IAC Stepper Motor" columnLabel = "Coolant Temperature", "Motor" #if CELSIUS xAxis = -40, 215, 6 #else xAxis = -40, 315, 6 #endif yAxis = 0, 850, 4 xBins = iacBins, coolant yBins = iacOLStepVal curve = iacStepCrank_curve, "IAC Stepper Motor Cranking" columnLabel = "Coolant Temperature", "Motor" xAxis = -40, 120, 6 yAxis = 0, 850, 4 xBins = iacCrankBins, coolant yBins = iacCrankSteps curve = iacClosedLoop_curve, "IAC Closed Loop Targets" columnLabel = "Coolant Temperature", "Motor" xAxis = -40, 120, 6 yAxis = 0, 2000, 4 xBins = iacBins, coolant yBins = iacCLValues ; Warmup enrichment curve curve = warmup_curve, "Warmup Enrichment (WUE) Curve" ;topicHelp = "file://$getProjectsDirPath()/docs/Megasquirt3_TunerStudio_MS_Lite_Reference-1.3.pdf#wue" columnLabel = "Coolant", "WUE %" xAxis = -40, 210, 9 yAxis = 0, 240, 6 xBins = wueBins, coolant yBins = wueRates gauge = cltGauge [TableEditor] ; table_id, map3d_id, "title", page table = veTable1Tbl, veTable1Map, "VE Table", 1 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" ; constant, variable xBins = rpmBins, rpm #if SPEED_DENSITY yBins = mapBins, map #else yBins = tpsBins, throttle #endif zBins = veTable gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = sparkTbl, sparkMap, "Ignition Advance Table", 3 xBins = rpmBins2, rpm #if SPEED_DENSITY yBins = mapBins2, map #else ALPHA_N yBins = tpsBins2, throttle #endif zBins = advTable1 gridHeight = 3.0 upDownLabel = "ADVANCED", "RETARDED" ;table = afrTbl, afrTableMap, "AFR Table", 5 table = afrTable1Tbl, afrTable1Map, "AFR Table", 5 xBins = rpmBinsAFR, rpm #if SPEED_DENSITY yBins = mapBinsAFR, map #else ALPHA_N yBins = tpsBinsAFR, throttle #endif zBins = afrTable gridHeight = 1.0 upDownLabel = "RICHER", "LEANER" gridOrient = 250, 0, 340 #if BOOSTPSI table = boostTbl, boostMap, "Boost targets (PSI)", 8 #else table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 #endif xBins = rpmBinsBoost, rpm yBins = tpsBinsBoost, throttle zBins = boostTable gridHeight = 3.0 upDownLabel = "HIGHER", "LOWER" table = vvtTbl, vvtMap, "VVT control Table", 8 xBins = rpmBinsVVT, rpm yBins = tpsBinsVVT, throttle zBins = vvtTable gridHeight = 3.0 upDownLabel = "HIGHER", "LOWER" ;--------- Sequential fuel trim maps ----------- table = fuelTrimTable1Tbl, fuelTrimTable1Map, "Fuel trim Table 1", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim1rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim1loadBins, map #else yBins = fuelTrim1loadBins, throttle #endif zBins = fuelTrim1Table gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable2Tbl, fuelTrimTable2Map, "Fuel trim Table 2", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim2rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim2loadBins, map #else yBins = fuelTrim2loadBins, throttle #endif zBins = fuelTrim2Table gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable3Tbl, fuelTrimTable3Map, "Fuel trim Table 3", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim3rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim3loadBins, map #else yBins = fuelTrim3loadBins, throttle #endif zBins = fuelTrim3Table gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" table = fuelTrimTable4Tbl, fuelTrimTable4Map, "Fuel trim Table 4", 9 topicHelp = "http://speeduino.com/wiki/index.php/Tuning" xBins = fuelTrim4rpmBins, rpm #if SPEED_DENSITY yBins = fuelTrim4loadBins, map #else yBins = fuelTrim4loadBins, throttle #endif zBins = fuelTrim4Table gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" ;------------------------------------------------------------------------------- [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. ; ;------------------------------------------------------------------------------- ; Define a gauge's characteristics here, then go to a specific layout ; block (Tuning or FrontPage) and use the name you've defined here to ; display that gauge in a particular position. ; ; Name = Case-sensitive, user-defined name for this gauge configuration. ; Var = Case-sensitive name of variable to be displayed, see the ; OutputChannels block in this file for possible values. ; Title = Title displayed at the top of the gauge. ; Units = Units displayed below value on gauge. ; Lo = Lower scale limit of gauge. ; Hi = Upper scale limit of gauge. ; LoD = Lower limit at which danger color is used for gauge background. ; LoW = Lower limit at which warning color is used. ; HiW = Upper limit at which warning color is used. ; HiD = Upper limit at which danger color is used. ; vd = Decimal places in displayed value ; ld = Label decimal places for display of Lo and Hi, above. ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld ; baroADCGauge = 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 #batVoltGauge = batteryVoltage, "BAT V", "", 0, 255, -1, -1, 256, 256, 0, 0 accelEnrichGauge = accelEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 afrGauge = afr, "Air:Fuel Ratio", "", 7, 25, 12, 13, 15, 16, 2, 2 afrGauge2 = afr2, "Air:Fuel Ratio 2", "", 7, 25, 12, 13, 15, 16, 2, 2 lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 70, 80, 1, 1 egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0 gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 pulseWidthGauge = pulseWidth, "Pulse Width", "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 tpsGauge = tps, "Throttle Position2", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0 veBucketGauge = veTuneValue, "VE Value", "%", 0, 120, -1, -1, 999, 999, 0, 0 veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 voltMeter = batteryVoltage,"Battery Voltage", "volts", 0, 25, 8, 9, 15, 16, 2, 2 warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 200, 130, 140, 140, 150, 0, 0 gaugeCategory = "Sensor inputs" mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0 mapGauge_psi = map_psi, "Engine MAP (PSI)", "PSI", -15, 100, 0, 20, 200, 245, 0, 0 mapGauge_bar = map_bar, "Engine MAP (BAR)", "Bar", -1, 3, -1, -1, 5, 5, 2, 2 mapGauge_vacBoost = map_vacboost, "Engine MAP (in-Hg/PSI)", "in-Hg/PSI", -30, 30, -30, -30, 30, 30, 1, 1 #if CELSIUS cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, -15, 0, 95, 105, 0, 0 iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, -15, 0, 95, 100, 0, 0 #else cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, 0, 30, 200, 220, 0, 0 iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, 0, 30, 200, 210, 0, 0 #endif advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0, 0 flexGauge = flex, "Flex sensor", "%", 0, 100, -1, -1, 999, 999, 0, 0 gaugeCategory = "Other" clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0 loopGauge = loopsPerSecond,"Main loop speed", "Loops/S" , 0, 70000, -1, 500,1800, 4000, 0, 0 memoryGauge = freeRAM, "Free memory", "bytes" , 0, 8000, -1, 1000,8000, 1000, 0, 0 ;------------------------------------------------------------------------------- [FrontPage] ; Gauges are numbered left to right, top to bottom. ; ; 1 2 3 4 ; 5 6 7 8 gauge1 = tachometer #if SPEED_DENSITY gauge2 = throttleGauge #else gauge2 = tpsGauge #endif gauge3 = pulseWidthGauge gauge4 = dutyCycleGauge gauge5 = mapGauge gauge6 = iatGauge gauge7 = cltGauge gauge8 = gammaEnrichGauge ;---------------------------------------------------------------------------- ; Indicators ; expr off-label on-label, off-bg, off-fg, on-bg, on-fg indicator = { ready }, "Not Ready", "Ready", white, black, green, black indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black indicator = { startw }, "ASE OFF", "ASE", white, black, green, black indicator = { warmup }, "WUE OFF", "WUE", white, black, green, black indicator = { tpsaccaen }, "Accel", "Accel", white, black, green, black indicator = { tpsaccden }, "Decel", "Decel", white, black, green, black indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black indicator = { error }, "No Errors", "ERROR", white, black, green, black indicator = { (tps > tpsflood) && (rpm < crankRPM) }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black indicator = { DFCOOn }, "DFCO OFF", "DFCO On", white, black, red, black indicator = { launchHard }, "Launch Hard", "Launch Hard", white, black, green, black indicator = { launchSoft }, "Launch Soft", "Launch Soft", white, black, green, black indicator = { softlimitOn }, "Soft Limit OFF","Soft Limiter", white, black, red, black indicator = { hardLimitOn }, "Hard Limit OFF","Hard Limiter", white, black, red, black indicator = { boostCutOut }, "Boost Cut OFF", "Boost Cut", white, black, red, black indicator = { sync }, "No Sync", "Sync", white, black, green, black ;------------------------------------------------------------------------------- [RunTime] barHysteresis = 2.5 ; Seconds #if CELSIUS coolantBar = -40, 215 matBar = -40, 215 #else coolantBar = -40, 215 matBar = -40, 215 #endif batteryBar = 6, 15 dutyCycleBar = 0, 100 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] font = "Courier", 14 spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators. cursorDepth = 2 ; Same as spot depth. ; The four radio buttons on the tuning screen select a "page" of six ; gauges. The gauge numbering is the same as the front page, across ; then down. ; 1 2 ; 3 4 ; 5 6 ; ; gaugeColumns allows you to hide or show gauges in column 2 (i.e., ; gauges 2, 4 and 6). gaugeColumns = 2 ; Only 1 or 2 are valid. ;---------------------------------------------------------------------------- ; Notes on tuning screen gauges: ; pageButtons = Labels for radio buttons at bottom of tuning dialog. ; ; Gauge 2 previously switched automatically to be tpsGauge when alpha-n ; was enabled, but you need to do it manually now. ;---------------------------------------------------------------------------- ; Page 1 Page 2 Page 3 Page 4 pageButtons = "&EGO", "&WUE", "PW&1", "PW&2" gauge1 = tachometer, tachometer, tachometer, tachometer gauge2 = mapGauge, mapGauge, mapGauge, mapGauge gauge3 = egoGauge, egoGauge, egoGauge, egoGauge gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidthGauge, pulseWidthGauge gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycleGauge, dutyCycleGauge ;------------------------------------------------------------------------------- [OutputChannels] ; The number of bytes MegaTune or TunerStudio should expect as a result ; of sending the "A" command to Speeduino is determined ; by the value of ochBlockSize, so be very careful when ; you change it. deadValue = { 0 } ; Convenient unchanging value. ochGetCommand = "A" ochBlockSize = 38 secl = scalar, U08, 0, "sec", 1.000, 0.000 squirt = scalar, U08, 1, "bits", 1.000, 0.000 inj1Status = bits, U08, 1, [0:0] inj2Status = bits, U08, 1, [1:1] inj3Status = bits, U08, 1, [2:2] inj4Status = bits, U08, 1, [3:3] DFCOOn = bits, U08, 1, [4:4] boostCutFuel = bits, U08, 1, [5:5] toothLog1Ready = bits, U08, 1, [6:6] toothLog2Ready = bits, U08, 1, [7:7] engine = scalar, U08, 2, "bits", 1.000, 0.000 ready = bits, U08, 2, [0:0] crank = bits, U08, 2, [1:1] startw = bits, U08, 2, [2:2] warmup = bits, U08, 2, [3:3] tpsaccaen = bits, U08, 2, [4:4] tpsaccden = bits, U08, 2, [5:5] mapaccaen = bits, U08, 2, [6:6] mapaccden = bits, U08, 2, [7:7] dwell = scalar, U08, 3, "ms", 0.100, 0.000 map = scalar, U08, 4, "kpa", 2.000, 0.000 iatRaw = scalar, U08, 5, "°C", 1.000, 0.000 coolantRaw = scalar, U08, 6, "°C", 1.000, 0.000 tpsADC = scalar, U08, 7, "ADC", 1.000, 0.000 batteryVoltage = scalar, U08, 8, "V", 0.100, 0.000 afr = scalar, U08, 9, "O2", 0.100, 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 rpm = scalar, U16, 13, "rpm", 1.000, 0.000 accelEnrich = scalar, U08, 15, "%", 1.000, 0.000 baro = scalar, U08, 16, "%", 1.000, 0.000 gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000 veCurr = scalar, U08, 18, "%", 1.000, 0.000 afrTarget = scalar, U08, 19, "O2", 0.100, 0.000 pulseWidth = scalar, U08, 20, "ms", 0.1, 0.000 TPSdot = scalar, U08, 21, "%/s", 10.00, 0.000 ;advance = scalar, U08, 22, "deg", 1.000, 0.000 advance = scalar, S08, 22, "deg", 1.000, 0.000 tps = scalar, U08, 23, "%", 1.000, 0.000 loopsPerSecond = scalar, U16, 24, "loops", 1.000, 0.000 freeRAM = scalar, S16, 26, "bytes", 1.000, 0.000 batCorrection = scalar, U08, 28, "%", 1.000, 0.000 spark = scalar, U08, 29, "bits", 1.000, 0.000 launchHard = bits, U08, 29, [0:0] launchSoft = bits, U08, 29, [1:1] hardLimitOn = bits, U08, 29, [2:2] softlimitOn = bits, U08, 29, [3:3] boostCutSpark = bits, U08, 29, [4:4] error = bits, U08, 29, [5:5] idle = bits, U08, 29, [6:6] sync = bits, U08, 29, [7:7] afr2 = scalar, U08, 30, "O2", 0.100, 0.000 rpmDOT = scalar, S16, 31, "rpm/s", 1.000, 0.000 flex = scalar, U08, 33, "%", 1.000, 0.000 flexFuelCor = scalar, U08, 34, "%", 1.000, 0.000 flexIgnCor = scalar, U08, 35, "deg", 1.000, 0.000 errors = scalar, U08, 36, "bits", 1.000, 0.000 errorNum = bits, U08, 36, [0:1] currentError = bits, U08, 36, [2:7] boostTarget = scalar, U08, 37, "kPa", 2.000, 0.000 ; Computed output channels. See "megatuneExamples.ini" for all the ; pre-defined variables, search for "???" and you'll see them. accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct : 100) } #if CELSIUS coolant = { coolantRaw - 40 } ; Coolant sensor temperature in user units. iat = { iatRaw - 40 } ; Manifold temperature in user units. #else coolant = { (coolantRaw - 40) * 1.8 + 32 } ; Coolant sensor temperature in user units. iat = { (iatRaw - 40) * 1.8 + 32 } ; Manifold temperature in user units. #endif time = { timeNow } ; "timeNow" is a parameterless built-in function. seconds = { secl }; throttle = { tps }, "%" ;cycleTime = { 60000.0 / rpm * (2.0-twoStroke) } cycleTime = { 60000.0 / rpm } ;nSquirts = { nCylinders/divider } dutyCycle = { 100.0*pulseWidth/cycleTime } boostCutOut = { boostCutFuel || boostCutSpark } lambda = { afr / stoich } MAPxRPM = { rpm * map } ;Manifold pressure in weirdo units map_bar = { (map - baro) / 101.33 } map_psi = { (map - baro) * 0.145038 } map_inhg = { (baro - map) * 0.2953007 } ;in-Hg map_vacboost = { map < baro ? -map_inhg : map_psi } #if EXPANDED_CLT_TEMP clt_exp = { 1 } #else clt_exp = { 0 } #endif #if CELSIUS cltlowlim = { clt_exp ? -40 : -40 } clthighlim = { clt_exp ? 230 : 120 } cltlowdang = { clt_exp ? 65 : 10 } cltlowwarn = { clt_exp ? 93 : 65 } clthighwarn = { clt_exp ? 162 : 93 } clthighdang = { clt_exp ? 176 : 104 } mathigh = { 110 } #else ; fahrenheit cltlowlim = { clt_exp ? -40 : -40 } clthighlim = { clt_exp ? 450 : 250 } cltlowdang = { clt_exp ? 150 : 50 } cltlowwarn = { clt_exp ? 200 : 150 } clthighwarn = { clt_exp ? 325 : 200 } clthighdang = { clt_exp ? 350 : 220 } mathigh = { 215 } #endif ;------------------------------------------------------------------------------- [Datalog] ; Full datalog. ; ; Default user-defined log emulates the full datalog. ; ; The entries are saved in the datalog file in the order in ; which they appear in the list below. ; ; Channel - Case sensitive name of output channel to be logged. ; Label - String written to header line of log. Be careful ; about changing these, as programs like MSLVV and ; MSTweak key off specific column names. ; Type - Data type of output, converted before writing. ; Format - C-style output format of data. ; ; Channel Label Type Format ; -------------- ---------- ----- ------ entry = time, "Time", float, "%.3f" entry = secl, "SecL", int, "%d" entry = rpm, "RPM", int, "%d" entry = map, "MAP", int, "%d" entry = MAPxRPM, "MAPxRPM", int, "%d" entry = tpsADC, "tpsADC", int, "%d" entry = tps, "TPS", int, "%d" entry = afr, "O2", float, "%.3f" entry = lambda, "%", float, "%.3f" entry = iat, "IAT", int, "%d" entry = coolant, "CLT", int, "%d" entry = engine, "Engine", int, "%d" entry = squirt, "Squirt", int, "%d" entry = spark, "Spark", 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 = accelEnrich, "TPSacc", int, "%d" entry = veCurr, "VE", int, "%d" entry = pulseWidth, "PW", float, "%.1f" entry = afrTarget, "AFR Target", float, "%.3f" entry = pulseWidth, "PW2", float, "%.1f" entry = dutyCycle, "DutyCycle1", float, "%.1f" entry = dutyCycle, "DutyCycle2", float, "%.1f" entry = TPSdot, "TPS DOT", int, "%d" entry = advance, "Ignition Advance", int,"%d" entry = dwell, "Dwell", int, "%d" entry = batteryVoltage, "Battery V", float, "%.1f" entry = rpmDOT, "rpm/s", int, "%d" entry = flex, "%", int, "%d" entry = errorNum, "Error #", int, "%d" entry = currentError, "Error ID", int, "%d" entry = boostTarget, "Boost Target",int, "%d" [LoggerDefinition] ; valid logger types: composite, tooth, trigger, csv ;loggerDef = uniqueName, Display Name, type loggerDef = tooth, "Tooth Logger", tooth ;dataReadCommand = "r\\x00\\xf4\\x00\\x00\\x04\\x00" ; standard TS command format dataReadCommand = "T" ; Basic TS command format dataReadTimeout = 15000 ; time in ms dataReadyCondition = { toothLog1Ready } dataLength = 256 ; in bytes, including headers, footers and data (not used) ;recordDef = headerLen. footerLen, recordLen recordDef = 0, 0, 2; in bytes, the recordLen is for each record, currently limited to 4 bytes ;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition recordField = toothGap, "ToothTime", 0, 16, 1.0, "uS" [Tools] ;addTool = toolName, PanelName addTool = veTableGenerator, "VE Table Generator", veTable1Tbl addTool = afrTableGenerator, "AFR Table Generator", afrTable1Tbl [VeAnalyze] ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition veAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection lambdaTargetTables = afrTable1Tbl, afrTSCustom, filter = std_xAxisMin ; Auto build with appropriate axis channels ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true filter = std_xAxisMax ; Auto build with appropriate axis channels filter = std_yAxisMin ; Auto build with appropriate axis channels filter = std_yAxisMax ; Auto build with appropriate axis channels filter = std_DeadLambda ; Auto build #if CELSIUS filter = minCltFilter, "Minimum CLT", coolant, < , 71, , true #else filter = minCltFilter, "Minimum CLT", coolant, < , 160, , true #endif filter = accelFilter, "Accel Flag" , engine, & , 16, , false filter = aseFilter, "ASE Flag" , engine, & , 4, , false filter = overrunFilter, "Overrun" , pulseWidth, = , 0, , false filter = std_Custom ; Standard Custom Expression Filter.