1362 lines
72 KiB
INI
1362 lines
72 KiB
INI
;-------------------------------------------------------------------------------
|
||
|
||
[MegaTune]
|
||
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
|
||
|
||
queryCommand = "Q"
|
||
signature = 20
|
||
;signature = "speeduino"
|
||
|
||
;-------------------------------------------------------------------------------
|
||
|
||
[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 = 8
|
||
burnCommand = "B"
|
||
blockReadTimeout = 1000
|
||
pageSize = 288, 64, 288, 64, 288, 64, 64, 160
|
||
pageActivationDelay = 10
|
||
; pageActivate = ""
|
||
pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010"
|
||
pageReadCommand = "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"
|
||
;\x00%2
|
||
; pageChunkWrite = "" ; No chunk write for standard MS
|
||
blockingFactor = 2048
|
||
delayAfterPortOpen=1000
|
||
|
||
;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
|
||
#elif ALPHA_N
|
||
tpsBins = array, U08, 272, [ 16], "TPS", 1.0, 0.0, 0.0, 255.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
|
||
wueBins = 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", "INVALID", "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"
|
||
unused16 = scalar, U08, 16, "ms", 0.1, 0.0, 0.0, 25.5, 1
|
||
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
|
||
;injTiming = bits, U08, 26, [0:1], "Simultaneous", "Semi-Sequential", "Sequential"
|
||
alternate = bits, U08, 26, [0:0], "Simultaneous", "Alternating"
|
||
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:8], "INVALID","1","2","3","4","INVALID","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","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+1]
|
||
|
||
; Config3
|
||
engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire"
|
||
egoTypeOLD = bits, U08, 38, [1:1], "Narrow band", "Wide band"
|
||
algorithm = bits, U08, 38, [2:2], "Speed Density", "Alpha-N"
|
||
baroCorr = bits, U08, 38, [3:3], "Off", "On"
|
||
injLayout = bits, U08, 38, [4:5], "Bank", "Semi-Sequential", "INVALID", "INVALID"
|
||
|
||
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
|
||
unused41 = scalar, U08, 41, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
egoSwitch = scalar, U08, 42, "v", 0.0196, 0.0, 0.0, 5.0, 3
|
||
taeColdM = scalar, U08, 43, "%", 1.0, 0.0, 0.0, 250.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
|
||
unused2-50 = scalar, U08, 50, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-51 = scalar, U08, 51, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-52 = scalar, U08, 52, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-53 = scalar, U08, 53, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-54 = scalar, U08, 54, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-55 = scalar, U08, 55, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-56 = scalar, U08, 56, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-57 = scalar, U08, 57, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-58 = scalar, U08, 58, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-59 = scalar, U08, 59, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-60 = scalar, U08, 60, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-61 = scalar, U08, 61, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-62 = scalar, U08, 62, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused2-63 = scalar, U08, 63, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
|
||
;--------------------------------------------------
|
||
;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", 1.0, 0.0, 0.0, 255.0, 0
|
||
#elif ALPHA_N
|
||
tpsBins2 = array, U08, 272, [ 16], "TPS", 1.0, 0.0, 0.0, 255.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
|
||
IgHold = scalar, U08, 4, "", 1, 0, 0, 100, 0
|
||
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", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
|
||
IdleAdv = scalar, U08, 6, "Deg", 0.352,-28.4, -10, 80, 0
|
||
IdleAdvTPS = 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"
|
||
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
|
||
#if CELSIUS
|
||
wueRates = array, U08, 31, [10], "C", 1.0, 0.0, 100.0, 255.0, 0
|
||
#else
|
||
wueRates = array, U08, 31, [10], "F", 1.8, 17.77, 100.0, 255.0, 0 ; No -40 degree offset here
|
||
#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
|
||
unused4-63 = scalar, U08, 63, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
|
||
|
||
;--------------------------------------------------
|
||
;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", 1.0, 0.0, 0.0, 255.0, 0
|
||
#elif ALPHA_N
|
||
tpsBinsAFR = array, U08, 272,[ 16], "TPS", 1.0, 0.0, 0.0, 255.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"
|
||
unused = bits, U08, 0, [6:7], "Off", "On/Off", "PWM","Centred PID"
|
||
|
||
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, "<22>C", 1.0, -40, -40, 102.0, 0
|
||
#else
|
||
egoTemp = scalar, U08, 4, "<22>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
|
||
egoLoadMax = scalar, U08, 13, "%", 1, 0, 0, 120, 0
|
||
egoLoadMin = scalar, U08, 14, "%", 1, 0, 0, 120, 0
|
||
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", "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"
|
||
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, U08, 50, "deg", 1.0, 0.0, 0.0, 80, 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)
|
||
unused6-56 = scalar, U08, 56, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-57 = scalar, U08, 57, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-58 = scalar, U08, 58, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-59 = scalar, U08, 59, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-60 = scalar, U08, 60, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-61 = scalar, U08, 61, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-62 = scalar, U08, 62, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
unused6-63 = scalar, U08, 63, "RPM", 100.0, 0.0, 100, 25500, 0
|
||
|
||
;--------------------------------------------------
|
||
;Start idle and fan controls (Page 7)
|
||
;--------------------------------------------------
|
||
page = 7
|
||
iacCLValues = array, U08, 0, [10], "RPM", 10.0, 0.0, 100.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"
|
||
unused7-52f = bits , U08, 52, [7:7], "One", "INVALID"
|
||
|
||
#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:2], "Off", "On/Off", "PWM", "INVALID"
|
||
unused7-55b = bits, U08, 56, [3:3], "No", "Yes"
|
||
unused7-55c = bits, U08, 56, [4:4], "No", "Yes"
|
||
unused7-55d = bits, U08, 56, [5:5], "No", "Yes"
|
||
unused7-55e = bits, U08, 56, [6:6], "No", "Yes"
|
||
unused7-55f = bits, U08, 56, [7:7], "No", "Yes"
|
||
#if CELSIUS
|
||
fanSP = scalar, U08, 57, "<22>C", 1.0, -40, -40, 215.0, 0
|
||
fanHyster = scalar, U08, 58, "<22>C", 1.0, -40, -40, 215.0, 0
|
||
#else
|
||
fanSP = scalar, U08, 57, "<22>F", 1.8, -22.23, -40, 215.0, 0
|
||
fanHyster = scalar, U08, 58, "<22>F", 1.8, -22.23, -40, 215.0, 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
|
||
boostTable = array, U08, 0,[8x8], "%", 1.0, 0.0, 0, 100, 0
|
||
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
|
||
|
||
;-------------------------------------------------------------------------------
|
||
|
||
[ConstantsExtensions]
|
||
requiresPowerCycle = nCylinders
|
||
requiresPowerCycle = pinLayout
|
||
requiresPowerCycle = reqFuel
|
||
requiresPowerCycle = numteeth
|
||
requiresPowerCycle = onetwo
|
||
requiresPowerCycle = injOpen
|
||
requiresPowerCycle = IgInv
|
||
requiresPowerCycle = fanInv
|
||
requiresPowerCycle = iacAlgorithm
|
||
requiresPowerCycle = boostEnabled
|
||
requiresPowerCycle = vvtEnabled
|
||
; requiresPowerCycle = vvtChannels
|
||
requiresPowerCycle = boostFreq
|
||
requiresPowerCycle = vvtFreq
|
||
requiresPowerCycle = idleFreq
|
||
requiresPowerCycle = sparkMode
|
||
requiresPowerCycle = launchPin
|
||
requiresPowerCycle = launchEnable
|
||
requiresPowerCycle = launchHiLo
|
||
|
||
defaultValue = pinLayout, 1
|
||
defaultValue = TrigPattern, 0
|
||
defaultValue = sparkMode, 0
|
||
defaultValue = inj1Ang, 355
|
||
defaultValue = inj2Ang, 355
|
||
defaultValue = inj3Ang, 355
|
||
defaultValue = inj4Ang, 355
|
||
defaultValue = dutyLim, 100
|
||
defaultValue = mapMin, 10
|
||
defaultValue = mapMax, 260
|
||
defaultValue = fpPrime, 3
|
||
|
||
[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".
|
||
;
|
||
;----------------------------------------------------------------------------
|
||
|
||
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 Wizard"
|
||
subMenu = egoControl, "AFR/O2", 3
|
||
subMenu = RevLimiterS, "Rev Limits", 2
|
||
subMenu = veTable1Tbl, "&VE Table", 0
|
||
subMenu = sparkTbl, "&Spark Table", 2
|
||
subMenu = afrTable1Tbl, "A&FR Table", 5
|
||
|
||
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 = std_warmup, "&Warmup Enrichment"
|
||
subMenu = std_separator
|
||
subMenu = idleSettings, "Idle Control"
|
||
subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { iacAlgorithm == 2 || iacAlgorithm == 3 }
|
||
subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 || iacAlgorithm == 3 }
|
||
subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 || iacAlgorithm == 3 }
|
||
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"
|
||
subMenu = std_separator
|
||
subMenu = boostSettings, "Boost Control"
|
||
subMenu = boostTbl, "Boost duty cycle", 8, { boostEnabled }
|
||
subMenu = std_separator
|
||
subMenu = vvtSettings, "VVT Control"
|
||
subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled }
|
||
|
||
|
||
|
||
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 T&hermistor 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"
|
||
;-------------------------------------------------------------------------------
|
||
|
||
[UserDefined]
|
||
; define a MegaTune compatible version here
|
||
; no need to for std_enrichments, it is built in.
|
||
|
||
[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."
|
||
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"
|
||
|
||
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."
|
||
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."
|
||
|
||
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"
|
||
|
||
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)."
|
||
|
||
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"
|
||
|
||
[UserDefinedTS]
|
||
; 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_south
|
||
topicHelp = Mhelp
|
||
field = "Injector Layout", injLayout, { nCylinders <= 4 }
|
||
field = "Board Layout", pinLayout
|
||
field = "MAP Sample method", mapSample
|
||
|
||
dialog = engine_constants, ""
|
||
panel = std_injection, North
|
||
panel = engine_constants_south, South
|
||
|
||
|
||
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, "", xAxis
|
||
panel = time_accel_tpsdot_curve
|
||
;panel = time_accel_tpsdot_tbl
|
||
|
||
dialog = accelEnrichments, "Acceleration Enrichment"
|
||
panel = accelEnrichments_north, North
|
||
panel = accelEnrichments_center, Center
|
||
panel = accelEnrichments_south, South
|
||
|
||
dialog = injChars, "Injector Characteristics"
|
||
field = "Injector Open Time", injOpen
|
||
field = "Injector close angle"
|
||
field = "Channel 1", inj1Ang
|
||
field = "Channel 2", inj2Ang, { nCylinders > 1 }
|
||
field = "Channel 3", inj3Ang, { nCylinders > 4 || nCylinders == 3 }
|
||
field = "Channel 4", inj4Ang, { nCylinders > 6 }
|
||
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 = "Active Below Load", egoLoadMax, { egoType && (egoAlgorithm < 3) }
|
||
field = "Active Above Load", egoLoadMin, { 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 Inverted (see F1)", fanInv
|
||
field = "Fan temperature SP", fanSP
|
||
field = "Fan hysteresis", fanHyster
|
||
|
||
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 }
|
||
|
||
dialog = closedloop_idle, "Closed loop Idle"
|
||
field = "P", idleKP, { iacAlgorithm == 3 }
|
||
field = "I", idleKI, { iacAlgorithm == 3 }
|
||
field = "D", idleKD, { 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 = 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
|
||
|
||
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 }
|
||
field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 }
|
||
field = "Missing teeth", onetwo, { TrigPattern == 0 }
|
||
field = "Secondary teeth", onetwo, { TrigPattern == 2 }
|
||
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
|
||
|
||
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 = LaunchControl, "Launch Control", 6
|
||
topicHelp = Fhelp7
|
||
field = "Launch Control"
|
||
field = "Enable Launch", launchEnable
|
||
field = "Launch Input Pin", launchPin, { launchEnable }
|
||
field = "Launch enabled when signal is",launchHiLo, { 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 }
|
||
|
||
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 = "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 solenoid freq.", boostFreq
|
||
|
||
dialog = vvtSettings, "VVT Control"
|
||
field = "VVT Control Enabled", vvtEnabled
|
||
field = "VVT solenoid freq.", vvtFreq
|
||
|
||
|
||
;-------------------------------------------------------------------------------
|
||
; 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 = "<br>"
|
||
text = "<br>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, 48, 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
|
||
|
||
|
||
[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
|
||
|
||
table = boostTbl, boostMap, "Boost control Table", 8
|
||
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"
|
||
|
||
;-------------------------------------------------------------------------------
|
||
|
||
[GaugeConfigurations]
|
||
|
||
;-------------------------------------------------------------------------------
|
||
; Notes on some of the gauges.
|
||
;
|
||
; The accelEnrichGauge is now a composite of both acceleration enrichment
|
||
; and deceleration enleanment numbers. See the definition of the variable
|
||
; accDecEnrich in the OutputChannels section.
|
||
;
|
||
; David Hooke contributed the lambda gauge and associated transfer
|
||
; function files.
|
||
;
|
||
; "The lambda gauge is the best way (my opinion) to report data from a
|
||
; wide band EGO gauge, it standardizes the output irrespective of fuel
|
||
; or mix of fuels, so you needn't do any brainwork to know if your 75%
|
||
; gasoline and 25% methanol is rich at 10:1 or not.
|
||
;
|
||
; "Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
|
||
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu)."
|
||
;-------------------------------------------------------------------------------
|
||
; Define a gauge's characteristics here, then go to a specific layout
|
||
; block (Tuning or FrontPage) and use the name you've defined here to
|
||
; display that gauge in a particular position.
|
||
;
|
||
; Name = Case-sensitive, user-defined name for this gauge configuration.
|
||
; Var = Case-sensitive name of variable to be displayed, see the
|
||
; OutputChannels block in this file for possible values.
|
||
; Title = Title displayed at the top of the gauge.
|
||
; Units = Units displayed below value on gauge.
|
||
; Lo = Lower scale limit of gauge.
|
||
; Hi = Upper scale limit of gauge.
|
||
; LoD = Lower limit at which danger color is used for gauge background.
|
||
; LoW = Lower limit at which warning color is used.
|
||
; HiW = Upper limit at which warning color is used.
|
||
; HiD = Upper limit at which danger color is used.
|
||
; vd = Decimal places in displayed value
|
||
; ld = Label decimal places for display of Lo and Hi, above.
|
||
|
||
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
|
||
; baroADCGauge = 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
|
||
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
|
||
#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,
|
||
|
||
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, 20000, -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 }, "TPS Accel", "TPS Accel", white, black, green, black
|
||
indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black
|
||
indicator = { tpsaccden }, "TPS Decel", "TPS Decel", white, black, green, black
|
||
indicator = { mapaccden }, "MAP Decel", "MAP Decel", 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 Limiter OFF", "Soft Limiter",white, black, red, black
|
||
indicator = { hardlimitOn }, "Hard Limiter OFF", "Hard Limiter",white, black, red, 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 = 33
|
||
|
||
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]
|
||
unusedSquirt1 = 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, "<22>C", 1.000, 0.000
|
||
coolantRaw = scalar, U08, 6, "<22>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
|
||
baroCorrection = 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
|
||
tps = scalar, U08, 23, "%", 1.000, 0.000
|
||
loopsPerSecond = scalar, S16, 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]
|
||
sparkUnusede = bits, U08, 29, [4:4]
|
||
sparkUnusedf = bits, U08, 29, [5:5]
|
||
sparkUnusedg = bits, U08, 29, [6:6]
|
||
sparkUnusedh = bits, U08, 29, [7:7]
|
||
afr2 = scalar, U08, 30, "O2", 0.100, 0.000
|
||
rpmDOT = scalar, S16, 31, "rpm/s", 1.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 };
|
||
|
||
afrtarget = { 0 }
|
||
|
||
throttle = { tps }, "%"
|
||
|
||
;cycleTime = { 60000.0 / rpm * (2.0-twoStroke) }
|
||
cycleTime = { 60000.0 / rpm }
|
||
nSquirts = { nCylinders/divider }
|
||
dutyCycle = { 100.0*pulseWidth/cycleTime }
|
||
|
||
#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 = tpsADC, "tpsADC", int, "%d"
|
||
entry = tps, "TPS", int, "%d"
|
||
entry = afr, "O2", float, "%.3f"
|
||
entry = iat, "IAT", int, "%d"
|
||
entry = coolant, "CLT", int, "%d"
|
||
entry = engine, "Engine", int, "%d"
|
||
entry = squirt, "Squirt", 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", int, "%d"
|
||
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"
|
||
|
||
[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.
|