;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "S"
versionInfo = "T"
signature = "MSnS-extra format 024s *********"
;!! Suitable for use with 024s7 through 024s13
;-------------------------------------------------------------------------------
[Constants]
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
endianness = big
nPages = 8
burnCommand = "B"
pageSize = 200, 200, 200, 200, 200, 200, 200, 200
pageActivate = "P\001", "P\002", "P\003", "P\000" , "P\004" , "P\005", "P\006", "P\007"
pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V"
pageValueWrite = "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v"
pageChunkWrite = "X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v","X%o%c%v"
pageActivationDelay = 50
;USB serial port users may need to increase the following value
writeBlocks = on ; Default is on.
interWriteDelay = 1 ; Becomes "interCommandDelay" if writeBlocks is "on"
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
page = 1
veBins1 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins1 = array, U08, 158, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins1 = array, U08, 170, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins1 = array, U08, 170, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins1 = array, U08, 170, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins1 = array, U08, 170, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
#if CELSIUS
egoTemp1 = scalar, U08, 144, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp1 = scalar, U08, 144, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount1 = scalar, U08, 145, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta1 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit1 = scalar, U08, 147, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel1 = scalar, U08, 148, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider1 = scalar, U08, 149, "", 1.0, 0.0
alternate1 = bits, U08, 150, [0:0], "Simultaneous", "Alternating"
injOpen1 = scalar, U08, 151, "ms", 0.1, 0.0, 0.1, 25.5, 1
injPwmP1 = scalar, U08, 153, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT1 = scalar, U08, 154, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac1 = scalar, U08, 155, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk1 = scalar, U16, 156, "", 1.0, 0.0
; Config1
mapType1 = bits, U08, 182, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
mapSensor1 = bits, U08, 182, [0:0]
twoStroke1 = bits, U08, 182, [2:2], "Four-stroke", "Two-stroke"
injType1 = bits, U08, 182, [3:3], "Port", "Throttle Body"
nCylinders1= bits, U08, 182, [4:7+1]
; Config3
cltType1 = bits, U08, 183, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType1 = bits, U08, 183, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors1= bits, U08, 183, [4:7+1]
; Config3
engineType1= bits, U08, 184, [0:0], "Even fire", "Odd fire"
egoType1 = bits, U08, 184, [1:1], "Narrow band", "Wide band"
algorithm1 = bits, U08, 184, [2:2], "Speed Density", "Alpha-N"
baroCorr1 = bits, U08, 184, [3:3], "Off", "On"
egoRPM1 = scalar, U08, 185, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT1 = scalar, U08, 186, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT1 = scalar, U08, 186, "°F", 1.0, -40.0, -40, 215, 1
#endif
egoSwitch1 = scalar, U08, 187, "v", 0.0196, 0.0, 0.0, 5.0, 3
page = 2
veBins2 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 158, [ 12], "RPM", 100.0, 0.0, 100, 25000, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins2 = array, U08, 170, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins2 = array, U08, 170, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins2 = array, U08, 170, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins2 = array, U08, 170, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; crankCold2 = scalar, U08, 144, "ms", 0.1, 0.0, 0.0, 25.5, 1
; crankHot2 = scalar, U08, 145, "ms", 0.1, 0.0, 0.0, 25.5, 1
; asePct2 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0
; aseCount2 = scalar, U08, 147, "", 1.0, 0.0, 0.0, 255.0, 0
; wueBins2 = array, U08, 148,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0
; taeBins2 = array, U08, 158,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
; taeColdA2 = scalar, U08, 162, "ms", 0.1, 0.0, 0.0, 25.5, 1
; tpsThresh2 = scalar, U08, 163, "v/s",0.1953125, 0.0, 0.2, 49.8, 3
; taeTime2 = scalar, U08, 164, "ms", 0.1, 0.0, 0.0, 25.5, 1
; tdePct2 = scalar, U08, 165,
#if CELSIUS
egoTemp2 = scalar, U08, 144, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp2 = scalar, U08, 144, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoDelta2 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit2 = scalar, U08, 147, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel2 = scalar, U08, 148, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider2 = scalar, U08, 149, "", 1.0, 0.0
alternate2 = bits, U08, 150, [0:0], "Simultaneous", "Alternating"
injOpen2 = scalar, U08, 151, "ms", 0.1, 0.0, 0.1, 25.5, 1
injPwmP2 = scalar, U08, 153, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT2 = scalar, U08, 154, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac2 = scalar, U08, 155, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk2 = scalar, U16, 156, "", 1.0, 0.0
; Config1
mapType2 = bits, U08, 182, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke2 = bits, U08, 182, [2:2], "Four-stroke", "Two-stroke"
injType2 = bits, U08, 182, [3:3], "Port", "Throttle Body"
nCylinders2= bits, U08, 182, [4:7+1]
; Config3
cltType2 = bits, U08, 183, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType2 = bits, U08, 183, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors2= bits, U08, 183, [4:7+1]
; Config3
engineType2= bits, U08, 184, [0:0], "Even fire", "Odd fire"
egoType2 = bits, U08, 184, [1:1], "Narrow band", "Wide band"
algorithm2 = bits, U08, 184, [2:2], "Speed Density", "Alpha-N"
baroCorr2 = bits, U08, 184, [3:3], "Off", "On"
primePulse2= scalar, U08, 185, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM2 = scalar, U08, 185, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT2 = scalar, U08, 186, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT2 = scalar, U08, 186, "°F", 1.0, -40.0, -40, 215, 1
#endif
egoSwitch2 = scalar, U08, 187, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM2 = scalar, U08, 188, "%", 1.0, 0.0, 0.0, 250.0, 0
egoCount2 = scalar, U08, 190, "", 1.0, 0.0, 0.0, 255.0, 0
; SECOND O2 SETTINGS
TwoLambda = bits, U08, 191[0:0], "None*^(DT)", "Fitted (DT only)"
page = 3
advTable1 = array, U08, 0,[12x12], "deg", 0.352, -28.4, -10.0, 80.0, 0
rpmBins3 = array, U08, 144,[ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins3 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins3 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins3 = array, U08, 156,[ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins3 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
TrigAng = scalar, U08, 168, "Deg", 0.352, 0, 0, 90, 0
FixAng = scalar, U08, 169, "Deg", 0.352, -28.4, -10, 80, 0
Trim = scalar, U08, 170, "Deg", 0.352, 0, 0, 90, 0
CrankAng = scalar, U08, 171, "Deg", 0.352, -28.4, -10, 80, 0
IgHold = scalar, U08, 172, "", 1, 0, 0, 100, 0
; TrigPlus = bits, U08, 173[0:0], "0", "+22.5"
; TrigPPlus = bits, U08, 173[1:1], "0", "+22.5"
Trig_plus = bits, U08, 173[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 173[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 173[3:3], "No", "Yes"
page = 4
msnsCyl = bits, U08, 0, [0:0], "Off*", "MSnS^"
neonCrank = bits, U08, 0, [1:1], "Off*^", "Neon/420A"
wheelon = bits, U08, 0, [2:2], "Off*^", "Generic wheel"
onetwo = bits, U08, 0, [3:3], "-1", "-2"
edis = bits, U08, 0, [4:5], "Off*^", "EDIS", "INVALID", "dual EDIS"
tfi = bits, U08, 0, [6:6], "Off*^", "Ford TFI"
hei7 = bits, U08, 0, [7:7], "Off*^", "GM 7pin HEI"
; used to capture all ignition modes, for menu selection
ignmode = scalar, U08, 0, "", 1, 0, 0,0 255,0
fidleUse = bits, U08, 1, [0:0], "Idle control*", "Spark output^"
led17Use = bits, U08, 1, [1:1], "Squirt*^", "Spark output"
led18Use = bits, U08, 1, [2:3], "Warmup*^", "IRQ trigger", "Output4","Spark output C"
led18_2Use = bits, U08, 1, [3:3]
led19Use = bits, U08, 1, [4:4], "Acceleration*^", "Spark output B"
x2use = bits, U08, 1, [5:5], "Water inj", "Fan control"
;bit 6 is led18/fan control
toy_dli = bits, U08, 1, [7:7], "Normal*", "Toyota DLI muliplex"
SoftRevLim = scalar, U08, 2, "rpm", 100.0, 0.0, 100, 25500, 0
SoftLimRetard = scalar, U08, 3, "deg", 0.352, -28.4, -10, 80, 0
SoftLimMax = scalar, U08, 4, "s", 0.1, 0.0, 0.0, 25.5, 1
; "MSnS Soft limit cool time (s)", 5, 0.1, 0.0, 0.0, 25.5 NOT USED
HardRevLim = scalar, U08, 6, "rpm", 100, 0.0, 100, 25500, 0
out1lim = scalar, U08, 7, "raw byte or deg F +40", 1, 0, 0, 255, 0
out1src = bits, U08, 8, [0:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out2lim = scalar, U08, 9, "raw byte or deg F +40", 1, 0, 0, 255, 0
out2src = bits, U08, 10, [0:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out1Hysis = scalar, U08, 126, "raw byte or deg F", 1, 0, 0, 255, 0
out2Hysis = scalar, U08, 127, "raw byte or deg F", 1, 0, 0, 255, 0
out3lim = scalar, U08, 133, "raw byte or deg F +40", 1, 0, 0, 255, 0
out3src = bits, U08, 132, [0:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out3Timer = scalar, U08, 134, "Sec", 0.1, 0, 0, 25.5 , 1
Out3_Out1 = bits, U08, 116[7:7], "Source", "output1+Source"
out4lim = scalar, U08, 139, "raw byte or deg F +40", 1, 0, 0, 255, 0
out4src = bits, U08, 138, [0:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT","TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out4FAN = bits, U08, 1, [6:6], "Source", "Fan Control"
wd_2trig = bits, U08, 11, [0:0], "Missing teeth", "2nd trigger"
egoIgnCount = bits, U08, 11, [1:1], "mSec", "Ign Pulses*^"
whlsim = bits, U08, 11, [2:2], "off", "on"
taeIgnCount = bits, U08, 11, [3:3], "Sec*^", "Cycles"
;spare = bits, U08, 11, [4:4], "Off", "On"
hybridAN = bits, U08, 11, [5:5], "Off*^", "On"
inj2cr = bits, U08 11, [6:6], "Off", "On*^"
boostUse = bits, U08, 12, [0:0], "Output1*^", "Boost Control"
shiftUse = bits, U08, 12, [1:1], "Off*^", "On"
launchUse = bits, U08, 12, [2:2], "Off*^", "On"
pwmIdle = bits, U08, 12, [3:3], "B&G On-Off*^", "Fielding PWM"
out3sparkd = bits, U08, 12, [4:4], "Output3", "Spark output D"
; dwellcrankmode = bits, U08, 12, [5:5], "Set dwell after spark", "Charge at trigger point*^"
dwellduty50 = bits, U08, 12, [5:6], "75% duty cycle*^", "minimal for HEI4", "50% duty cycle", "INVALID"
whlsimcnt = scalar, U08, 13, "", 1.0, 0.0, 1, 4, 0
freqDiv = bits, U08, 14, [0:2], "INVALID","39.0 Hz","19.5 Hz","13.0 Hz","9.8 Hz","7.8 Hz","6.5 Hz","5.6 Hz"
bcUpdateRate = scalar, U08, 15, "ms", 1.0, 0.0, 10, 255, 0
pGain = scalar, U08, 16, "%", 0.3922, 0.0, 0, 100, 1
dGain = scalar, U08, 17, "%", 0.3922, 0.0, 0, 100, 1
ShiftLower = scalar, U08, 18, "rpm", 100.0, 0.0, 100, 25500, 0
ShiftUpper = scalar, U08, 19, "rpm", 100.0, 0.0, 100, 25500, 0
LaunchLim = scalar, U08, 20, "rpm", 100.0, 0.0, 100, 25500, 0
edismultirpm = scalar, U08, 21, "rpm", 100.0, 0.0, 100, 2500, 0
BoostDir = bits, U08, 92, [6:6], "Increase boost", "Decrease Boost"
inj1g = bits, U08, 33, [5:5], "off", "on*^"
inj2t = bits, U08, 33, [4:4], "1*^", "2 (DT)"
inj2g = bits, U08, 33, [6:6], "off", "on*^"
#if MPXH6300A
KPaTarg10 = scalar, U08, 29, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1.213675, 1.53, 100, 304.0, 0
#elif MPXH6400A
KPaTarg10 = scalar, U08, 29, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KPaTarg10 = scalar, U08, 29, "KPa", 1, 0, 100, 255, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1, 0, 100, 255, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1, 0, 100, 255, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1, 0, 100, 255, 0
#endif
TPSRPMTarg = bits, U08, 92, [7:7], "TPS", "RPM"
TargetB1 = scalar, U08, 25, "Raw Value", 1, 0, 0, 255, 0
TargetB2 = scalar, U08, 26, "Raw Value", 1, 0, 0, 255, 0
TargetB3 = scalar, U08, 27, "Raw Value", 1, 0, 0, 255, 0
TargetB4 = scalar, U08, 28, "Raw Value", 1, 0, 0, 255, 0
; Added for Enhanced stuff
; Target AFR 8 x 8 table
AfrTar = bits, U08, 46,[7:7], "Off*^(DT)", "On"
AfrTar2 = bits, U08, 92,[1:1], "Off*^(DT)", "On"
#if MPXH6300A
EgoLimKPa = scalar, U08, 39, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
EgoLimKPa = scalar, U08, 39, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
EgoLimKPa = scalar, U08, 39, "KPa", 1, 0, 0, 255, 0
#endif
EgoLim2 = scalar, U08, 40, "+-", 1, 0, 0, 100, 0
KpaTPSTar = bits, U08, 109,[4:4], "Speed Density", "Alpha-N"
TPSTar = bits, U08, 109,[5:5], "Always", "Above TPS Setpoint"
TPSAFRPoint = scalar, U08, 121, "Raw ADC", 1, 0, 0, 255, 0
; More Launch Stuff
LachTps = scalar, U08, 41, "Raw ADC", 1, 0, 0, 255, 0
LachDeg = scalar, U08, 42, "Deg", 0.352, -28.4, -10, 45, 0
LachRpm = scalar, U08, 43, "RPM", 100, 0, 0, 3500, 0
VLaunch = bits, U08, 46[1:1], "Off", "On"
; Over Boost Protection
#if MPXH6300A
OvrBKpa = scalar, U08, 44, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
OvrBKpa = scalar, U08, 44, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
OvrBKpa = scalar, U08, 44, "KPa", 1, 0, 100, 255, 0
#else
OvrBKpa = scalar, U08, 44, "PSI", 0.147, -100, -15, 23, 1
#endif
; Coolant / Iat Related Ignition
CltAdv = bits, U08, 46[2:2], "Off", "On"
#if CELSIUS
IgAdvDeg = scalar, U08, 48, "°C", 0.555, 0, 0, 100, 1
IgAdvTemp = scalar, U08, 47, "°C", 0.555, -72, -40, 70, 1
IgRetDeg = scalar, U08, 50, "°C", 0.555, 0, 0, 102, 1
IgRetTemp = scalar, U08, 52, "°C", 0.555, -72, -40, 102, 1
#else
IgAdvDeg = scalar, U08, 48, "°F", 1, 0, 0, 120, 1
IgAdvTemp = scalar, U08, 47, "°F", 1, -40, -10, 120, 1
IgRetDeg = scalar, U08, 50, "°F", 1, 0, 0, 120, 1
IgRetTemp = scalar, U08, 52, "°F", 1, -40, -10, 120, 1
#endif
MaxIatAdv = scalar, U08, 49, "Deg", 0.352,0 , 0, 15, 1
#if MPXH6300A
IatAdvKpa = scalar, U08, 51, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
IatAdvKpa = scalar, U08, 51, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
IatAdvKpa = scalar, U08, 51, "KPa", 1, 0, 0, 255, 0
#endif
; KNOCK DETECTOR SETTINGS
KnockOn = bits, U08, 46[6:6], "Off","On"
KnockRpm = scalar, U08, 53, "RPM", 100, 0, 0, 12000, 0
#if MPXH6300A
KnockKpa = scalar, U08, 55, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KnockKpa = scalar, U08, 55, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KnockKpa = scalar, U08, 55, "KPa", 1, 0, 0, 255, 0
#endif
KnockRpmL = scalar, U08, 54, "RPM", 100, 0, 0 , 12000, 0
KnockRet = scalar, U08, 56, "Deg", 0.352, 0, 0, 10, 0
KnockSb = scalar, U08, 57, "Deg", 0.352, 0, 0, 10, 0
KnockMax = scalar, U08, 59, "Deg", 0.352, 0, 1, 30, 0
KnockAdv = scalar, U08, 58, "Deg", 0.352, 0, 0, 20, 0
KnockTim = scalar, U08, 60, "Sec", 1, 0, 1, 10, 0
#if MPXH6300A
KnockBoost = scalar, U08, 107, "KPa", 1.213675, 1.53, 0, 304.0, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KnockBoost = scalar, U08, 107, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
KnockBoost = scalar, U08, 107, "KPa", 1, 0, 0, 155, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1, 0, 0, 155, 0
#else
KnockBoost = scalar, U08, 107, "PSI", 0.147, 0, 0, 20, 0
BoostMaxKn = scalar, U08, 108, "PSI", 0.147, 0, 0, 20, 0
#endif
; WATER INJECTION SETTINGS
WaterInj = bits, U08, 46[3:3], "Off*", "On"
WaterIRpm = scalar, U08, 63, "RPM", 100, 0, 0, 12000, 0
#if MPXH6300A
StartWIKPa = scalar, U08, 62, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
StartWIKPa = scalar, U08, 62, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
StartWIKPa = scalar, U08, 62, "KPa", 1, 0, 0, 255, 0
#else
StartWIKPa = scalar, U08, 62, "PSI", 0.147, -100, 0, 20, 0
#endif
#if CELSIUS
WaterIIat = scalar, U08, 61, "°C", 0.555, -72, -40, 102, 1
#else
WaterIIat = scalar, U08, 61, "°F", 1, -40, -10, 120, 1
#endif
; OPEN LOOP MODE
OLoopEgo = bits, U08, 46[0:0], "TPS", "KPa"
#if MPXH6300A
KPaOn = scalar, U08, 64, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KPaOn = scalar, U08, 64, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KPaOn = scalar, U08, 64, "KPa", 1, 0, 0 , 255, 0
#endif
TpsOn = scalar, U08, 65, "Raw", 1, 0, 0, 255, 0
#if CELSIUS
fastIdleTemp = scalar, U08, 34, "°C", 0.555, -72.0, -40, 102
slowIdleTemp = scalar, U08, 35, "°C", 0.555, -72.0, -40, 102
#else
fastIdleTemp = scalar, U08, 34, "°F", 1.0, -40.0, -40, 215
slowIdleTemp = scalar, U08, 35, "°F", 1.0, -40.0, -40, 215
#endif
fastIdleRPM = scalar, U08, 36, "RPM", 10.0, 0.0, 10, 2550
slowIdleRPM = scalar, U08, 37, "RPM", 10.0, 0.0, 10, 2550
; For TPS from ADC, use scale=100/(max-min) and tra=-min
; 100/(225-26) = 0.502, -26, might just be best to leave it in ADC...
idleThresh = scalar, U08, 38, "%", 0.502, -26.0, 0.0, 255
; HARD CUT TYPE SETTINGS FOR REV LIMITER AND LAUNCH AND OVER BOOST
HCutType = bits, U08, 46[4:5], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only"
HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0
HCutLCType = bits, U08, 76[0:1], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only"
HCutLCSpark = scalar, U08, 77, "Sparks", 1, 0, 0, 20, 0
SparkCutBase = scalar, U08, 78, "Sparks", 1, -1, 5, 20, 0 ; -1 to Value
OvrBCutType = bits, U08, 76[4:5], "INVALID", "Spark Cut Only", "Fuel & Spark", "Fuel Only"
SparkCutBNum = scalar, U08, 84, "Sparks", 1, 0, 0, 20, 0
; Output Inverters
InvOut1 = bits, U08, 66[1:1], "Normal", "Inverted"
InvOut2 = bits, U08, 66[2:2], "Normal", "Inverted"
Out1UpLim = scalar, U08, 88, "raw byte or deg F +40", 1, 0, 0, 255, 0
Out2UpLim = scalar, U08, 89, "raw byte or deg F +40", 1, 0, 0, 255, 0
; EDIS multi-spark
edismulti = bits, U08, 66[3:3], "Off*^", "On"
; Nitrous System
NosRpm = scalar, U08, 23, "RPM", 100, 0, 1000, 25000, 0
NosTps = scalar, U08, 67, "Raw", 1, 0, 0, 255, 0
#if CELSIUS
NosClt = scalar, U08, 22, "°C", 0.555, -72, -40, 102, 1
#else
NosClt = scalar, U08, 22, "°F", 1, -40, -10, 120, 1
#endif
NosAngle = scalar, U08, 68, "Deg", 0.352, 0, 0, 30, 0
NosPWLo = scalar, U08, 69, "mSec", 0.1, 0, 0, 25.5, 1
NosPWHi = scalar, U08, 70, "mSec", 0.1, 0, 0, 25.5, 1
nitrousUse = bits, U08, 11, [7:7], "Off*", "On"
NosRpmMax = scalar, U08, 24, "RPM", 100, 0, 3000, 25000, 0
DtNos = bits, U08, 66[5:5], "Bank1", "Bank2"
NosLagSystem = bits, U08, 76[6:6], "Off", "On"
#if MPXH6300A
NosLowKpa = scalar, U08, 85, "KPa", 1.213675, 1.53, 0, 304.0, 0
NosHiKpa = scalar, U08, 86, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
NosLowKpa = scalar, U08, 85, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
NosHiKpa = scalar, U08, 86, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
NosLowKpa = scalar, U08, 85, "KPa", 1, 0, 0, 255
NosHiKpa = scalar, U08, 86, "KPa", 1, 0, 0, 255
#endif
;wheel decoder
numteeth = scalar, U08, 90, "", 1, 0, 0, 63
trig1 = scalar, U08, 25, "", 1, 0, 0, 63
trig2 = scalar, U08, 26, "", 1, 0, 0, 63
trig3 = scalar, U08, 27, "", 1, 0, 0, 63
trig4 = scalar, U08, 28, "", 1, 0, 0, 63
trig1ret = scalar, U08, 29, "", 1, 0, 0, 63
trig2ret = scalar, U08, 30, "", 1, 0, 0, 63
trig3ret = scalar, U08, 31, "", 1, 0, 0, 63
trig4ret = scalar, U08, 32, "", 1, 0, 0, 63
;late leading for rotary. This had better get used! and it didn't......
; trig1r = scalar, U08, 140, "", 1, 0, 0, 63
; trig2r = scalar, U08, 141, "", 1, 0, 0, 63
; trig3r = scalar, U08, 142, "", 1, 0, 0, 63
; OVER RUN FUEL CUT SETTINGS
OvrRunC = bits, U08, 66[6:6], "Off","On"
OvrRunRpm = scalar, U08, 71, "RPM", 100, 0, 1000, 6000, 0
#if CELSIUS
OvrRunClt = scalar, U08, 197, "°C", 0.555, -72, -40, 102, 0
#else
OvrRunClt = scalar, U08, 197, "°F", 1, -40, -40, 215, 0
#endif
#if MPXH6300A
OvrRunKpa = scalar, U08, 72, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
OvrRunKpa = scalar, U08, 72, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
OvrRunKpa = scalar, U08, 72, "KPa", 1, 0, 0, 255, 0
#endif
OvrRunTps = scalar, U08, 73, "Raw ADC", 1, 0, 0, 255, 0
OvrRunTimr = scalar, U08, 130, "Sec", 1, 0, 0, 255, 0
; Accel Dot Settings
AccDecEnrich = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot"
DecEnrichment = bits, U08, 116[5:5], "TPSdot*^(DT)", "MAPdot"
KPaDotBoost = bits, U08, 66[4:4], "Never", "In Boost"
DecayAccel = bits, U08, 116[6:6], "None*^(DT)", "Decay"
DecayAcPoint = scalar, U08, 198, "mS", 0.1, 0, 0, 25.5, 1
; Electric Fan control (X2) - can't be used with water inj
#if CELSIUS
efanontemp = scalar, U08, 74, "°C", 0.555, -72, -40, 102, 1
efanofftemp = scalar, U08, 75, "°C", 0.555, -72, -40, 102, 1
#else
efanontemp = scalar, U08, 74, "°F", 1, -40, -40, 215, 1
efanofftemp = scalar, U08, 75, "°F", 1, -40, -40, 215, 1
#endif
; STAGED INJECTION
IStagedMode = bits, U08, 76[2:3],"Off*^","RPM-Based","MAP-Based","TPS-Based"
ScaleFac = scalar, U08, 79, "", 1.0, 0.0, 0, 255
StgTrans = scalar, U08, 80, "", 1.0, 0.0, 0, 255
StgDelta = scalar, U08, 81, "", 1.0, 0.0, 0, 255
; BARO CORRECTION
#if MPXH6300A
BarroHi = scalar, U08, 82, "KPa", 1.213675, 1.53, 0, 304.0, 0
BarroLow = scalar, U08, 83, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
BarroHi = scalar, U08, 82, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
BarroLow = scalar, U08, 83, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif MPX4250
BarroHi = scalar, U08, 82, "KPa", 0.9837, 8, 10, 255
BarroLow = scalar, U08, 83, "KPa", 0.9837, 8, 10, 255
#else
BarroHi = scalar, U08, 82, "KPa", 0.433, 10, 10, 255
BarroLow = scalar, U08, 83, "KPa", 0.433, 10, 10, 255
#endif
AlphBaroCor = bits, U08, 199, [3:3], "No", "Yes"
; Spark Table Selection
STTable2On = bits, U08, 76[7:7], "Spark Table1^", "Spark Table2"
ST2Delay = scalar, U08, 87, "Sec", 0.1, 0, 0, 25, 1
; VE Table 3
UseVE3 = bits, U08, 92[0:0], "Dont switch*^(DT)" ,"Switch to Table3"
VE3Delay = scalar, U08, 93, "Sec", 0.1, 0, 0, 25, 1
; Traction Control
TractionOn = bits, U08, 92[5:5], "Off*^", "On"
RPMThresh = scalar, U08, 98, "RPM/Sec", 1000, 0, 1000, 25000, 0
RPM1S = scalar, U08, 94, "3000RPM/Sec or 5%Slip", 0.1, 0, 0, 20.0, 1
RPM2S = scalar, U08, 95, "4000RPM/Sec or 15%Slip", 0.1, 0, 0, 20.0, 1
RPM3S = scalar, U08, 96, "6000RPM/Sec or 30%Slip", 0.1, 0, 0, 20.0, 1
RPM4S = scalar, U08, 97, "10000RPM/Sec or 70%Slip ", 0.1, 0, 0, 20.0, 1
TractRet1 = scalar, U08, 99, "3000RPM/Sec or 5%Slip", 0.352, 0, 0, 30, 0
TractRet2 = scalar, U08, 100, "4000RPM/Sec or 15%Slip", 0.352, 0, 0, 30, 0
TractRet3 = scalar, U08, 101, "6000RPM/Sec or 30%Slip", 0.352, 0, 0, 30, 0
TractRet4 = scalar, U08, 102, "10000RPM/Sec or 70%Slip", 0.352, 0, 0, 30, 0
TractSC1 = scalar, U08, 103, "3000RPM/Sec or 5%Slip", 1, 0, 0, 2, 0
TractSC2 = scalar, U08, 104, "4000RPM/Sec or 15%Slip", 1, 0, 0, 2, 0
TractSC3 = scalar, U08, 105, "6000RPM/Sec or 30%Slip", 1, 0, 0, 2, 0
TractSC4 = scalar, U08, 106, "10000RPM/Sec or 70%Slip", 1, 0, 0, 2, 0
TractNOS = bits, U08, 109, [0:0], "No", "Yes"
TractCyc1 = scalar, U08, 112, "3000RPM/Sec or 5%Slip", 1, 0, 1, 255, 0
TractCyc2 = scalar, U08, 113, "4000RPM/Sec or 15%Slip", 1, 0, 1, 255, 0
TractCyc3 = scalar, U08, 114, "6000RPM/Sec or 30%Slip", 1, 0, 1, 255, 0
TractCyc4 = scalar, U08, 115, "10000RPM/Sec or 70%Slip", 1, 0, 1, 255, 0
TractCySec = bits, U08, 109,[2:2] "RPM stable for 0.1S", "Cycle count only"
TractScale = scalar, U08, 119, "%", 0.39216, 0, 0, 100, 0
TractSlip = scalar, U08, 120, "%", 0.39216, 0, 0, 100, 0
TractVSSMax = scalar, U08, 118, "V", 0.0196, 0, 0, 5, 2
TractVSSMin = scalar, U08, 117, "V", 0.0196, 0, 0, 5, 2
TractMode = bits, U08, 109, [3:3], "RPM Based", "Vehicle Speed Sensors"
TractSlipH = scalar, U08, 123, "%", 0.39216, 0, 0, 100, 0
;Dwell control
;running dwell variable railed to 6 - who needs more than 6ms?
;mindischarge railed to 1.5ms. ought to be max 1ms I guess?
dwellcont = bits, U08, 109, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 110, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 111, "ms", 0.1, 0, 0, 6, 1
mindischg = scalar, U08, 143, "ms", 0.1, 0, 0, 1.5, 1
idle_dc_lo = scalar, U08, 122, "dc%", 1, 0, 0, 100, 0
; idle_dc_hi = 0
idleperiod = scalar, U08, 144, "ticks", 1, 0, 0, 255, 0
idlekickrpm = scalar, U08, 145, "RPM", 100, 0, 100, 6000, 0
idlekickdc = scalar, U08, 146, "dc%", 1, 0, 0, 100, 0
idledashdc = scalar, U08, 147, "dc%", 1, 0, 0, 100, 0
idlemindc = scalar, U08, 148, "dc%", 1, 0, 0, 100, 0
pwmidlewhen = bits, U08, 109[6:7], "INVALID", "Warmup only", "Closed loop only", "Warmup+closed loop"
; bc_default = scalar, U08, 124, "dc%", 1, 0, 0, 100, 0
#if MPXH6300A
bc_max_diff = scalar, U08, 125, "kPa", 1.213675, 1.53, 0, 304.0, 0
DecelKPa = scalar, U08, 129, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
bc_max_diff = scalar, U08, 125, "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
DecelKPa = scalar, U08, 129, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
bc_max_diff = scalar, U08, 125, "kPa", 1.0, 0.0, 0.0, 255.0, 0
DecelKPa = scalar, U08, 129, "KPa", 1.0, 0.0, 0.0 255.0, 0
#endif
DecelBoost = bits, U08, 92, [7:7], "Never*^" , "Above KPa Setpoint"
; 300 KPA SENSOR
KPA300Sens = bits, U08, 116, [0:1], "B+G Sensor*^", "300KPa", "INVALID", "400KPa"
KPA300BARO = scalar, U08, 131, "%", 0.39216, 0, 0, 100, 0
KPA300Corr = scalar, U08, 175, "%", 0.39216, 0, 0, 100, 0
; More Boost Controller Stuff
#if CELSIUS
IATBoostSt = scalar, U08, 135, "°C", 0.555, -72, -40, 100, 1
IATBoost = scalar, U08, 136, "°C", 0.555, 0, 0, 102, 1
TPSBooIAT = scalar, U08, 137, "Raw ADC", 1, 0, 0, 255, 0
#else
IATBoostSt = scalar, U08, 135, "°F", 1, -40, -10, 120, 1
IATBoost = scalar, U08, 136, "°F", 1, 0, 0, 120, 1
TPSBooIAT = scalar, U08, 137, "Raw ADC", 1, 0, 0, 255, 0
#endif
BooTbl2Use = bits, U08, 116, [2:2], "Dont Switch*^", "Targets 2"
; MAPdot and ACCEL WIZARD STUFF
mapThresh4 = scalar, U08, 91, "kPa/s", 10, 0, 0, 2550, 0
taeRates4 = array, U08, 176,[ 4], "ms", 0.1960784, 0.0, 0.0, 25.5, 1
maeRates4 = array, U08, 180,[ 4], "ms", 10, 0.0, 0.0, 2550, 0
maeBins4 = array, U08, 184,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeBins4 = array, U08, 188,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA4 = scalar, U08, 192, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh4 = scalar, U08, 193, "v/s", 0.1953125, 0.0, 0.2, 49.8, 3
taeTime4 = scalar, U08, 194, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct4 = scalar, U08, 195, "%", 1.0, 0.0, 0.0, 255.0, 0
taeColdM4 = scalar, U08, 196, "%", 1.0, 0.0, 0.0, 250.0, 0
mapProportion4 = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot"
AccelMapASE = bits, U08, 199, [2:2], "Normal", "Off during ASE"
page = 5
advTable2 = array, U08, 0,[12x12], "deg", 0.352, -28.4, -10.0, 80.0, 0
rpmBins4 = array, U08, 144,[ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins4 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins4 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins4 = array, U08, 156, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins4 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; crankCold5 = scalar, U08, 168, "ms", 0.1, 0.0, 0.0, 25.5, 1
; crankHot5 = scalar, U08, 169, "ms", 0.1, 0.0, 0.0, 25.5, 1
; asePct5 = scalar, U08, 170, "%", 1.0, 0.0, 0.0, 255.0, 0
; aseCount5 = scalar, U08, 171, "", 1.0, 0.0, 0.0, 255.0, 0
wueBins5 = array, U08, 172,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0
; primePulse5 = scalar, U08, 182, "ms", 0.1, 0.0, 0.0, 25.5, 1
CrankPWT1 = scalar, U08, 183, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT2 = scalar, U08, 184, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT3 = scalar, U08, 185, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT4 = scalar, U08, 186, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT5 = scalar, U08, 187, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT6 = scalar, U08, 188, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT7 = scalar, U08, 189, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT8 = scalar, U08, 190, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT9 = scalar, U08, 191, "mS", 0.1, 1, 0, 25.5, 1
CrankPWT10 = scalar, U08, 192, "mS", 0.1, 1, 0, 25.5, 1
; Priming SETTINGS
AlwaysPrime = bits, U08, 193[0:0], "Prime Pulse>0*^", "Always"
PrimeLate = bits, U08, 193[1:2], "Power Up*^", "INVALID", "Twice","After 2 Secs"
PrimeTBox = bits, U08, 193[3:3], "Priming Table", "Standard Prime"
; CLT vs MAT for cranking pulse width
crankpwip = bits, U08, 193, [4:5], "INVALID", "CLT only*^", "MAT only", "CLT,MAT average"
CrankRPM = scalar, U08, 194, "rpm", 100.0, 0.0, 100, 1000, 0
tpsflood = scalar, U08, 195, "raw", 1.0, 0.0, 0.0, 255.0, 0
PrimePulse = scalar, U08, 196, "mS", 0.1, 0.0, 0.0, 25.5, 1
page = 6
veBins3 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins5 = array, U08, 144, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins5 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins5 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins5 = array, U08, 156, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins5 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
ASETable1 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255, 0
ASETable2 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255, 0
ASETable3 = scalar, U08, 170, "%", 1.0, 0.0, 0.0, 255, 0
ASETable4 = scalar, U08, 171, "%", 1.0, 0.0, 0.0, 255, 0
ASETable5 = scalar, U08, 172, "%", 1.0, 0.0, 0.0, 255, 0
ASETable6 = scalar, U08, 173, "%", 1.0, 0.0, 0.0, 255, 0
ASETable7 = scalar, U08, 174, "%", 1.0, 0.0, 0.0, 255, 0
ASETable8 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 255, 0
ASETable9 = scalar, U08, 176, "%", 1.0, 0.0, 0.0, 255, 0
ASETable10 = scalar, U08, 177, "%", 1.0, 0.0, 0.0, 255, 0
ASETime = scalar, U08, 178, "", 1.0, 0.0, 0.0, 255, 0
aseIgnCount = bits, U08, 179, [0:0], "Cycles*^", "Sec"
ASEFixDe = bits, U08, 179, [1:1], "Decay *^", "Fixed then Decay"
ASEFixTim = scalar, U08, 180, "", 1.0, 0.0, 0.0, 255, 0
#if CELSIUS
ASEFixTemp = scalar, U08, 181, "°C", 0.555, -72, -40, 100, 1
#else
ASEFixTemp = scalar, U08, 181, "°F", 1, -40, -10, 120, 1
#endif
VEFixASE = bits, U08, 179, [2:2], "Normal MAP *^", "Fixed MAP"
#if MPXH6300A
VEFixValue = scalar, U08, 182, "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
VEFixValue = scalar, U08, 182, , "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
VEFixValue = scalar, U08, 182, , "kpa", 0.965, 9, 0.0, 255.0, 0
#endif
page = 7 ; TARGET AFR table 1 BINS FOR VE 1 (First find which sensor used)
#if NARROW_BAND_EGO
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif WB_1_0_LINEAR
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif WB_UNKNOWN
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DIYWB_NON_LINEAR
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif TECHEDGE_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1
#elif INNOVATE_1_2_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1
#elif INNOVATE_0_5_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1
#elif INNOVATE_LC1_DEFAULT
afrBins1 = array, U08, 0, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1
#elif ZEITRONIX_NON_LINEAR
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#else
; Should never get here but just incase put message on screen
#error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating."
#exit ; Terminate MT
#endif
rpmBins6 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins6 = array, U08, 72, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins6 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins6 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; TARGET AFR table 2 BINS FOR VE 3 (First find which sensor used)
#if NARROW_BAND_EGO
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif WB_1_0_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DIYWB_NON_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif TECHEDGE_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229, 9.0, 19.0, 1
#elif INNOVATE_1_2_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 0.0, 20.0, 1
#elif INNOVATE_0_5_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255, 10.0, 20.0, 1
#elif INNOVATE_LC1_DEFAULT
afrBins2 = array, U08, 80, [8x8], "AFR", 0.057647, 127.5, 10.0, 20.0, 1
#elif ZEITRONIX_NON_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#else
; Should never get here but just incase put message on screen
#error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating."
#exit ; Terminate MT
#endif
rpmBins7 = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins7 = array, U08, 152, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins7 = array, U08, 152, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins7 = array, U08, 152, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#else
tpsBins7 = array, U08, 152, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
page = 8 ; boost controller targets+ rotary split table
;target kpa
#if MPXH6300A
bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
bcBins1 = array, U08, 0, [6x6], "kpa", 1, 0, 0.0, 255.0, 0
bcBins3 = array, U08, 96, [6x6], "kpa", 1, 0, 0.0, 255.0, 0
#endif
bcrpmBins1 = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
bctpsBins1 = array, U08, 42,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0
;default duty cycle
bcBins2 = array, U08, 48, [6x6], "duty", 0.392, 0, 0.0, 100.0, 0
bcrpmBins2 = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
bctpsBins2 = array, U08, 90,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0
bcrpmBins3 = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 100, 25500, 0
bctpsBins3 = array, U08, 138,[ 6], "tps%", 0.392, 0.0, 0.0, 100.0, 0
#if SPEED_DENSITY
#if MPXH6300A
splitkpaBins = array, U08, 186, [ 6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
splitkpaBins = array, U08, 186, [ 6], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
splitkpaBins = array, U08, 186, [6], "kpa", 1, 0, 0.0, 255.0, 0
#endif
#else
splittpsBins = array, U08, 186, [ 6], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
splitTable = array, U08, 144, [6x6], "deg", 0.352, -28.4, -10.0, 80.0, 0
splitrpmBins = array, U08, 180, [ 6], "RPM", 100.0, 0.0, 100, 25500, 0
rotary2 = bits, U08, 192, [0:0], "Off", "On"
fixedsplit = scalar, U08, 193, , "deg", 0.352, -28.4, -10.0, 30.0, 0
;-------------------------------------------------------------------------------
[Menu]
;----------------------------------------------------------------------------
; There are five pre-defined values that may be used to define your menus.
; The first four allow access to the "standard" dialog boxes, the last one
; merely draws a separator (horizontal line) in the menu.
;
; std_constants
; std_enrichments
; std_realtime
; std_warmup
;
; std_separator
;
; If you use any of the std_constants, std_enrichments or std_warmup
; editors, they may be optionally suffixed with a page number (only
; useful for multi-page code variants), which causes them to edit the
; specified page. If you leave off the page specifier, they edit logical
; page one as specified in the Constants section.
;
;----------------------------------------------------------------------------
menu = "Fuel Tables&1+3"
subMenu = std_constants, "&Constants 1", 1
subMenu = egoControl1, "&Exhaust Gas Settings", 1
subMenu = veTable1Tbl, "&VE Table 1", 0
subMenu = afrTable1Tbl, "A&FR Targets for VE Table 1", 0, { AfrTar }
subMenu = veTable3Tbl, "VE Table &3", 0, { UseVE3 }
subMenu = afrTable2Tbl, "AF&R Targets for VE Table 3", 0, { UseVE3 & AfrTar2 }
menu = "Crank/WarmUp"
subMenu = CrankTble, "Cranking Settings", 5
subMenu = AfterStTbl, "After start Enrichment Settings", 6
subMenu = std_warmup, "&Warmup Wizard", 5
menu = "Fuel Table&2(DT)", { inj2t }
subMenu = std_constants, "&Constants 2 (DT)", 2
subMenu = egoControl2, "&Exhaust Gas Settings", 2
subMenu = veTable2Tbl, "&VE Table 2 (DT)"
menu = "&General"
subMenu = fuelTable, "&Fuel table selection"
subMenu = LambdaSet, "&Lambda AFR Settings"
subMenu = OpenLoop, "&Open Loop Mode"
subMenu = OvrBoo, "Over &Boost Protection"
subMenu = HardLim, "&Hard Cut/Limiter Type"
subMenu = RevLimiterS, "Re&v Limiter", 4
subMenu = LaunchSettings, "Launch &Control"
subMenu = OvrRun, "Over &Run Settings"
subMenu = AccelDecc, "&Accel Deccl Mode"
subMenu = traction, "Anti-Rev System (&Traction Control)"
subMenu = traction2, "Anti-Rev System cont...", 0, {TractionOn}
subMenu = idleControl, "&Idle Control", 0, { !fidleUse }
subMenu = boostControl, "&Boost Control", 0, { boostUse }
subMenu = boostTbl1, "Boost kpa targets table1", 8, { boostUse }
subMenu = boostTbl3, "Boost kpa targets table2", 8, { boostUse & BooTbl2Use}
subMenu = boostTbl2, "Boost duty targets", 8, { boostUse }
subMenu = boostIAT, "IAT Related Boost", 0, { boostUse }
menu = "Spar&k", { ignmode }
subMenu = sparkSettings, "&Spark Settings"
subMenu = sparkTbl, "Spark Table &1"
subMenu = sparkTbl2, "Spark Table &2", 0, { STTable2On }
subMenu = SparkT2, "Spar&k Table selection",
subMenu = Knock, "Kn&ock System"
subMenu = IatCltIg, "&IAT/Clt Related Ignition"
subMenu = dwellSettings, "Dwell settings"
subMenu = wheelsim, "Stim for wheel"
subMenu = rotarySettings, "Rotary trailing settings"
subMenu = splitTbl, "Rotary split Table ", 0, { rotary2 }
menu = "&Code Config"
subMenu = codeBase, "&Codebase and outputs function"
subMenu = advanced, "(NEW)&Advanced code options"
subMenu = wheeldecoder, "Wheel decoder settings", 0, { wheelon }
subMenu = MapSettings, "MA&P Sensor Settings"
subMenu = BarroCor, "&Barometric Correction"
subMenu = outputs, "&Outputs"
subMenu = outputs2, "S&hift light/ fan/ Output 3+4"
subMenu = WaterInj, "&Water Injection Settings", 0, { !x2use }
subMenu = NosSystem, "&Nitrous System"
subMenu = Staged, "&Staged Injection"
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_accel, "&Acceleration Wizard", 4
subMenu = std_separator
subMenu = veTable1Map, "VE Table &1"
subMenu = veTable2Map, "VE Table &2", 0, { inj2t }
subMenu = veTable3Map, "VE Table &3" 0, { UseVE3 }
subMenu = sparkMap, "Spar&k Table1", 0, { ignmode }
subMenu = sparkMap2, "Spark &Table2", 0, { STTable2On }
subMenu = splitMap, "Rotary Split", 0, { rotary2 }
menu = "Help"
subMenu = std_separator
subMenu = Fhelp1, "&General Help"
subMenu = Fhelp2, "&Fuel Table Selection"
subMenu = Fhelp3, "&Lambda Settings"
subMenu = Fhelp4, "&Hard Cut Limiter Type"
subMenu = Fhelp5, "&Launch Control"
subMenu = Fhelp6, "Accel Decel &Mode"
subMenu = Fhelp7, "Rev Limiter"
subMenu = Shelp3, "&Spark Settings"
subMenu = Shelp4, "Spar&k Table Selection"
subMenu = Shelp1, "Kn&ock System"
subMenu = Shelp2, "&IAT/CLT Related Ignition"
subMenu = Chelp1, "&Codebase and output functions"
subMenu = Chelp2, "&Advanced code options"
subMenu = Chelp3, "&Barometric Correction"
subMenu = Chelp4, "&Water Injection"
subMenu = Chelp5, "&NOS System"
subMenu = Chelp6, "Staged Injection Syste&m"
subMenu = Chelp7, "MAP Sensor Selection"
subMenu = Chelp8, "Over Run Settings"
;-------------------------------------------------------------------------------
[UserDefined]
dialog = egoControl1, "EGO Control",1
field = "EGO Sensor Type", egoType1
field = "EGO Switch Point", egoSwitch1
field = "Ignition Events per Step", egoCount1
field = "Controller Step Size", egoDelta1
field = "Controller Authority ±", egoLimit1
field = "Active Above Coolant Temp", egoTemp1
field = "Active Above RPM", egoRPM1
field = ""
field = "PLEASE NOTE:"
field = "For Warmup and Accel bins please see"
field = "Warmup and Accel Wizards in Tuning"
dialog = egoControl2, "EGO Control for Second O2 Sensor",2
field = "Second Lambda fitted on X7?", TwoLambda
field = ""
field = "EGO Sensor Type", egoType2, {TwoLambda}
field = "EGO Switch Point", egoSwitch2, {TwoLambda}
; field = "Ignition Events per Step", egoCount2, {TwoLambda}
field = "Controller Step Size", egoDelta2, {TwoLambda}
field = "Controller Authority ±", egoLimit2, {TwoLambda}
field = "Active Above Coolant Temp", egoTemp2, {TwoLambda}
field = "Active Above RPM", egoRPM2, {TwoLambda}
; field = ""
; field = "PLEASE NOTE:"
; field = "For Warmup and Accel bins please see"
; field = "Warmup and Accel Wizards in Tuning"
dialog = codeBase, "Power cycle after changes", 4
topicHelp = Chelp1
field = "F1 for HELP"
field = ""
field = "Choose one code type"
field = "Distributor (MSnS)", msnsCyl
field = "Neon/420A decoder", neonCrank
field = "Wheel decoder (e.g. 36-1)", wheelon
field = "EDIS", edis
field = "EDIS multispark", edismulti, { edis }
field = "TFI ignition", tfi
field = "HEI Ignition", hei7
field = "Choose input/output pins to use"
field = "FIDLE function", fidleUse
field = "LED17 function", led17Use
field = "LED18 function", led18Use
field = "LED19 function", led19Use
field = "Multiplex ignition?", toy_dli
field = "X2 function", x2use
field = "X4 function", boostUse
field = "output3 function", out3sparkd
dialog = wheeldecoder, "Power cycle after changes", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Wheel decoder base teeth", numteeth
field = "2nd trigger / missing teeth", wd_2trig
field = "Missing teeth", onetwo, { !wd_2trig }
field = "Trig pos A", trig1
field = "Trig return pos A", trig1ret
field = "Trig pos B", trig2
field = "Trig return pos B", trig2ret
field = "Trig pos C", trig3
field = "Trig return pos C", trig3ret
field = "Trig pos D", trig4
field = "Trig return pos D", trig4ret
; field = "ONLY for late leading rotary"
; field = "Trig pos A 2", trig1r
; field = "Trig pos B 2", trig2r
; field = "Trig pos C 2", trig3r
dialog = advanced, "Power cycle after changes",4
topicHelp = Chelp2
field = "F1 for HELP"
field = ""
field = "Functions from DT (*=B+G default)"
field = "EGO Correction Step Counter", egoIgnCount
field = "Accel Timer", taeIgnCount
field = "Hybrid Alpha N", hybridAN
field = ""
field = "KPa in Alpha-n Calcs:", AlphBaroCor, {algorithm1}
field = ""
field = "EDIS multispark", edismulti, { edis }
field = "EDIS multispark rpm limit", edismultirpm, { edis & edismulti }
dialog = MapSettings, "Power Cycle after Changes",4
topicHelp = Chelp7
field = "F1 for HELP"
field = "ENSURE B+G SELECTED UNLESS Non"
field = "Standard MAP sensor fitted"
field = "Type of MAP Sensor:", KPA300Sens, { mapSensor1 }
field = ""
field = "Ensure ini file #set correctly if"
field = "anything other than B+G selected"
field = "*ALL KPa settings will change*"
field = ""
field = "Baro Correction factor needs to be:"
field = "24% for GM 300KPa sensor"
field = "28% for 6300A series sensor"
field = "78% for 6400A series sensor"
field = "Baro Correction Factor", KPA300BARO, {mapSensor1 & KPA300Sens}
field = "KPa Correction factor needs to be:"
field = "24% for GM 300KPa sensor"
field = "28% for 6300A series sensor"
field = "50% for 6400A series sensor"
field = "KPa Correction Factor", KPA300Corr, {mapSensor1 & KPA300Sens}
dialog = fuelTable, "Fuel Table selection",4
topicHelp = Fhelp2
field = "F1 for HELP"
field = ""
field = "* = B+G default ^ = MSnS default"
field = "DT = Dual Table default"
field = "Injector channel 1:"
field = "use table : always 1"
field = "GammaE:", inj1g
field = "Injector channel 2:"
field = "use table:", inj2t
field = "GammaE:", inj2g
field = "Pulse inj2 during cranking", inj2cr
field = ""
field = "Switch VE Table1 for VE Table3 when"
field = "NOS on or when Pin6 JP1 low.", UseVE3
field = "Delay for changing to VE3", VE3Delay, {UseVE3}
dialog = RevLimiterS, "Rev Limiter", 4
topicHelp = Fhelp7
field = "F1 for HELP"
field = ""
field = "Rev Limiter"
field = "MSnS Soft rev limit", SoftRevLim
field = "MSnS Soft limit retard", SoftLimRetard
field = "MSnS Soft limit max time", SoftLimMax
field = "MSnS Hard Rev limit", HardRevLim
dialog = outputs,"Outputs",4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Output turns off when actual value ="
field = "On/Off limit - Hysterisis"
field = "To create an output window set Upper"
field = "Limit. For normal output set to zero"
field = "OUTPUT 1 (X4) source", out1src, { !boostUse }
field = "On-Off Limit", out1lim, { !boostUse }
field = "Off Hysterisis", out1Hysis, { !boostUse }
field = "Upper Limit", Out1UpLim, { !boostUse }
field = "Output1 Invert for Temps", InvOut1, { !boostUse }
field = ""
field = "OUTPUT 2 (X5) source", out2src
field = "On-Off Limit", out2lim
field = "Off Hysterisis", out2Hysis
field = "Upper Limit", Out2UpLim
field = "Output2 Invert for Temps" InvOut2
dialog = outputs2,"More Outputs",4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "OUTPUT 3 (U1 pin15)"
field = "Source or Source+OUTPUT1", Out3_Out1, { !out3sparkd }
field = "OUTPUT 3 (PTD0) source", out3src, { !out3sparkd }
field = "On-Off Limit", out3lim, { !out3sparkd }
field = "Off Delay Timer", out3Timer, { !out3sparkd }
field = ""
field = "OUTPUT 4 (LED18)"
field = "OUTPUT 4 (LED18) source", out4src, {!out4FAN & led18_2Use}
field = "On-Off Limit", out4lim, {!out4FAN & led18_2Use}
field = "Use above source or FAN Control", out4FAN, {led18_2Use}
field = ""
field = "Shift Light", shiftUse
field = "Shift light Lower Threshold", ShiftLower, { shiftUse }
field = "Shift Light Upper Threshold", ShiftUpper
;, { shiftUse & (!wd_2trig) }
field = "Fan control (X2 or LED18)"
field = "Fan on temperature", efanontemp, { x2use + out4FAN }
field = "Fan off temperature", efanofftemp, { x2use + out4FAN }
dialog = sparkSettings,"Spark Settings",3
topicHelp = Shelp3
field = "F1 for HELP"
field = ""
field = "Trigger Angle = Setting + Additions"
field = "e.g. 77+45= 122"
field = "Trigger Angle ", TrigAng
field = "Trigger Angle addition", Trig_plus
field = "Note: If req Trigger above 90"
field = "then select +22.5 Deg"
field = "if above 112.5 select +45"
field = ""
field = "Cranking Timing", TrigCrank, { !edis }
field = "Cranking advance Angle", CrankAng, { TrigCrank + edis }
field = "Hold Ignition", IgHold
field = "Spark Output Inverted", IgInv
field = ""
field = "Fixed Angle (-10 = use map)", FixAng
field = "Trim Angle", Trim
dialog = rotarySettings,"Rotary Settings",8
field = "Experimental trailing split"
field = "For twin rotor only, check msefi before using"
field = "trailing split support", rotary2
field = "NOTE!"
field = "In the split table"
field = "-1 means trailing OFF"
field = "0 means fire simultaneously"
field = "other values are the trailing delay in degrees"
field = ""
field = "Fixed split for testing (-10 = map)", fixedsplit, { rotary2 }
dialog = dwellSettings,"Dwell Settings",4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Dwell control", dwellcont
field = "Use: Spark output duty cycle", dwellduty50, { !dwellcont }
field = "Or:"
field = " Cranking dwell", dwellcrank, { dwellcont }
field = " Running dwell", dwellrun, { dwellcont }
field = "Minimum discharge period", mindischg, { dwellcont }
field = ""
field = "Note"
field = "these times are for 12V. Battery voltage correction"
field = "is applied. At higher voltages the time is reduced"
field = "and when low it is increased"
dialog = wheelsim,"Simulator for wheel",4
topicHelp = Fhelp1
field = "ONLY FOR USE ON STIM - DO NOT USE ON CAR"
field = ""
field = "Wheel simulator", whlsim
field = "Number of steps/outputs", whlsimcnt
dialog = idleControl, "Fielding 2-Wire Idle Control", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Algorithm", pwmIdle
field = "When to use PWM idle", pwmidlewhen, { pwmIdle }
field = "Idle duty cycle at lower temp", idle_dc_lo, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) }
field = "Idle duty cycle at upper temp = 0%"
field = "Throttle Threshold", idleThresh, { pwmIdle }
field = "Fast Idle (lower) Temp", fastIdleTemp, { pwmIdle }
field = "Slow Idle (upper) Temp", slowIdleTemp, { pwmIdle }
field = "Fast Idle RPM", fastIdleRPM, { pwmIdle & (pwmidlewhen >1) }
field = "Slow Idle RPM", slowIdleRPM, { pwmIdle & (pwmidlewhen >1) }
field = "Idle tuning settings"
field = "Recalc every x ignition events", idleperiod, { pwmIdle & (pwmidlewhen >1) }
field = "Low rpm to kick up duty", idlekickrpm, { pwmIdle & (pwmidlewhen >1) }
field = "Kick up duty cycle", idlekickdc, { pwmIdle & (pwmidlewhen >1) }
field = "Dashpot duty cycle", idledashdc, { pwmIdle & (pwmidlewhen >1) }
field = "Minimum duty cycle", idlemindc, { pwmIdle & (pwmidlewhen >1) }
; upper idle duty cycle is always zero
dialog = boostIAT, "IAT Related Boost",4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Remove boost related to IAT"
field = "When IAT above", IATBoostSt
field = "remove 1 psi (7KPa) every:", IATBoost
field = "when tps above:", TPSBooIAT
dialog = boostControl, "Boost Controller Parameters", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Solenoid PWM Rate", freqDiv
field = "Controller Update", bcUpdateRate
field = "Proportional Gain", pGain
field = "Differential Gain", dGain
field = ""
field = "Increase Voltage =", BoostDir
field = ""
field = "Switch Boost Target Tables when"
field = "NOS on or JP1 pin6 low", BooTbl2Use
field = ""
field = "Closed loop kpa limit", bc_max_diff
field = "This is the difference between target"
field = "boost level and actual. If greater"
field = "than this limit then goes open loop"
field = "and uses duty cycle from table"
field = "Note. 0% duty = low boost, 100% = full boost"
; ENHANCED STUFF
dialog = LaunchSettings, "Launch Control", 4
topicHelp = Fhelp5
field = "F1 for HELP"
field = ""
field = "Launch Control"
field = "Launch Control", launchUse
field = "Retard Ignition above ", LachRpm, {launchUse && ignmode}
field = "Retard to : ", LachDeg, {launchUse && ignmode}
field = "Enable Launch when TPS above ", LachTps, {launchUse}
field = "Launch Control Hard Rev Limit", LaunchLim, {launchUse}
field = "Variable Launch", VLaunch, {launchUse}
dialog = LambdaSet, "Lambda Sensor Targets", 4
topicHelp = Fhelp3
field = "F1 for HELP"
field = ""
field = "Set to 255KPa for B+G Default"
field = "Change Ego Limit above", EgoLimKPa
field = "Change Ego Limit to", EgoLim2
field = ""
field = "8x8 AFR Target Tables"
field = "For VE Table 1", AfrTar
field = "For VE Table 3", AfrTar2
field = "Control Algorithm for AFR tables", KpaTPSTar
field = ""
field = "Use Target tables:", TPSTar
field = "Use Enrichment EGO Switch Point until TPS:", TPSAFRPoint, {TPSTar}
field = ""
dialog = OpenLoop, "Open Loop Mode", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Open Loop O2 Correction:", OLoopEgo
field = ""
field = "If TPS selected then go Open Loop @", TpsOn
field = "If KPa selected then go Open Loop @", KPaOn
field = "Set selection to zero for no Openloop"
field = "Restart MS after changes"
dialog = WaterInj,"Water Injection Setpoints", 4
topicHelp = Chelp4
field = "F1 for HELP"
field = ""
field = "Please Note:"
field = "O2 correction turns OFF when water starts"
field = "Water Injection", WaterInj
field = "Start Water Injection when Boost above", StartWIKPa, { WaterInj }
field = "and engine speed above:", WaterIRpm, { WaterInj }
field = "and Manifold Air Temp above", WaterIIat, { WaterInj }
dialog = IatCltIg, "IAT/Clt Related Ignition", 4
topicHelp = Shelp2
field = "F1 for HELP"
field = ""
field = "Coolant/Iat Related Advance", CltAdv
field = "Add 1 degree of ignition advance every", IgAdvDeg, { CltAdv }
field = "when below: Coolant setpoint ", IgAdvTemp, { CltAdv }
field = "Note: IAT Retard will work when 3C above "
field = " Coolant setpoint"
field = "Max allowable added ignition advance ", MaxIatAdv, { CltAdv }
field = " "
field = "Pull 1 degree of ignition retard every", IgRetDeg, { CltAdv }
field = "when MAP above", IatAdvKpa, { CltAdv }
field = "and IAT above", IgRetTemp, { CltAdv }
dialog = Knock,"Knock Detection System", 4
topicHelp = Shelp1
field = "F1 for HELP"
field = ""
field = "Knock Detector System", KnockOn
field = "Ignore Knocks when above", KnockRpm, { KnockOn }
field = "Ignore Knocks when MAP above ", KnockKpa, { KnockOn }
field = "Ignore Knocks when below ", KnockRpmL, { KnockOn }
field = "First Knock: Retard by", KnockRet, { KnockOn }
field = "Subsequent Knocks: Retard by", KnockSb, { KnockOn }
field = "Max Retard Allowed ", KnockMax, { KnockOn }
field = "Advance when no knock:", KnockAdv, { KnockOn }
field = "Wait time between steps:", KnockTim, { KnockOn }
field = ""
field = "If using Boost Control:"
field = "Amount of boost to remove/add in"
field = "the above steps" , KnockBoost, {boostUse & KnockOn}
field = "Maximum boost to remove", BoostMaxKn, {boostUse & KnockOn}
dialog = SparkT2, "Spark Table selection", 4
topicHelp = Shelp4
field = "F1 for HELP"
field = ""
field = "Use Spark Table 1"
field = "untill JP1 pin6 input low or"
field = "NOS system on, then use:", STTable2On
field = "Delay before switching to Table 2", ST2Delay, {STTable2On}
dialog = OvrBoo, "Over Boost Protection", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "OVER BOOST PROTECTION"
field = "Over Boost Hard Cut if Boost hits", OvrBKpa
dialog = HardLim, "Hard Cut/Limiter Type", 4
topicHelp = Fhelp4
field = "F1 for HELP"
field = ""
field = "**********C A U T I O N:**************"
field = "IGNITION CUT IS NOT SUITABLE"
field = "FOR VEHICLES FITTED WITH"
field = " CATALYTIC CONVERTERS"
field = "*Spark Cut doesn't work for Edis users*"
field = "BASE NUMBER to cut sparks from", SparkCutBase
field = "REV LIMITER"
field = "Hard Cut Type", HCutType
field = "Cut 'n' sparks out of BASE NUMBER", HCutSpark
field = "LAUNCH CONTROL"
field = "Hard Cut Type", HCutLCType
field = "Cut 'n' sparks out of BASE NUMBER", HCutLCSpark
field = "OVER BOOST PROTECTION"
field = "Hard Cut Type", OvrBCutType
field = "Cut 'n' sparks out of BASE NUMBER", SparkCutBNum
dialog = NosSystem, "Nitrous System", 4
topicHelp = Chelp5
field = "F1 for HELP"
field = ""
field = "Nitrous Control", nitrousUse
field = "Turn NOS on when above", NosRpm, {nitrousUse}
field = "And Coolant Temp above", NosClt, {nitrousUse}
field = "And TPS >", NosTps, {nitrousUse}
field = ""
field = "Additional Fuel PW @ NOS min rpm", NosPWLo, {nitrousUse}
field = "NOS Max RPM", NosRpmMax, {nitrousUse}
field = "Additional Fuel PW @ NOS Max RPM", NosPWHi, {nitrousUse}
field = ""
field = "If ST2 off Retard Ignition by" NosAngle, {nitrousUse}
field = ""
field = "If Dual Table enrich ", DtNos, {nitrousUse}
field = ""
field = "Turbo Anti-Lag System: (see help)", NosLagSystem, {nitrousUse}
field = "Fire NOS when conditions above met"
field = "and MAP above", NosLowKpa, {nitrousUse & NosLagSystem}
field = "and MAP below", NosHiKpa, {nitrousUse & NosLagSystem}
dialog = Staged, "Staged Injection", 4
topicHelp = Chelp6
field = "F1 for HELP"
field = ""
field = "STAGED INJECTION SETTINGS"
field = " Not suitable with DT"
field = "Injector Staging Mode:", IStagedMode
field = "Injector Bank 2 off until:"
field = "Staging Point (RPM/100, KPa, or TPSADC)", StgTrans, {IStagedMode}
field = "Staging Off Delta (units as above)", StgDelta, {IStagedMode}
field = "Then Reduce Banks #1, #2 by Scaling Factor"
field = "Staged Scaling Factor (Prim Flow/Total Flow)", ScaleFac, {IStagedMode}
field = "Restart MS after changes"
dialog = OvrRun, "Over Run Fuel Cut", 4
topicHelp = Chelp8
field = "F1 for HELP"
field = ""
field = "Over Run Fuel Cut", OvrRunC
field = "Cut fuel when:"
field = "RPM greater than:", OvrRunRpm, {OvrRunC}
field = "and KPa lower than: ", OvrRunKpa, {OvrRunC}
field = "and TPS lower than: ", OvrRunTps, {OvrRunC}
field = "and coolant greater than:", OvrRunClt, {OvrRunC}
field = "after", OvrRunTimr, {OvrRunC}
dialog = AccelDecc, "Accel Decel Trigger dot", 4
topicHelp = Fhelp6
field = "F1 for HELP"
field = ""
field = "Accel Enrichments Trigger:", AccDecEnrich
field = "Decel Enrichments Trigger:", DecEnrichment
field = ""
field = "Accel Timer", taeIgnCount
field = ""
field = "Decay Accel Enrichment:", DecayAccel
field = "Accel value at end of Accel Time:", DecayAcPoint, {DecayAccel}
field = ""
field = "Turn Decel Enrich off when :" , DecelBoost
field = "Cut Decel Setpoint:", DecelKPa, {DecelBoost}
field = ""
field = "If MAPdot:"
field = " Turn Accel Enrich off in boost", KPaDotBoost, {AccDecEnrich}
field = " Turn Accel Enrich off during ASE", AccelMapASE, {AccDecEnrich}
field = ""
field = "Please see the Accel Wizard in the Tuning Section"
dialog = BarroCor, "Barometric Correction", 4
topicHelp = Chelp3
field = "F1 for HELP"
field = ""
field = "To aid processor resets causing"
field = "the engine to run weak or rich"
field = "Max KPa for Baro Correction", BarroHi
field = "Min KPa for Baro Correction", BarroLow
dialog = traction, "Anti-Rev System(Traction Control)", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Traction Control", TractionOn
field = "MODE=:", TractMode
field = "(RPM Based)RPMdot Threshold", RPMThresh, {!TractMode}
field = "(VSS Based)Sensor Differential", TractScale, {TractMode}
field = "(VSS Based)Low Speed Slip Threshold ", TractSlip, {TractMode}
field = "(VSS Based)Half Speed Slip Threshold", TractSlipH, {TractMode}
field = "Operate Anti-Rev between Max and Min"
field = "(VSS Based)Max Undriven input", TractVSSMax, {TractMode}
field = "(VSS Based)Min Undriven input", TractVSSMin, {TractMode}
field = "Enrichment Bins (mSec)"
field = "", RPM1S
field = "", RPM2S
field = "", RPM3S
field = "", RPM4S
field = "Retard Ignition by",
field = "", TractRet1, { ignmode }
field = "", TractRet2, { ignmode }
field = "", TractRet3, { ignmode }
field = "", TractRet4, { ignmode }
dialog = traction2, "Anti-Rev System cont...", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Spark Cut 'n' from Base Value"
field = "", TractSC1, { ignmode }
field = "", TractSC2, { ignmode }
field = "", TractSC3, { ignmode }
field = "", TractSC4, { ignmode }
field = ""
field = "Turn NOS off during Anti-Rev?", TractNOS, { nitrousUse }
field = ""
field = "Retard, Enrichment + Spark cut"
field = "for nn Engine Cycles"
field = "", TractCyc1
field = "", TractCyc2
field = "", TractCyc3
field = "", TractCyc4
field = "or untill:", TractCySec
dialog = CrankTble, "Cranking / Prime Table", 5
topicHelp = Chelp9
field = "F1 for HELP"
field = "Cranking RPM", CrankRPM
field = "TPS value for flood clear", tpsflood
field = "Prime Pump when", AlwaysPrime
field = "Fire Priming Pulse", PrimeLate
field = "Priming PW Source", PrimeTBox
field = "Standard Priming PW:", PrimePulse, {PrimeTBox}
field = "Cranking Pulse Width Temps", crankpwip
#if CELSIUS
field = "Cranking/Priming PW Table"
field = " -40 C ", CrankPWT1
field = " -29 C ", CrankPWT2
field = " -18 C ", CrankPWT3
field = " -7 C ", CrankPWT4
field = " 4 C ", CrankPWT5
field = " 16 C ", CrankPWT6
field = " 27 C ", CrankPWT7
field = " 38 C ", CrankPWT8
field = " 54 C ", CrankPWT9
field = " 71 C ", CrankPWT10
#else
field = " Pulse Widths"
field = " -40 F ", CrankPWT1
field = " -20 F ", CrankPWT2
field = " 0 F ", CrankPWT3
field = " 20 F ", CrankPWT4
field = " 40 F ", CrankPWT5
field = " 60 F ", CrankPWT6
field = " 80 F ", CrankPWT7
field = " 100 F ", CrankPWT8
field = " 130 F ", CrankPWT9
field = " 160 F ", CrankPWT10
#endif
dialog = AfterStTbl, "After Start Enrichment (ASE) Settings", 6
topicHelp = Chelp10
field = "F1 for HELP"
field = "ASE Timer", aseIgnCount
field = "ASE TOTAL Time", ASETime
field = ""
field = "ASE Mode", ASEFixDe
field = "MAP mode during ASE", VEFixASE
field = ""
field = "Use Fixed ASE/MAP when coolant below:", ASEFixTemp, {ASEFixDe + VEFixASE}
field = "Fixed ASE/MAP Time Period", ASEFixTim, {ASEFixDe + VEFixASE}
field = "Fixed MAP Value", VEFixValue, {VEFixASE}
#if CELSIUS
field = "After Start Enrichment Table"
field = " -40 C ", ASETable1
field = " -29 C ", ASETable2
field = " -18 C ", ASETable3
field = " -7 C ", ASETable4
field = " 4 C ", ASETable5
field = " 16 C ", ASETable6
field = " 27 C ", ASETable7
field = " 38 C ", ASETable8
field = " 54 C ", ASETable9
field = " 71 C ", ASETable10
#else
field = "After Start Enrichment Table"
field = " -40 F ", ASETable1
field = " -20 F ", ASETable2
field = " 0 F ", ASETable3
field = " 20 F ", ASETable4
field = " 40 F ", ASETable5
field = " 60 F ", ASETable6
field = " 80 F ", ASETable7
field = " 100 F ", ASETable8
field = " 130 F ", ASETable9
field = " 160 F ", ASETable10
#endif
;*************************** HELP STUFF ***************************************
help = Fhelp1, "General Help"
webHelp = "http://megasquirt.sourceforge.net/extra/"
text = "For MS (fuel only) select *.
"
text = "For MSnS select ^
"
text = "
"
text = "For more help or problems please see the Extra Website by clicking the Web Help button.
"
text = "
"
text = "If you can't find an answer there post a thread on http://www.msefi.com
"
text = "or contact"
text = " james@nscc.info
"
text = "or contact"
text = " philip.ringwood@ntlworld.com"
help = Fhelp2, "Fuel Table Selection"
webHelp = "http://megasquirt.sourceforge.net/extra/tableswitch.html"
text = "INJECTOR CH1 (PW1)"
text = "This will always use VE Table1
"
text = "GammaE On or OFF = :"
text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
"
text = "
"
text = "INJECTOR CH2 (PW2)"
text = "Either use VE Table 1 or 2, 1=Normal 2=DT
"
text = "GammaE On or Off = :"
text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
"
text = "Pulse Inj CH2 during cranking"
text = "Do you want CH2 to add fuel whilst cranking
"
text = "
"
text = "The VE Table 1 can be switched to"
text = "VE Table 3 on the run for use with Spark Table2"
text = "or on its own if ST2 not selected in"
text = "Spark Table Selection
"
text = "VE3 will replace VE1 when NOS running or Pin6 JP1 low.
"
text = "This can be used in any mode, but in DT "
text = "it will obviously only change PW1."
text = "If not in DT it will change both PW's.
"
help = Fhelp3,"Lambda Settings"
webHelp = "http://megasquirt.sourceforge.net/extra/dualego.htm"
text = "You can now change the Ego Limit"
text = "depending on the MAP KPa. If you don't"
text = "want it to change simply put 255 in the"
text = "KPa setpoint.
"
text = "
"
text = "There are also 2 AFR target tables.
"
text = "Table 1 contains the target AFR's for"
text = "VE Table 1.
"
text = "Table 2 contains the target AFR's for"
text = "VE Table 3.
"
text = "NOTE: These are just targets, they dont"
text = "replace your VE table and should be"
text = "thought of as a fine tune for the VE table.
"
text = "If you dont want to use them simply"
text = "select them off. The target will then "
text = "be as set in the enrichments page.
"
text = "
"
text = "We have added the facility to run from the target tables when above a certain TPS setpoint.
"
text = "If you want to use this set Use Targets to Above TPS and set the TPS setpoint.
"
text = "
"
help = Fhelp4,"Hard Cut Limiter Type"
text = "If using any spark mode other than Edis then you have the"
text = "option to cut spark and or fuel in "
text = "the rev limiting modes.
"
text = "The Base Number is the number of sparks"
text = "that can be cut from (yy). This value will"
text = "depend on number of cylinders.
"
text = "Then select how many sparks to cut"
text = "in each mode(xx).
"
text = "So you will get xx cuts in every yy sparks.
"
help = Fhelp5, "Launch Control"
webHelp = "http://megasquirt.sourceforge.net/extra/launch.htm"
text = "Active low input TOMI Header JP1 Pin4
"
text = "This holds the RPM by first activating a ignition retard
"
text = "then a hard cut to help you get a good Launch
"
text = "
"
text = "Variable Launch, when selected,"
text = "stores the current engine RPM"
text = "as soon as the input is switched low"
text = "and uses that as its Hard Cut RPM.
"
text = "This is for use with a thumb switch"
text = "so launch rpm can be altered at the"
text = "track.
"
help = Fhelp6, "Accel Decel Mode"
webHelp = "http://megasquirt.sourceforge.net/extra/mapdot.html"
text = "Select between TPSdot / MAPdot accel/decel enrichment
"
text = "
"
text = "The Accel Timer can be changed from Seconds to Engine Cycle counts.
"
text = "
"
text = "Normal MS mode finds the increase in PW and holds that till the Accel Timer has timed out.
"
text = "By selecting Decay it will find the increase to add then it will linearly decrease the Enrichment,
"
text = "to the Decay Value by the time the Accel Timer has timed out.
"
text = "
"
text = "If in MAP mode then you turn off"
text = "the accel/decel enrichment when"
text = "the engine goes into boost.
"
text = "
"
text = "You can also turn just the Decel off in either mode when in Boost to prevent a lean condition in boost
"
text = "
"
text = "Please see the Accel Wizard in the Tuning Section"
help = Shelp1, "Knock Detection"
text = "Please see:
"
webHelp = "http://megasquirt.sourceforge.net/extra/knock.html"
text = "for more info on this function.
"
help = Shelp2, "IAT/CLT Related Ignition"
webHelp = "http://megasquirt.sourceforge.net/extra/cltiat.html"
text = "When selected you can add 1 degree"
text = "of advance to the ignition"
text = "for every xx amount of degrees lower"
text = "the coolant temp is than the setpoint.
"
text = "There is also a max setpoint to"
text = "limit the added advance by.
"
text = "
"
text = "The IAT Related Ignition is similar"
text = "but it retards the ignition 1 degree"
text = "for every nn degrees of temp higher "
text = "it is above the setpoint when the "
text = "engine is running over the set KPa.
"
help = Shelp3, "Spark Settings"
webHelp = "http://megasquirt.sourceforge.net/extra/"
text = "Trigger Angle:
"
text = "If you need an angle between 90-112.5"
text = "then select the '+22.5' and"
text = "enter the angle needed -22.5
"
text = "If you need an angle between 112.5-125"
text = "then select '+45'"
text = "then enter the angle needed -45
"
text = "The actual Trigger Angle is :
"
text = "Trigger Angle + 22.5 or 45 if selected
"
text = "e.g. 78 + 45 = 123
"
text = " 88 + 22.5 = 110.5
"
text = " 65 + 0 = 65
"
help = Shelp4, "Spark Table Selection"
webHelp = "http://megasquirt.sourceforge.net/extra/tableswitch.html"
text = "If NOS System not selected and Second"
text = "Spark Table selected then the base map"
text = "will change from ST1 to ST2 when JP1"
text = "pin6 is switched low.
"
text = "If NOS selected and Second Spark Table"
text = "then when NOS system runs (check back "
text = "signal JP1 pin6 low and NOS setpoints"
text = "satisfied) then the spark map will switch"
text = "from ST1 to ST2.
"
text = "If Second Spark Table not selected and NOS"
text = "used then it will retard ignition by the "
text = "fixed amount in the NOS settings.
"
help = Chelp1, "Codebase and Output functions"
webHelp = "http://megasquirt.sourceforge.net/extra/setup.html"
text = "Select all code types OFF for Fuel only"
text = "other wise select only one code type.
"
text = "
"
text = "Choose I/O pin usage.
"
text = "FIdle = idle control for fuel only
"
text = " spark output for MSnS/Edis
"
text = ""
text = "X2 output = Water Inj Pump Out
"
text = " Cooling Fan Out
"
text = ""
text = "X4 output = Output1
"
text = " Boost Control
"
text = ""
text = "Shift Light outputs are on PTC3 and 4
"
help = Chelp2, "Advanced code options"
text = "If using Alpha-n mode then you can still have the KPa "
text = "in the fuel calculations. But ensure the MAP sensor connection is "
text = "upstream of the throttle. Near the air filter is recommended."
text = "
"
text = "
"
text = "EGO Correction Step Counter in mSec or "
text = "ignition pulses
"
text = "
"
text = "Accel Time in Sec's or Engine Cycles
"
text = "
"
text = "Interpolated Priming pulse, using the"
text = "cranking PW
"
text = "
"
text = "Hybrid Alpha N system adds KPa to"
text = "Alpha_N for use in Ferrari F40 turbos
"
help = Chelp3, "Barometric Correction"
text = "If the Barometric Correction is set on"
text = "in the Enrichments screen then here you"
text = "set up the limits.
"
text = "This is used if MS resets during driving it will take in"
text = "the current MAP pressure and use that"
text = "as the Barometric Pressure to calculate"
text = "the correction.
"
text = "Now you can limit the BarCorr to the presets.
"
help = Chelp4, "Water Injection"
webHelp = "http://megasquirt.sourceforge.net/extra/waterinj.html"
text = "If selected you cannot use the fan out on X2."
text = "See Codebase and Output functions
"
text = "
"
text = "The output X2 will come on"
text = "when the setpoints are met, the IAT"
text = "setpoint is ignored when it has started.
"
text = "
"
text = "If NOS is not selected then:
"
text = "Output X3 is pulsed at the same rate"
text = "as CH2. This can be used to drive"
text = "a fast acting solenoid.
"
text = "So if a water nozzle is selected that"
text = "flows 10-15% of the total flow of the "
text = "fuel injectors, then it will supply a"
text = "proportional amount of water to fuel.
"
text = "
"
text = "NB: O2 correction is turned"
text = "off during water injection
"
help = Chelp5, "NOS System"
webHelp = "http://megasquirt.sourceforge.net/extra/nitrous.html"
text = "Water Inj output X3 will not work in"
text = "this mode.
"
text = "This turns output X3 on when the "
text = "setpoints are satisfied. Then it "
text = "waits for input Pin6 JP1 to go low. "
text = "When this happens it retards the "
text = "ignition by the set amount and adds "
text = "to the fuel by an interpoled amount"
text = "of between NOS min and max"
text = "RPM value. If the additional PWs"
text = "are zero then no extra fuel is added.
"
text = "
"
text = "If in DT mode you can select which"
text = "CH to add the enrichment PW to."
text = "O2 correction is turned off when the"
text = "input Pin6 JP1 is low. If Duty Cycle"
text = "95% then NOS output X3 is turned off"
text = "and wont come back on untill one of"
text = "setpoints is not satisfied.
"
text = "
"
text = "If NOS selected on and Anti-Lag on"
text = "when MS receives a low input on"
text = "the NOS Check Back (Pin6 JP1)"
text = "before it turns the NOS output on (X3)"
text = "then this will enable the NOS Turbo "
text = "Anti-Lag. This system is used to spool"
text = "the turbo up between a certain KPa"
text = "range using NOS.
"
text = "See http://megasquirt.sourceforge.net/extra/
"
text = "for a suitable wiring diagram.
"
help = Chelp6, "Staged Injection System"
webHelp = "http://megasquirt.sourceforge.net/extra/stagedinj.html"
text = "Roger Emm's Staged Injection System"
text = "Not for use in DT mode!
"
text = "This runs Ch1 injectors only untill"
text = "the setpoint is satisfied, then CH1"
text = "and CH2 will fire at a reduced amount"
text = "depending on the scale factor.
"
text = "This is worked out by calculating"
text = "Primary Injector Flow/Total Inj Flow."
text = "When the engine runs below the"
text = "setpoint-delta the injectors change"
text = "back to CH1 on normally and CH2 off.
"
help = Chelp7, "MAP Sensor Selection"
text = "The code can be used with differnet MAP sensors for capability of up to 400KPa.
"
text = "
"
text = "This is for the hard core users who would know what to do with the settings, normal
"
text = "MS users are STRONGLY advised to leave this set to B+G SENSOR. Any other setting needs
"
text = "a different pressure sensor fitting to the MS PCB or SEVERE lean conditions can be created."
text = "
"
text = "When using a different sensor you will also need to SET the relavent sensor in the INI file for MT
"
text = "This can be done by opening the msns-extra.ini file and changing UNSET to SET for your sensor."
help = Chelp8, "Over Run Settings"
webHelp = "http://megasquirt.sourceforge.net/extra/overrun.html"
text = "This is used to cut fuel off during deceleration to aid engine breaking and reduce fuel use."
help = Fhelp7, "Rev Limiter"
webHelp = "http://megasquirt.sourceforge.net/extra/revlimiter.htm"
text = "The soft rev limiter is for spark based codes, this retards the ignition to the
"
text = "Soft Limit setpoint to reduce engine power and to try to reduce engine speed.
"
text = "If the soft limit point is maintained for the limiter max time setpoint then the
"
text = "hard limiter will cut in. This will also come in when the RPM reaches the Hard Limit setpoint
"
text = "the hard limiter can be used in fuel only mode or in spark modes"
help = Chelp9, "Cranking/Priming Table"
webHelp = ""
text = "CRANKING RPM
"
text = "The Cranking RPM value lets the MegaSquirt know when the engine is cranking or when it is running. A good starting point would be 300 as most engines crank around 200 RPM; the rule of thumb being about 100 RPM higher than your actual cranking RPM. Do not set this too high because if your RPM dips due to a low idle or a slight stall it will make the MegaSquirt think it is cranking and also reinitiate the afterstart"
text = "enrichment period. Set it too low and it will try and use the VE table for crank pulsewidths instead of the Cranking/Priming PW Table, which is not good either.
"
text = "
"
text = "TPS VALUE FOR FLOOD CLEAR
"
text = "Sometimes you might want to temporarily stop the injectors from injecting fuel during cranking to clear a flooded engine. This is achieved by holding down the gas pedal during cranking. The MegaSquirt needs to know at what point of gas pedal deflection it should turn off the injectors and a good starting point would be just before floored.
"
text = "To get this value, go to Tools, Calibrate TPS, and push the gas pedal almost all the way to the floor - about where you think the fuel should be cut off and hit Get Current. Remember this value and hit CANCEL on the Calibrate TPS dialog. Insert this value for the TPS Flood Clear. If this value is set too low then you will not get any fuel during cranking. If you set this value too high, then you won't be able to press the pedal enough to trigger the Flood Clear.
"
text = "
"
text = "PRIME PUMP WHEN
"
text = "Values for this item are either Prime Pulse > 0 or Always. If you select the first option, the pump will only be primed if the priming pulsewidth setting is greater than zero. If you select the latter option, Always, the pump will be primed regardless of your priming pulsewidth. You will most likely want to use Always as it will get your fuel pressure up before cranking, but you don't necessarily have to inject any fuel. The priming period is two seconds.
"
text = "
"
text = "FIRE PRIMING PULSE
"
text = "The Fire Priming Pulse option allows you to select when a priming pulse is fired. If you select Power Up, a priming pulse will be fired immediately upon turning on the ignition. If you select Twice, one priming pulse will be fired when you first key the ignition on and the second pulse will be fired after a second has passed. If you select After 2 Secs, there will be one priming pulse two seconds after turning on the ignition.
"
text = "The first option was in the original stock code, however, it will not necessarily work for a cold-start because there there may not already be fuel pressure in the rail when you turn the ignition on. The other two options are just different methods of firing the priming pulse. If you select Twice, then there will most likely be no"
text = "fuel injected on the first pulse, unless there is already fuel pressure in the fuel rail, and then there sould be fuel injected on the next pulse. If you select the After 2 Secs option, it will give the fuel pump time to build up pressure. With that option, however, remember that if you try and start the car before allowing two seconds to elapse, no priming pulse will ever be injected.
"
text = "
"
text = "PRIMING PW SOURCE
"
text = "There are two options for the Priming PW Source. You can either select Standard Prime which will inject a fixed amount of fuel as specified in the Standard Priming PW box, or you can select Priming PW Table which will have your priming PW be based off the Cranking/Priming PW Table. If you would like more control over your priming pulsewidths for varying temperatures,"
text = "then select Priming PW Table and the values specified in the Cranking/Priming PW Table will be used as the priming pulsewidth for the given temperature.
"
text = "
"
text = "STANDARD PRIMING PW
"
text = "If you selected Standard Prime for the Priming PW Source, then this is where you select how long the injectors will stay open when the priming pulse is fired. This value is in milliseconds.
"
text = "
"
text = "CRANKING PULSE WIDTH TEMPS
"
text = "Here you can select what temperature lookup method you would like to use for the Cranking/Priming PW Table during cranking. CLT Only uses the coolant temperature and is the original Megasquirt option. This is what most people use and if you have a standard setup with a coolant sensor, this is most likely what you will want to use. If you would like to use the manifold temperature instead, select MAT Only. You can also select CLT, MAT Average which uses an average of the two temperatures.
"
text = "
"
text = "CRANKING/PRIMING PW TABLE
"
text = "In older versions of the MegaSquirt firmware, the cranking pulsewidth was handled by a linear interpolation between a high and low temperature pair. A linear curve was not necessarily optimal for some people so now you have the option of setting your cranking pulsewidth at various temperatures.
"
text = "If you're migrating over from a MegaSquirt version that only used two values, use those as your high and low values in the Cranking/Priming PW Table and then guess the values in between. Then, when you start your car, you can adjust the pulsewidth values for the various temperatures that yield the most reliable and fastest starts.
"
help = Chelp10, "After Start Enrichment (ASE)"
webHelp = ""
text = "It's been found that during winter the cranking and after start enrichments need tweeking
"
text = "in order to get the engine to start and run without restarting it several times from cold.
"
text = "The reason is felt that the after start and cranking enrichments dont follow temperature in a
"
text = "linear format. So if you find this is the case you can use this table to tweek areas where it
"
text = "is difficult to start. It has been found that the areas for concern are around 32F (0C) "
text = "
"
text = "
"
text = "After Start Enrich Counter is the length of time in Seconds or engine cycles that the
"
text = "after start enrich runs for. The percentage added is decayed down to zero as the time expires "
text = "
"
text = "
"
text = "Set ASE Mode to FIXED for a timed period of ASE that does not decay, after the timer the ASE will
"
text = "then decay as usual during the TOTAL ASE time period thats left. This has a temp setpoint as
"
text = "it should only be needed when the coolant temperatures are fairly low. "
text = "
"
text = "
"
text = "Setting MAP to a fixed value helps to maintain a constant PW during the initial start where the
"
text = "map drops quickly from around 100KPa to the tickover KPa. This is held during the FIXED time period."
text = "The FIXED period is a period of time at the start of the TOTAL ASE time. FIXED must be less than TOTAL"
help = DTHelp1, "Lambda Settings"
text = "If you run 2 Lambda sensors, one on each "
text = "bank, you can have a totally
"
text = "seperate Ego correction for CH2"
text = "only for use when CH2 = VE Table2"
;-------------------------------------------------------------------------------
[TableEditor]
; table_id, map3d_id, "title", page
table = veTable1Tbl, veTable1Map, "VE Table 1", 1
; constant, variable
xBins = rpmBins1, rpm
#if SPEED_DENSITY
yBins = mapBins1, map
#else
yBins = tpsBins1, tpsADC
#endif
zBins = veBins1
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#else
yBins = tpsBins2, tpsADC
#endif
zBins = veBins2
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3
xBins = rpmBins3, rpm
#if SPEED_DENSITY
yBins = mapBins3, map
#else
yBins = tpsBins3, tpsADC
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5
xBins = rpmBins4, rpm
#if SPEED_DENSITY
yBins = mapBins4, map
#else
yBins = tpsBins4, tpsADC
#endif
zBins = advTable2
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
table = veTable3Tbl, veTable3Map, "VE Table 3. See Fuel Table Selection", 6
xBins = rpmBins5, rpm
#if SPEED_DENSITY
yBins = mapBins5, map
#else
yBins = tpsBins5, tpsADC
#endif
zBins = veBins3
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
#if NARROW_BAND_EGO
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#else
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#else
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#elif WB_1_0_LINEAR
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#else
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#else
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#elif DIYWB_NON_LINEAR
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#else
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#else
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#else
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (AFR)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#else
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (AFR)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#else
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#endif
table = boostTbl1, boostMap1, "Boost kpa target 1", 8
; constant, variable
xBins = bcrpmBins1, rpm
yBins = bctpsBins1, throttle
zBins = bcBins1
table = boostTbl2, boostMap2, "Boost duty target", 8
xBins = bcrpmBins2, rpm
yBins = bctpsBins2, throttle
zBins = bcBins2
table = boostTbl3, boostMap3, "Boost kpa target 2", 8
xBins = bcrpmBins3, rpm
yBins = bctpsBins3, throttle
zBins = bcBins3
table = splitTbl, splitMap, "Rotary split Table", 8
xBins = splitrpmBins, rpm
#if SPEED_DENSITY
yBins = splitkpaBins, map
#else
yBins = splittpsBins, tpsADC
#endif
zBins = splitTable
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu).
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
baroADCGauge = barometer, "Barometer ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
mapADCGauge = mapADC, "MAP ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
matADCGauge = matADC, "MAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
cltADCGauge = cltADC, "CLT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
batADCGauge = batADC, "BAT ADC", "", 0, 255, -1, -1, 256, 256, 0, 0
#if NARROW_BAND_EGO
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
egoGauge = egoVoltage, "Exhaust Gas Oxygen", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
deadGauge = deadValue, "---", "", 0, 1, -1, -1, 2, 2, 0, 0
dutyCycle1Gauge = dutyCycle1, "Duty Cycle 1", "%", 0, 100, -1, -1, 85, 90, 1, 1
dutyCycle2Gauge = dutyCycle2, "Duty Cycle 2", "%", 0, 100, -1, -1, 85, 90, 1, 1
egoCorrGauge = egoCorrection, "O2 Driven Correction (GEGO)", "%", 80, 120, 90, 99, 101, 110, 0, 0
gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0
#if MPXH6300A
mapGauge = map, "Engine MAP", "kPa", 0, 304, 0, 20, 250, 275, 0, 0
#elif MPXH6400A
mapGauge = map, "Engine MAP", "kPa", 0, 400, 0, 20, 250, 275, 0, 0
#else
mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0
#endif
pulseWidth1Gauge = pulseWidth1, "Pulse Width 1", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
pulseWidth2Gauge = pulseWidth2, "Pulse Width 2", "mSec", 0, 25.5, 1.0, 1.2, 20, 25, 1, 1
tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0
throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0
veBucketGauge = veTuneValue, "VE Bucket", "%", 0, 120, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 0, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 0, 200, 210, 0, 0
#endif
advanceGauge = advSpark, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0,
stackGauge = stackL, "CPU stack", "bytes", 240, 200, 0, 0, 254, 254, 0, 0
; T2XGauge = T2X, "T2 X byte", "byte", 0, 255, 0, 0, 254, 254, 0, 0
; Extra Stuff
fuelGauge = fuelpress, "Fuel Pressure", "lb/in", 0, 80, 30, 40, 60, 65, 1, 1
#if CELSIUS
egtGauge = egttemp, "EGT", "°C", 0, 1000, 0, 0, 1450, 1480, 1, 1
#else
egtGauge = egttemp, "EGT", "°F", 0, 2200, 0, 0, 1450, 1480, 1, 1
#endif
CltIatGauge = CltIatDeg, "Clt IAT Angle", "Deg", -10, 10, -10, -10, 10, 10, 1
KnockGauge = KnockDeg, "Knock Retard", "Deg", -20, 0, -20, -20, 1, 1
egoCorrGauge2 = egoCorrection2, "EGO Correction2", "%", 50, 150, 90, 99, 101, 110, 0, 0
testGauge = test, "TEST", "", 0, 255, 255, 255, 0 , 0,
test2Gauge = test2, "TEST2", "", 0, 255, 255, 255, 0, 0,
RpmHiResGauge = RpmHiRes, "Engine RPM", "RPM", 0, 8000, 0, 300, 7800, 8000, 0
lambdaGauge2 = lambda2, "Lambda2", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
afrGauge2 = afr2, "Air:Fuel Ratio2", "", 10, 19.4, 12, 13, 15, 16, 2, 2
vacuumGauge = vacuum, "Engine Vacuum", "in-HG", 0, 30, 0, 0, 30, 30, 1, 1
boostgauge = boost, "Engine Boost", "PSIG", 0, 20, 0, 0, 15, 20, 1, 1
VacBooGauge = boostVac, "Engine Vac Boost", "in-HG/PSIG", -30, 30, -30, -30, 30, 30, 1, 1
TargetAFRGauge = TargetAFR, "Target AFR", "AFR", 10, 19.4, 0, 0, 20, 20, 2, 2
mphGauge = mph, "Speedo", "MPH", 0, 200, -1, -1, 200, 200, 1
USgphGauge = USgph, "US GPH", "GPH", 0, 100, -1, -1, 100, 100, 1
gphGauge = gph, "GPH", "GPH", 0, 100, -1, -1, 100, 100, 1
USmpgGauge = USmpg, "US MPG", "MPG", 0, 100, -1, -1, 100, 100, 1
mpgGauge = mpg, "MPG", "MPG", 0, 100, -1, -1, 100, 100, 1
;-------------------------------------------------------------------------------
;Turbo Gauges
auxmatGauge = auxmat, "Turbo Inlet", "%TEMP", -40, 110, -15, 0, 95, 100, 3, 0
auxmatGauge1 = auxmat1, "Turbo Outlet", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
turbo = AE, "Adiabatic Efficiency ", "%", 0, 100, -1, -1, 100, 100, 1, 1
intercooler = ICE, "Intercooler Efficiency ", "%", 0, 100, -1, -1, 100, 100, 1, 1
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
; gauge1 = tachometer ; normal rpm x100 gauge
; gauge2 = cltGauge
; gauge3 = pulseWidth1Gauge
; gauge4 = dutyCycle1Gauge
; gauge6 = accelEnrichGauge
; gauge7 = egoCorrGauge
; gauge8 = advanceGauge
; Various Gauges for use in the msns-extra code, remove the ";" and renumber
gauge1 = tachometer ; normal rpm x100 gauge
gauge2 = egoCorrGauge
gauge3 = afrGauge
gauge4 = TargetAFRGauge
gauge5 = turbo
; gauge5 = mapGauge
gauge6 = matGauge
gauge7 = VacBooGauge
gauge8 = advanceGauge
; gauge1 = RpmHiResGauge ; hi-res gauge
; gauge4 = TargetAFRGauge
; gauge4 = batADCGauge
; gauge3 = mphGauge ; ONLY FOR USE WHEN VSS CONNECTED TO MS
; gauge3 = USgphGauge
; gauge3 = gphGauge
; gauge3 = USmpgGauge
; gauge3 = mpgGauge
; gauge4 = egtGauge
; gauge4 = fuelGauge
; gauge4 = throttleGauge
; gauge6 = matGauge
; gauge7 = KnockGauge
; gauge7 = pulseWidth2Gauge
; gauge7 = afrGauge
; gauge8 = dutyCycle2Gauge
; gauge8 = stackGauge ; CPU stack pointer, only useful for coders
; gauge8 = T2XGauge ; only useful for code testing
; These 3 are for the second lambda sensor. Remove ";" and re-number gauge
; gauge6 = afrGauge2
; gauge7 = pulseWidth2Gauge
; gauge8 = egoCorrGauge2
; Eliot Mansfield's boost and vacuum gauges.
; gauge7 = vacuumGauge
; gauge8 = boostgauge
; Decided to combine the Vacuum and Boost gauges into one
; gauge4 = VacBooGauge
; For testing only
; gauge8 = testGauge
; gauge4 = test2Gauge
;new trial indicators
; expr off-label on-label, off-bg, off-fg, on-bg, on-fg
; indicator = { tpsaen }, "Not Accelerating", "AE", cyan, white, red, black
; Look in the new colors24b.ini for the basic ones, add more or tell me what to add.
indicator = { porta & 0b00000001 }, "Fuel Pump Off", "Fuel Pump On", white, black, green, black
indicator = { porta & 0b00000010 }, "Fidle/Spark Off", "Fidle/Spark On", white, black, green, black
indicator = { porta & 0b00100000 }, "Fan/W Inj Off", "Fan/W Inj On", white, black, green, black
indicator = { porta & 0b00010000 }, "NOS/W Inj Off", "NOS/W Inj Pulsing", white, black, green, black
indicator = { porta & 0b00001000 }, "Output1/Boost Cont", "Output1/Boost Cont", white, black, green, black
indicator = { porta & 0b00000100 }, "Output2 Off", "Output2 On", white, black, green, black
indicator = { portd & 0b00000001 }, "Output3 Off", "Output3 On", white, black, green, black
indicator = { portc & 0b00000100 }, "Fan/Output4 Off", "Fan/Output4 On", white, black, green, black
indicator = { portd & 0b00001000 }, "Launch On", "Launch Off", red, black, white, black
indicator = { portd & 0b00000100 }, "Knocked", "No Knock", red, black, white, black
indicator = { portd & 0b00000010 }, "NOS/Tables On", "NOS/Tables Off", red, black, white, black
indicator = { floodclear }, "", "FLOOD CLEAR", white, black, red, black
; indicator = { portc & 0b00010000 }, "Trig2", "Trig2", white, black, green, black
;-------------------------------------------------------------------------------
[RunTime]
barHysteresis = 2.5 ; Seconds
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "FixedSys", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&AFR", "&Turbo", "PW&1", "PW&2"
gauge1 = tachometer, intercooler, tachometer, tachometer
gauge2 = VacBooGauge, turbo, mapGauge, mapGauge
gauge3 = afrGauge, auxmatGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, auxmatGauge1, pulseWidth1Gauge, pulseWidth2Gauge
gauge5 = TargetAFRGauge, cltGauge, veBucketGauge, veBucketGauge
gauge6 = advanceGauge, matGauge, dutyCycle1Gauge, dutyCycle2Gauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "R" ; was "a" and before that "A"
ochBlockSize = 38 ; was 38
secl = scalar, U08, 0, "sec", 1.000, 0.000
squirt = scalar, U08, 1, "bits", 1.000, 0.000
engine = scalar, U08, 2, "bits", 1.000, 0.000
baroADC = scalar, U08, 3, "ADC", 1.000, 0.000
mapADC = scalar, U08, 4, "ADC", 1.000, 0.000
matADC = scalar, U08, 5, "ADC", 1.000, 0.000
cltADC = scalar, U08, 6, "ADC", 1.000, 0.000
tpsADC = scalar, U08, 7, "ADC", 1.000, 0.000
batADC = scalar, U08, 8, "ADC", 1.000, 0.000
egoADC = scalar, U08, 9, "ADC", 1.000, 0.000
egoCorrection = scalar, U08, 10, "%", 1.000, 0.000
airCorrection = scalar, U08, 11, "%", 1.000, 0.000
warmupEnrich = scalar, U08, 12, "%", 1.000, 0.000
rpm100 = scalar, U08, 13, "r100", 1.000, 0.000
pulseWidth1 = scalar, U08, 14, "ms", 0.100, 0.000
accelEnrich = scalar, U08, 15, "%", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr1 = scalar, U08, 18, "%", 1.000, 0.000
pulseWidth2 = scalar, U08, 19, "ms", 0.100, 0.000
veCurr2 = scalar, U08, 20, "%", 1.000, 0.000
idleDC = scalar, U08, 21, "%", 1.000, 0.000
iTime = scalar, U16, 22, "s", 1.000, 0.000
advance = scalar, U08, 24, "deg", 1.000, 0.000
afrtarget = scalar, U08, 25, "ADC", 1.000, 0.000
; Get raw values from ADC.
x6ADC = scalar, U08, 26, "ADC", 1.000, 0.000 ;x6 turbo inlet probe (or ambient temp)
x7ADC = scalar, U08, 27, "ADC", 1.000, 0.000 ;x7 turbo outlet probe
CltIatAngle = scalar, U08, 28, "deg", 1.000, 0.000
KnockAngle = scalar, U08, 29, "deg", 1.000, 0.000
egoCorrection2 = scalar, U08, 30, "%", 1.000, 0.000 ; Second O2 sensor correction
porta = scalar, U08, 31, "", 1.000, 0 ; porta raw value
portb = scalar, U08, 32, "", 1.000, 0 ; portb raw value
portc = scalar, U08, 33, "", 1.000, 0 ; portc raw value
portd = scalar, U08, 34, "", 1.000, 0 ; portd raw value
stackL = scalar, U08, 35, "", 1.000, 0 ; low byte of stack
tpsLast = scalar, U08, 36, "", 1.000, 0 ; TPS last for Accel Wizard
iTimeX = scalar, U08, 37, "s", 1.000, 0.000
;not in code T2X = scalar, U08, 38, "s", 1.000, 0.000
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct4 : 100) }
batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units.
egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units.
rpm = {rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
#if CELSIUS
egttemp = { x6ADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C
#else
egttemp = { x6ADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F
#endif
;convert to deg 'f
tinletF = { table(x6ADC, "matfactor.inc")-40} ; Turbo Inlet (atmosphere) deg 'f
toutletF = { table(x7ADC, "matfactor.inc")-40} ; Turbo outlet deg 'f
;Convert into user units for guages
auxmat = { tempCvt(table(x6ADC, "thermfactor.inc")-40) } ; Manifold temperature in user units.
auxmat1 = { tempCvt(table(x7ADC, "thermfactor.inc")-40) } ; Manifold temperature in user units.
;Calculate Turbo Adiabatic efficiency
P1 = { barometer * 0.1450377 } ; inlet pressure absolute (barometer in psi) should be ~14.7
T1 = { tinletF + 460 } ;inlet temp in Radians
P2 = { P1 + boost } ;outlet pressure absolute
T2 = { (T1 * ( pow (P2 / P1, 0.283)) -460)} ; temperature rise assuming 100% compressor Efficiency
AE = { ((T2 - tinletF)/(toutletF - tinletF)) * 100 } ; Adiabatic Efficiency % is difference between actual and calculated temp rises.
;Calculate Intercooler efficiency
;Static ambient temp used here, because my turbo inlet temp isn't the same as ambient due to heat wash over filter.
ambient = { 10 } ; in user units.
ICE = { ((auxmat1 - mat) / (auxmat1 - ambient) * 100) } ;Intercooler/Chargecooler efficiency in %
; Added for second O2 sensor
#if NARROW_BAND_EGO
afr2 = { table(x6ADC, "NBafr100.inc") / 100.0 }
lambda2 = { afr2 / 14.7 }
#elif ZEITRONIX_NON_LINEAR
lambda2 = { table(egoADC, "WBafr100Zeit.inc") / 100.0 }
afr2 = { lambda * 14.7 }
#elif INNOVATE_LC1_DEFAULT
lambda2 = { x6ADC/255.0 + 0.5 }
afr2 = { lambda * 14.7 }
#else
lambda2 = { table(x6ADC, "WBlambda100MOT.inc") / 100.0 }
afr2 = { lambda2 * 14.7 }
#endif
; Added for AFR Tables
#include "lambdaSensors.ini"
; Another way of doing it for the Tech Edge linear output:
; afr = { 9.0 + 0.039216 * egoADC } ; WBLIN, Mot ADC
; afr = { 9.0 + 0.039063 * egoADC } ; WBLIN, AVR ADC
;
; For the Lambdaboy thingy, the three points given
; (11=2.05, 14.7=4.21, 16=4.98) are damn close to a straight line.
; Without seeing a graph or table of it, I'd guess it's a linear
; output from AFR of 7.5 to 16 (0V to 5V), which gives:
; afr = { 7.5 + 0.0335875 * egoADC } ; LBoy, MOT ADC
; afr = { 7.5 + 0.0334563 * egoADC } ; LBoy, AVR ADC
#if MPXH6300A
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { (mapADC + 1.53) * 1.213675}
#elif MPXH6400A
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { (mapADC + 2.147) * 1.6197783}
#elif MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
throttle = { table(tpsADC, "throttlefactor.inc") }
advSpark = { (advance * 0.352)-10 }
; Enhanced Stuff
KnockAng = {(KnockAngle * 90 / 256)}
KnockDeg = {-KnockAng }
CltIatAng = {CltIatAngle * 90 / 256 }
CltIatDeg = { CltIatAng < 45? CltIatAng: -90 + CltIatAng} ; Coolant Iat added Angle
fuelvolt = {x6ADC < 1 ? 0.0 : x6ADC * (5/255) - 0.5}
fuelpress = {x6ADC < 1 ? 0.0 : fuelvolt / 0.04 +1}
altDiv1 = { alternate1 ? 2 : 1 }
altDiv2 = { alternate2 ? 2 : 1 }
cycleTime1 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke1) }
nSquirts1 = { nCylinders1/divider1 }
dutyCycle1 = { rpm < 100 ? 0 : 100.0*nSquirts1/altDiv1*pulseWidth1/cycleTime1 }
cycleTime2 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke2) }
nSquirts2 = { nCylinders2/divider2 }
dutyCycle2 = { rpm < 100 ? 0 : 100.0*nSquirts2/altDiv2*pulseWidth2/cycleTime2 }
; These next two are needed to make the runtime dialog look good.
veCurr = { veCurr1 }
pulseWidth = { pulseWidth1 }
; Test use only
test = {mapDOT}
test2 = {x7ADC}
; Hi Res RPM only for 4 or greater cylinder engines.
; TimeDivisor = {(nCylinders1) > 6 ? 0.86 : (nCylinders1) > 4 ? 0.82 : (nCylinders1) > 2 ? 0.75 : 1}
; RpmHiResCalc = { (60000000 / ((cTime * (nCylinders1) + 1) / (2.0-twoStroke1))) * TimeDivisor}
; RpmHiRes = { rpm100 < 5 ? rpm : (nCylinders1) < 3 ? rpm : RpmHiResCalc}
iTimefull = { (iTimeX*65536)+ iTime }
RpmHiRes = { iTimefull > 0 ? (60000000 *(2.0-twoStroke1)) / (iTimefull * nCylinders1) : 0 }
; Vacuum and Boost Gauges
vacuum = {(barometer-map)*0.2953007} ; Calculate vacuum in in-Hg.
boost = {map < barometer ? 0.0 : (map-barometer)*0.1450377} ; Calculate boost in PSIG.
boostVac = {map < barometer ? -vacuum : (map-barometer)*0.1450377}
; Speedo Gauge, when VSS connected to X6 and X7
;****************************************************************************
; CHANGE THESE TO SUIT YOUR CAR TO GET MPG, MPH, ETC. THIS WILL ONLY WORK WITH A SUITABLE
; VEHICLE SPEED SENSOR CONNECTED TO MSnS-EXTRA CODE.
Speed = { 70 } ; Change this to your actual speed @ 2.5V from VSS circuit
fuelCC = { 2168 } ; Enter the total flow for all your injectors here in cc/Min
;****************************************************************************
squirtmul = { divider1 < 2 ? 2 : divider1 < 3 ? 1 : divider1 < 5 ? 0.5 : divider1 < 9 ? 0.25 : divider1 < 17 ? 0.125 : 1}
squirts = { alternate1 > 0 ? rpm100 / 0.6 * squirtmul : rpm100 * 2 * squirtmul / 0.6 } ; How many squirts per Sec
OpenWidth = { injOpen1 * 0.1 } ; Pulse width for injector opening time
CCpHr = { pulseWidth < 1 ? 1 : (fuelCC/60) * ((pulseWidth - OpenWidth)/1000) * squirts * 3600 } ; cc / hr
mphTemp = { x6ADC < 1 ? 0 : (x6ADC * Speed) /127.5 } ; MPH
mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph
USgph = { CCpHr / 3785 } ; US Gallons / Hr
USmpg = { x6ADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon
gph = { CCpHr / 4546 } ; Real Gallons / Hr
mpg = { x6ADC < 1 ? 0 : mph < 1 ? 0 : mph / gph } ; Real Miles / Gallon
;*****************************************************************************
; CHANGE THESE VALUES TO FIND THE APPROXIMATE BHP FOR YOUR ENGINE.
; CALCULATIONS WERE PROVIDED BY ERIC. THESE WILL ONLY WORK IF A SUITABLE VEHICLE SPEED
; SENSOR IS CONNECTED TO THE MSnS-EXTRA CODE. This is unfinished!
Cd = { 0.33 } ; Change this to your vehicle's Coefficient of Drag (0.25-1.0 for road vehicles)
Mass = { 1050 } ; Change this to your vehicle's weight in KGs.
Crr = { 18 } ; Change this to your vehicle's internal drive train loss. (8% for Nascar,
; diamond-like coating on gears to 25% for road car with automatic transmission)
Radius = { 16.15 } ; Change this to your vehicle's driven wheel radius in inch's
GrTms = { 0.88 } ; Ratio of the gear you want to test BHP in.
DiffRa = { 3.31 } ; Differential ratio
floodclear = { tpsADC > 200 ? 1 : 0 } ; For flood clear indicator on main screen
tpsDOTTY = { mapProportion4 ? 0 : (tpsADC - tpsLast) * 0.19} ; * 0.019 / 0.1 to convert it to V from ADC and to 1Sec from 0.1Sec
mapDOTTY = { mapProportion4 ? (mapADC - tpsLast) / 0.1 : 0 } ; Divide by 0.1 to convert from 0.1Sec to 1Sec
tpsDOT = { tpsDOTTY < 0 ? 0 : tpsDOTTY} ; Only display positive or it gets confusing to read
mapDOT = { mapDOTTY < 0 ? 0 : mapDOTTY} ; Only display positive or it gets confusing to read
Timeroll = { portc & 0b00000100 }
waterIlog = { porta & 0b00010000 }
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
entry = time, "Time", float, "%.3f"
entry = secl, "SecL", int, "%d"
entry = rpm100, "RPM", int, "%d"
entry = map, "MAP", int, "%d"
entry = throttle, "TP", int, "%d"
entry = egoVoltage, "O2", float, "%.3f"
entry = mat, "MAT", float, "%.1f"
entry = coolant "CLT", float, "%.1f"
entry = engine, "Engine", int, "%d"
entry = egoCorrection, "Gego", int, "%d"
entry = airCorrection, "Gair", int, "%d"
entry = warmupEnrich, "Gwarm", int, "%d"
entry = baroCorrection, "Gbaro", int, "%d"
entry = gammaEnrich, "Gammae", int, "%d"
entry = accDecEnrich, "TPSacc", int, "%d"
entry = veCurr1, "Gve", int, "%d"
entry = pulseWidth1, "PW", float, "%.1f"
#unset TestCode
#if TestCode
entry = waterIlog, "Water Inj", int, "%d"
entry = Timeroll, "TimeRoll", int, "%d"
#else
entry = veCurr2, "Gve2", int, "%d"
entry = pulseWidth2, "PW2", float, "%.1f"
#endif
entry = dutyCycle1, "DutyCycle1", float, "%.1f"
entry = dutyCycle2, "DutyCycle2", float, "%.1f"
; Last three are for MSLVV compatibility, but we dont use these, we use the
; three underneath.
; entry = pulseWidth2, "UserData1", int, "%d"
; entry = veCurr2, "UserData2", int, "%d"
; entry = idleDC, "UserData3", int, "%d"
; These four are for datalogging the egt,fuel pressure, spark angle
; and knock retard. Only 3 can be used at once for MSLVV compatability.
; entry = egttemp, "EGT", int, "%d"
entry = auxmat, "Aux Temp 1", float, "%.1f"
entry = auxmat1, "Aux Temp 2", float, "%.1f"
; entry = advSpark, "Spark Angle", int, "%d"
; entry = fuelpress, "Fuel Press", int, "%d"
entry = AE, "ae", int, "%d"
entry = ICE, "ICE", int, "%d"
; TEST ONLY - DONT USE
; entry = iTime, "iTime", int, "%d"
; entry = iTimeX, "iTimeX", int, "%d"
; entry = iTimefull, "iTimeFull", int, "%d"