;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "S"
signature = "MegasquirtnSpark Extra V021s***"
; last edited for version 021u and MT2.25b358 or later
;includes fix for const(85) error message
;-------------------------------------------------------------------------------
#unset KPa ; Set this to see all settings in KPa rather than some in PSI
#unset MPXH6300A ; (304KPA) Set this if using MPXH6300A series 304 KPa MAP sensor ( http://www.freescale.com/files/sensors/doc/data_sheet/MPXH6300A.pdf )
#unset GM300KPa ; (300KPa) Set this if using the GM 29.4PSI 300KPa MAP sensor (GM part # 16040749) info from http://www.aquamist.co.uk/sl/plist/pics/mapm/mapm.html
#unset MPXH6400A ; (400KPa) Set this if your a looney and have enough boost for that sensor (http://www.freescale.com/files/sensors/doc/data_sheet/MPXH6400A.pdf)
[Constants]
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
endianness = big
nPages = 8
burnCommand = "B"
pageSize = 212, 212, 212, 212, 212, 212, 212, 212
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 = 0 ; 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, 180, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if MPXH6300A
mapBins1 = array, U08, 192, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins1 = array, U08, 192, [ 12], "kPa", 1.17647, 0, 20.0, 300.0, 0
#elif MPXH6400A
mapBins1 = array, U08, 192, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins1 = array, U08, 192, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
crankCold1 = scalar, U08, 144, "ms", 0.1, 0.0, 0.0, 25.5, 1
crankHot1 = scalar, U08, 145, "ms", 0.1, 0.0, 0.0, 25.5, 1
asePct1 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0
aseCount1 = scalar, U08, 147, "", 1.0, 0.0, 0.0, 255.0, 0
wueBins1 = array, U08, 148,[ 10], "%", 1.0, 0.0, 0.0, 255.0, 0
taeBins1 = array, U08, 158,[ 4], "ms", 0.1, 0.0, 0.0, 25.5, 1
taeColdA1 = scalar, U08, 162, "ms", 0.1, 0.0, 0.0, 25.5, 1
tpsThresh1 = scalar, U08, 163, "v/s",0.1953125, 0.0, 0.2, 49.8, 3
taeTime1 = scalar, U08, 164, "ms", 0.1, 0.0, 0.0, 25.5, 1
tdePct1 = scalar, U08, 165, "%", 1.0, 0.0, 0.0, 255.0, 0
#if CELSIUS
egoTemp1 = scalar, U08, 166, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp1 = scalar, U08, 166, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount1 = scalar, U08, 167, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta1 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit1 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel1 = scalar, U08, 170, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider1 = scalar, U08, 171, "", 1.0, 0.0
alternate1 = bits, U08, 172, [0:0], "Simultaneous", "Alternating"
injOpen1 = scalar, U08, 173, "ms", 0.1, 0.0, 0.1, 25.5, 1
injPwmP1 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT1 = scalar, U08, 176, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac1 = scalar, U08, 177, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk1 = scalar, U16, 178, "", 1.0, 0.0
; Config1
mapType1 = bits, U08, 204, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
mapSensor1 = bits, U08, 204, [0:0]
twoStroke1 = bits, U08, 204, [2:2], "Four-stroke", "Two-stroke"
injType1 = bits, U08, 204, [3:3], "Port", "Throttle Body"
nCylinders1= bits, U08, 204, [4:7+1]
; Config3
cltType1 = bits, U08, 205, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType1 = bits, U08, 205, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors1= bits, U08, 205, [4:7+1]
; Config3
engineType1= bits, U08, 206, [0:0], "Even fire", "Odd fire"
egoType1 = bits, U08, 206, [1:1], "Narrow band", "Wide band"
algorithm1 = bits, U08, 206, [2:2], "Speed Density", "Alpha-N"
baroCorr1 = bits, U08, 206, [3:3], "Off", "On"
primePulse1= scalar, U08, 207, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM1 = scalar, U08, 208, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT1 = scalar, U08, 209, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT1 = scalar, U08, 209, "°F", 1.0, -40.0, -40, 215, 1
#endif
egoSwitch1 = scalar, U08, 210, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM1 = scalar, U08, 211, "%", 1.0, 0.0, 0.0, 250.0, 0
page = 2
veBins2 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins2 = array, U08, 180, [ 12], "RPM", 100.0, 0.0, 100, 25000, 0
#if MPXH6300A
mapBins2 = array, U08, 192, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins2 = array, U08, 192, [ 12], "kPa", 1.17647, 0, 20.0, 300.0, 0
#elif MPXH6400A
mapBins2 = array, U08, 192, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins2 = array, U08, 192, [ 12], "kPa", 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, "%", 1.0, 0.0, 0.0, 255.0, 0
#if CELSIUS
egoTemp2 = scalar, U08, 166, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp2 = scalar, U08, 166, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount2 = scalar, U08, 167, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta2 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit2 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel2 = scalar, U08, 170, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider2 = scalar, U08, 171, "", 1.0, 0.0
alternate2 = bits, U08, 172, [0:0], "Simultaneous", "Alternating"
injOpen2 = scalar, U08, 173, "ms", 0.1, 0.0, 0.1, 25.5, 1
injPwmP2 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT2 = scalar, U08, 176, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac2 = scalar, U08, 177, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk2 = scalar, U16, 178, "", 1.0, 0.0
; Config1
mapType2 = bits, U08, 204, [0:1], "115 kPa", "250 kPa", "INVALID", "INVALID"
twoStroke2 = bits, U08, 204, [2:2], "Four-stroke", "Two-stroke"
injType2 = bits, U08, 204, [3:3], "Port", "Throttle Body"
nCylinders2= bits, U08, 204, [4:7+1]
; Config3
cltType2 = bits, U08, 205, [0:1], "GM", "Unknown1", "Unknown2", "Unknown3"
matType2 = bits, U08, 205, [2:3], "GM", "Unknown1", "Unknown2", "Unknown3"
nInjectors2= bits, U08, 205, [4:7+1]
; Config3
engineType2= bits, U08, 206, [0:0], "Even fire", "Odd fire"
egoType2 = bits, U08, 206, [1:1], "Narrow band", "Wide band"
algorithm2 = bits, U08, 206, [2:2], "Speed Density", "Alpha-N"
baroCorr2 = bits, U08, 206, [3:3], "Off", "On"
primePulse2= scalar, U08, 207, "ms", 0.1, 0.0, 0.0, 25.5, 1
egoRPM2 = scalar, U08, 208, "RPM", 100.0, 0.0, 100, 25500, 0
#if CELSIUS
fastIdleT2 = scalar, U08, 209, "°C", 0.555, -72.0, -40, 102, 1
#else
fastIdleT2 = scalar, U08, 209, "°F", 1.0, -40.0, -40, 215, 1
#endif
egoSwitch2 = scalar, U08, 210, "v", 0.0196, 0.0, 0.0, 5.0, 3
taeColdM2 = scalar, U08, 211, "%", 1.0, 0.0, 0.0, 250.0, 0
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 MPXH6300A
mapBins3 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins3 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 20.0, 300.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
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:3], "Off*", "Traction Active", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID"
out2lim = scalar, U08, 9, "raw byte or deg F +40", 1, 0, 0, 255, 0
out2src = bits, U08, 10, [0:3], "Off*", "Traction Active", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID"
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:7], "Off*", "Traction Active", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID"
out3Timer = scalar, U08, 134, "Sec", 0.1, 0, 0, 25.5 , 1
out4lim = scalar, U08, 139, "raw byte or deg F +40", 1, 0, 0, 255, 0
out4src = bits, U08, 138, [0:7], "Off*", "Traction Active", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "INVALID", "INVALID", "INVALID", "RPM", "INVALID", "INVALID"
out4FAN = bits, U08, 1, [6:6], "Source", "Fan Control"
aseIgnCount = bits, U08, 11, [0:0], "Sec", "Cycles*^"
egoIgnCount = bits, U08, 11, [1:1], "mSec", "Ign Pulses*^"
idlIgnCount = bits, U08, 11, [2:2], "Off", "On*^"
taeIgnCount = bits, U08, 11, [3:3], "Sec*^", "Cycles"
interpPrime = 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"
falsetrig = bits, U08, 12, [4:4], "On*^", "Off"
en_ack = bits, U08, 12, [5:5], "Don't ACK*^", "Do ACK"
dwellduty50 = bits, U08, 12, [6:6], "75% duty cycle*^", "50% duty cycle"
CrankRPM = scalar, U08, 13, "rpm", 100.0, 0.0, 100, 1000, 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 GM300KPa
KPaTarg10 = scalar, U08, 29, "KPa", 1.17647, 0, 100, 300.0, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1.17647, 0, 100, 300.0, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1.17647, 0, 100, 300.0, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1.17647, 0, 100, 300.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 GM300KPa
EgoLimKPa = scalar, U08, 39, "KPa", 1.17647, 0, 0, 300.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 GM300KPa
OvrBKpa = scalar, U08, 44, "KPa", 1.17647, 0, 0, 300.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, 0, 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 GM300KPa
IatAdvKpa = scalar, U08, 51, "KPa", 1.17647, 0, 0, 300.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 GM300KPa
KnockKpa = scalar, U08, 55, "KPa", 1.17647, 0, 0, 300.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 GM300KPa
KnockBoost = scalar, U08, 107, "KPa", 1.17647, 0, 0, 300.0, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1.17647, 0, 0, 300.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 GM300KPa
StartWIKPa = scalar, U08, 62, "KPa", 1.17647, 0, 0, 300.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 GM300KPa
KPaOn = scalar, U08, 64, "KPa", 1.17647, 0, 0, 300.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], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID"
HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0
HCutLCType = bits, U08, 76[0:1], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID"
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], "Fuel Only", "Spark Cut Only", "Fuel & Spark", "INVALID"
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, 3000, 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 GM300KPa
NosLowKpa = scalar, U08, 85, "KPa", 1.17647, 0, 0, 300.0, 0
NosHiKpa = scalar, U08, 86, "KPa", 1.17647, 0, 0, 300.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!
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 MPXH6300A
OvrRunKpa = scalar, U08, 72, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif GM300KPa
OvrRunKpa = scalar, U08, 72, "KPa", 1.17647, 0, 0, 300.0, 0
#elif MPXH6400A
OvrRunKpa = scalar, U08, 72, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
OvrRunKpa = scalar, U08, 72, "KPa", 1, 0, 0, 255, 0
#endif
OvrRunTps = scalar, U08, 73, "Raw ADC", 1, 0, 0, 255, 0
OvrRunTimr = scalar, U08, 130, "Sec", 1, 0, 0, 255, 0
; Accel Dot Settings
AccDecEnrich = bits, U08, 66[7:7], "TPSdot*^(DT)", "MAPdot"
KPaDotBoost = bits, U08, 66[4:4], "Never", "In Boost"
; 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 GM300KPa
BarroHi = scalar, U08, 82, "KPa", 1.17647, 0, 0, 300.0, 0
BarroLow = scalar, U08, 83, "KPa", 1.17647, 0, 0, 300.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
; SECOND O2 SETTINGS
TwoLambda = bits, U08, 66[0:0], "None*^(DT)", "Fitted (DT only)"
; 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
; Priming SETTINGS
AlwaysPrime = bits, U08, 92[2:2], "Prime Pulse>0*^", "Always"
PrimeLate = bits, U08, 92[3:4], "Power Up*^", "INVALID", "Twice","After 2 Secs"
; 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
dwellcont = bits, U08, 109, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 110, "ms", 0.1, 0, 0, 25.5, 1
dwellrun = scalar, U08, 111, "ms", 0.1, 0, 0, 25.5, 1
idle_dc_lo = scalar, U08, 122, "dc%", 1, 0, 0, 100, 0
; idle_dc_hi = 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 GM300KPa
bc_max_diff = scalar, U08, 125, "kPa", 1.17647, 0, 0, 300.0, 0
DecelKPa = scalar, U08, 129, "KPa", 1.17647, 0, 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
tpsflood = scalar, U08, 128, "raw", 1.0, 0.0, 0.0, 255.0, 0
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
; CLT vs MAT for cranking pulse width
crankpwip = bits, U08, 116, [3:4], "INVALID", "CLT only*^", "MAT only", "CLT,MAT average"
; 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"
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 MPXH6300A
mapBins4 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins4 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 0, 300.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
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 MPXH6300A
mapBins5 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins5 = array, U08, 156, [ 12], "kPa", 1.17647, 0, 0, 300.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
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_Non_Above
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DIY_TechE_NonL
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif TechEdge_Lin
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1
#elif Innovate1_2
afrBins1 = array, U08, 0, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1
#elif Innovate0_5
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1
#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 MPXH6300A
mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins6 = array, U08, 72, [ 8], "kPa", 1.17647, 0, 0, 300.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
; 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_Non_Above
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DIY_TechE_NonL
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif TechEdge_Lin
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229, 9.0, 19.0, 1
#elif Innovate1_2
afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 0.0, 20.0, 1
#elif Innovate0_5
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255, 10.0, 20.0, 1
#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 MPXH6300A
mapBins7 = array, U08, 152, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
mapBins7 = array, U08, 152, [ 8], "kPa", 1.17647, 0, 0, 300.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
page = 8 ; boost controller targets
;target kpa
#if MPXH6300A
bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif GM300KPa
bcBins1 = array, U08, 0, [ 6x6], "kPa", 1.17647, 0, 0, 300.0, 0
bcBins3 = array, U08, 96, [ 6x6], "kPa", 1.17647, 0, 0, 300.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
;-------------------------------------------------------------------------------
[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 = std_enrichments, "&Enrichments 1", 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 = "Fuel Table&2(DT)", { inj2t }
subMenu = std_constants, "&Constants 2 (DT)", 2
subMenu = std_enrichments, "&Enrichments 2 (DT)", 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 = 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, "(NEW) 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"
menu = "&Code Config"
subMenu = codeBase, "(NEW)&Codebase and outputs function"
subMenu = advanced, "&Advanced code options"
subMenu = wheeldecoder, "Wheel decoder settings", 0, { wheelon }
subMenu = MapSettings, "(NEW)MA&P Sensor Settings"
subMenu = miscSettings, "&Misc settings"
subMenu = BarroCor, "&Barometric Correction"
subMenu = outputs, "&Outputs"
subMenu = outputs2, "(NEW)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_warmup, "&Warmup Wizard"
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 }
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 = 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"
;-------------------------------------------------------------------------------
[UserDefined]
dialog = codeBase, "Power cycle after changes", 4
topicHelp = Chelp1
field = "Choose one code type"
field = "This cyl (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
dialog = wheeldecoder, "Power cycle after changes", 4
topicHelp = Fhelp1
field = "Wheel decoder base teeth", numteeth
field = "Missing/added teeth", onetwo
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
; 4th channel not yet implemented
; 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 = "Functions from DT (*=B+G default)"
field = "After Start Enrich Counter", aseIgnCount
field = "EGO Correction Step Counter", egoIgnCount
; field = "IdlIgncount", idlIgnCount ;couldnt find it in the code
field = "Accel Timer", taeIgnCount
field = "Interpolated Priming pulse", interpPrime
field = "Hybrid Alpha N", hybridAN
field = ""
field = "False trigger protection", falsetrig
field = "Enable ACKing the IRQ", en_ack
field = ""
field = "Prime Pump when", AlwaysPrime
field = "Fire Priming Pulse", PrimeLate
field = ""
field = "EDIS multispark", edismulti, { edis }
field = "EDIS multispark rpm limit", edismultirpm, { edis & edismulti }
field = ""
field = "Cranking pulse width uses", crankpwip
dialog = MapSettings, "Power Cycle after Changes",4
topicHelp = Fhelp1
field = ""
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 = "Correction factor needs to be:"
field = "24% for GM 300KPa sensor"
field = "28% for 6300A series sensor"
field = "78% for 6400A series sensor"
field = "Correction Factor", KPA300BARO, {mapSensor1 & KPA300Sens}
dialog = fuelTable, "Fuel Table selection",4
topicHelp = Fhelp2
field = "* = B+G default ^ = MSnS default"
field = "DT = Dual Table default"
field = "Injector channel 1:"
field = "use table : always 1"
field = "GammaE:", inj1g
field = "Injector channel 2:"
field = "use table:", inj2t
field = "GammaE:", inj2g
field = "Pulse inj2 during cranking", inj2cr
field = ""
field = "Switch VE Table1 for VE Table3 when"
field = "NOS on or when Pin6 JP1 low.", UseVE3
field = "Delay for changing to VE3", VE3Delay, {UseVE3}
dialog = miscSettings, "Misc settings", 4
topicHelp = Fhelp1
field = "Cranking RPM", CrankRPM
field = "TPS value for flood clear", tpsflood
field = "Rev Limiter"
field = "MSnS Soft rev limit", SoftRevLim
field = "MSnS Soft limit retard", SoftLimRetard
field = "MSnS Soft limit max time", SoftLimMax
field = "MSnS Hard Rev limit", HardRevLim
dialog = outputs,"Outputs",4
topicHelp = Fhelp1
field = "Output turns off when actual value ="
field = "On/Off limit - Hysterisis"
field = "To create an output window set Upper"
field = "Limit. For normal output set to zero"
field = "OUTPUT 1 (X4) 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 = "OUTPUT 3 (U1 pin15)"
field = "OUTPUT 3 (PTD0) source", out3src
field = "On-Off Limit", out3lim
field = "Off Delay Timer", out3Timer
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 }
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 = "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 = dwellSettings,"Dwell Settings",4
topicHelp = Fhelp1
field = "Dwell control", dwellcont
field = "Use: Spark output duty cycle", dwellduty50, { !dwellcont }
field = "Or: Cranking dwell", dwellcrank, { dwellcont }
field = "+ Running dwell", dwellrun, { dwellcont }
dialog = idleControl, "Fielding 2-Wire Idle Control", 4
topicHelp = Fhelp1
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) }
; upper idle duty cycle is always zero
dialog = boostIAT, "IAT Related Boost",4
topicHelp = Fhelp1
field = "Remove boost related to IAT"
field = "When IAT above", IATBoostSt
field = "remove 1 psi (7KPa) every:", IATBoost
field = "when tps above:", TPSBooIAT
dialog = boostControl, "Boost Controller Parameters", 4
topicHelp = Fhelp1
field = "Solenoid PWM Rate", freqDiv
field = "Controller Update", bcUpdateRate
field = "Proportional Gain", pGain
field = "Differential Gain", dGain
field = ""
field = "Increase Voltage =", BoostDir
field = ""
field = "Switch Boost Target Tables when"
field = "NOS on or JP1 pin6 low", BooTbl2Use
field = ""
field = "Closed loop kpa limit", bc_max_diff
field = "This is the difference between target"
field = "boost level and actual. If greater"
field = "than this limit then goes open loop"
field = "and uses duty cycle from table"
field = "Note. 0% duty = low boost, 100% = full boost"
; ENHANCED STUFF
dialog = LaunchSettings, "Launch Control", 4
topicHelp = Fhelp5
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 = "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 = ""
field = "Second Lambda Sensor runs EGO Corr"
field = "for Bank #2 injectors"
field = "enrichments from page2 and VE Table2"
field = "If target AFR Table used for VE 1 then it will"
field = "follow those targets."
field = "if not it will follow the target AFR in"
field = "the Enrichments 2 page"
field = "Second Lambda fitted on X7?", TwoLambda
dialog = OpenLoop, "Open Loop Mode", 4
topicHelp = Fhelp1
field = "Open Loop O2 Correction:", OLoopEgo
field = ""
field = "If TPS selected then go Open Loop @", TpsOn
field = "If KPa selected then go Open Loop @", KPaOn
field = "Set selection to zero for no Openloop"
field = "Restart MS after changes"
dialog = WaterInj,"Water Injection Setpoints", 4
topicHelp = Chelp4
field = "Please Note:"
field = "O2 correction turns OFF when water starts"
field = "Water Injection", WaterInj
field = "Start Water Injection when Boost above", StartWIKPa, { WaterInj }
field = "and engine speed above:", WaterIRpm, { WaterInj }
field = "and Manifold Air Temp above", WaterIIat, { WaterInj }
dialog = IatCltIg, "IAT/Clt Related Ignition", 4
topicHelp = Shelp2
field = "Coolant/Iat Related Advance", CltAdv
field = "Add 1 degree of ignition advance every", IgAdvDeg, { CltAdv }
field = "when below: Coolant setpoint ", IgAdvTemp, { CltAdv }
field = "Note: IAT Retard will work when 3C above "
field = " Coolant setpoint"
field = "Max allowable added ignition advance ", MaxIatAdv, { CltAdv }
field = " "
field = "Pull 1 degree of ignition retard every", IgRetDeg, { CltAdv }
field = "when MAP above", IatAdvKpa, { CltAdv }
field = "and IAT above", IgRetTemp, { CltAdv }
dialog = Knock,"Knock Detection System", 4
topicHelp = Shelp1
field = "Knock Detector System", KnockOn
field = "Ignore Knocks when above", KnockRpm, { KnockOn }
field = "Ignore Knocks when MAP above ", KnockKpa, { KnockOn }
field = "Ignore Knocks when below ", KnockRpmL, { KnockOn }
field = "First Knock: Retard by", KnockRet, { KnockOn }
field = "Subsequent Knocks: Retard by", KnockSb, { KnockOn }
field = "Max Retard Allowed ", KnockMax, { KnockOn }
field = "Advance when no knock:", KnockAdv, { KnockOn }
field = "Wait time between steps:", KnockTim, { KnockOn }
field = ""
field = "If using Boost Control:"
field = "Amount of boost to remove/add in"
field = "the above steps" , KnockBoost, {boostUse & KnockOn}
field = "Maximum boost to remove", BoostMaxKn, {boostUse & KnockOn}
dialog = SparkT2, "Spark Table selection", 4
topicHelp = Shelp4
field = "Use Spark Table 1"
field = "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 = "OVER BOOST PROTECTION"
field = "Over Boost Hard Cut if Boost hits", OvrBKpa
dialog = HardLim, "Hard Cut/Limiter Type", 4
topicHelp = Fhelp4
field = "**********C A U T I O N:**************"
field = "IGNITION CUT IS NOT SUITABLE"
field = "FOR VEHICLES FITTED WITH"
field = " CATALYTIC CONVERTERS"
field = "*Spark Cut doesn't work for Edis users*"
field = "BASE NUMBER to cut sparks from", SparkCutBase
field = "REV LIMITER"
field = "Hard Cut Type", HCutType
field = "Cut 'n' sparks out of BASE NUMBER", HCutSpark
field = "LAUNCH CONTROL"
field = "Hard Cut Type", HCutLCType
field = "Cut 'n' sparks out of BASE NUMBER", HCutLCSpark
field = "OVER BOOST PROTECTION"
field = "Hard Cut Type", OvrBCutType
field = "Cut 'n' sparks out of BASE NUMBER", SparkCutBNum
dialog = NosSystem, "Nitrous System", 4
topicHelp = Chelp5
field = "Nitrous Control", nitrousUse
field = "Turn NOS on when above", NosRpm, {nitrousUse}
field = "And Coolant Temp above", NosClt, {nitrousUse}
field = "And TPS >", NosTps, {nitrousUse}
field = ""
field = "Additional Fuel PW @ 3,000 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 = "STAGED INJECTION SETTINGS"
field = " Not suitable with DT"
field = "Injector Staging Mode:", IStagedMode
field = "Injector Bank 2 off untill:"
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 = Fhelp1
field = "Over Run Fuel Cut", OvrRunC
field = "Cut fuel when:"
field = "when RPM Higher than:", OvrRunRpm, {OvrRunC}
field = "and KPa Lower than: ", OvrRunKpa, {OvrRunC}
field = "and TPS lower than: ", OvrRunTps, {OvrRunC}
field = "after", OvrRunTimr, {OvrRunC}
dialog = AccelDecc, "Accel Decel Trigger dot", 4
topicHelp = Fhelp6
field = "Accel / Decel Enrichments Trigger:", AccDecEnrich
field = ""
field = "Turn Decel Enrich off when :" , DecelBoost
field = "Cut Decel Setpoint:", DecelKPa, {DecelBoost}
field = ""
field = "If MAPdot turn Enrich off", KPaDotBoost, {AccDecEnrich}
dialog = BarroCor, "Barometric Correction", 4
topicHelp = Chelp3
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 = "Traction Control", TractionOn
field = "MODE=:", TractMode
field = "(RPM Based)RPMdot Threshold", RPMThresh, {!TractMode}
field = "(VSS Based)Sensor Differential", TractScale, {TractMode}
field = "(VSS Based)Low Speed Slip Threshold ", TractSlip, {TractMode}
field = "(VSS Based)Half Speed Slip Threshold", TractSlipH, {TractMode}
field = "Operate Anti-Rev between Max and Min"
field = "(VSS Based)Max Undriven input", TractVSSMax, {TractMode}
field = "(VSS Based)Min Undriven input", TractVSSMin, {TractMode}
field = "Enrichment Bins (mSec)"
field = "", RPM1S
field = "", RPM2S
field = "", RPM3S
field = "", RPM4S
field = "Retard Ignition by",
field = "", TractRet1, { ignmode }
field = "", TractRet2, { ignmode }
field = "", TractRet3, { ignmode }
field = "", TractRet4, { ignmode }
dialog = traction2, "Anti-Rev System cont...", 4
topicHelp = Fhelp1
field = "Spark Cut 'n' from Base Value"
field = "", TractSC1, { ignmode }
field = "", TractSC2, { ignmode }
field = "", TractSC3, { ignmode }
field = "", TractSC4, { ignmode }
field = ""
field = "Turn NOS off during Anti-Rev?", TractNOS, { nitrousUse }
field = ""
field = "Retard, Enrichment + Spark cut"
field = "for nn Engine Cycles"
field = "", TractCyc1
field = "", TractCyc2
field = "", TractCyc3
field = "", TractCyc4
field = "or untill:", TractCySec
;*************************** HELP STUFF ***************************************
help = Fhelp1, "General Help"
text = "For MS (fuel only) select *.
"
text = "For MSnS select ^
"
text = "
"
text = "For more help or problems please see the Extra Website at
"
text = "http://megasquirt.sourceforge.net/extra/
"
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"
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"
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 = "
"
text = "If you run 2 Lambda sensors, one on each "
text = "bank, you can have a totally
"
text = "seperate Ego correction for CH2"
text = "only for use when CH2 = VE Table2"
help = 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"
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"
text = "Select between TPSdot / MAPdot accel/decel enrichment
"
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
"
help = Shelp1, "Knock Detection"
text = "Please see:
"
text = "http://megasquirt.sourceforge.net/extra/
"
text = "for more info on this function.
"
help = Shelp2, "IAT/CLT Related Ignition"
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"
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"
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"
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 = "After Start Enrich Counter in Sec or"
text = "engine cycles
"
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
"
text = "
"
text = "Prime pump when pulse > 0.0 or always"
text = "Fire priming pulse imediately on power"
text = "up or after 2 seconds or fire 2 pulses
"
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"
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"
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 3000rpm and the NOS 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"
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.
"
;-------------------------------------------------------------------------------
[TableEditor]
; table_id, map3d_id, "title", page
table = veTable1Tbl, veTable1Map, "VE Table 1", 1
; constant, variable
xBins = rpmBins1, rpm
yBins = mapBins1, map
zBins = veBins1
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2
xBins = rpmBins2, rpm
yBins = mapBins2, map
zBins = veBins2
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3
xBins = rpmBins3, rpm
yBins = mapBins3, map
zBins = advTable1
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5
xBins = rpmBins4, rpm
yBins = mapBins4, map
zBins = advTable2
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
table = veTable3Tbl, veTable3Map, "VE Table 3. See Fuel Table Selection", 6
xBins = rpmBins5, rpm
yBins = mapBins5, map
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
yBins = mapBins6, map
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
yBins = mapBins7, map
zBins = afrBins2
#elif WB_Non_Above
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
yBins = mapBins6, map
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
yBins = mapBins7, map
zBins = afrBins2
#elif DIY_TechE_NonL
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
yBins = mapBins6, map
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
yBins = mapBins7, map
zBins = afrBins2
#else
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (AFR)", 7
xBins = rpmBins6, rpm
yBins = mapBins6, map
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (AFR)", 7
xBins = rpmBins7, rpm
yBins = mapBins7, map
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
;-------------------------------------------------------------------------------
[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, "EGO Correction", "%", 50, 150, 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 GM300KPa
mapGauge = map, "Engine MAP", "kPa", 0, 300, 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,
; 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
;-------------------------------------------------------------------------------
[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
gauge2 = cltGauge
gauge3 = pulseWidth1Gauge
gauge4 = throttleGauge
gauge5 = mapGauge
gauge6 = matGauge
gauge7 = afrGauge
; Various Gauges for use in the msns-extra code, remove the ";" and renumber
gauge8 = advanceGauge
; gauge1 = RpmHiResGauge
gauge4 = TargetAFRGauge
; gauge4 = batADCGauge
; gauge3 = mphGauge ; ONLY FOR USE WHEN VSS CONNECTED TO MS
; gauge3 = USgphGauge
; gauge3 = gphGauge
; gauge3 = USmpgGauge
; gauge3 = mpgGauge
; gauge7 = KnockGauge
; gauge4 = egtGauge
; gauge7 = pulseWidth2Gauge
; gauge8 = dutyCycle2Gauge
; 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
;-------------------------------------------------------------------------------
[RunTime]
#if CELSIUS
coolantBar = -40, 100
matBar = -40, 100
#else
coolantBar = -40, 215
matBar = -40, 215
#endif
batteryBar = 6, 15
dutyCycleBar = 0, 100
#if NARROW_BAND_EGO
egoBar = 0, 1.0
#else
egoBar = 0, 5.0
#endif
gammaEBar = 0, 200
mapBar = 0, 255
pulseWidthBar = 0, 25.5
rpmBar = 0, 8000
throttleBar = 0, 100
egoCorrBar = 0, 200
baroCorrBar = 0, 200
warmupCorrBar = 0, 200
airdenCorrBar = 0, 200
veCorrBar = 0, 200
accCorrBar = 0, 100
;-------------------------------------------------------------------------------
[Tuning]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
font = "FixedSys", 14
spotDepth = 2 ; 0 = no indicators, 1 = Z only, 2 = XYZ indicators.
cursorDepth = 2 ; Same as spot depth.
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
gauge1 = tachometer, tachometer, tachometer, tachometer
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidth1Gauge, pulseWidth2Gauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycle1Gauge, dutyCycle2Gauge
;-------------------------------------------------------------------------------
[OutputChannels]
; The number of bytes MegaTune should expect as a result
; of sending the "A" command to MegaSquirt is determined
; by the value of ochBlockSize, so be very careful when
; you change it.
deadValue = { 0 } ; Convenient unchanging value.
ochGetCommand = "R" ; was "a" and before that "A"
ochBlockSize = 35 ; was 25
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
cTime = scalar, U16, 22, "s", 1.000, 0.000
advance = scalar, U08, 24, "deg", 1.000, 0.000
afrtarget = scalar, U08, 25, "ADC", 1.000, 0.000
fuelADC = scalar, U08, 26, "ADC", 1.000, 0.000 ; ADC from X7 (second O2 or fuel pressure)
egtADC = scalar, U08, 27, "ADC", 1.000, 0.000
CltIatAngle = scalar, U08, 28, "deg", 1.000, 0.000
KnockAngle = scalar, U08, 29, "deg", 1.000, 0.000
egoCorrection2 = scalar, U08, 30, "%", 1.000, 0.000 ; Second O2 sensor correction
porta = scalar, U08, 31, "", 1.000, 0 ; porta raw value
portb = scalar, U08, 32, "", 1.000, 0 ; portb raw value
portc = scalar, U08, 33, "", 1.000, 0 ; portc raw value
portd = scalar, U08, 34, "", 1.000, 0 ; portd raw value
; accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? const(85) : 100) }
accDecEnrich = { accelEnrich + ((engine & 0b00100000) ? tdePct1 : 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 = { egtADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C
#else
egttemp = { egtADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F
#endif
; Added for second O2 sensor
#if NARROW_BAND_EGO
afr2 = { table(fuelADC, "NBafr100.inc") / 100.0 }
lambda2 = { afr2 / 14.7 }
#else
lambda2 = { table(fuelADC, "WBlambda100MOT.inc") / 100.0 }
afr2 = { lambda2 * 14.7 }
#endif
; Added for AFR Tables
#if NARROW_BAND_EGO
afr = { table(egoADC, "NBafr100.inc") / 100.0 }
lambda = { afr / 14.7 }
TargetAFR = { table(afrtarget, "NBafr100.inc") / 100.0 }
TargetLambda = { TargetAFR / 14.7 }
#elif WB_Non_Above
afr = { egoADC * 0.01961 }
lambda = { 0 }
TargetAFR = { afrtarget * 0.01961 }
TargetLambda = { 0 }
#elif DIY_TechE_NonL
lambda = { table(egoADC, "WBlambda100MOT.inc") / 100.0 }
afr = { lambda * 14.7 }
TargetLambda = { table(afrtarget,"WBlambda100MOT.inc") / 100.0}
TargetAFR = { TargetLambda * 14.7 }
#elif TechEdge_Lin
afr = { (egoADC * 0.0392) + 9 }
lambda = { afr / 14.7 }
TargetAFR = { (afrtarget * 0.0392) + 9 }
TargetLambda = { TargetAFR / 14.7 }
#elif Innovate1_2
afr = { (egoADC * 0.1961) }
lambda = { afr / 14.7 }
TargetAFR = { (afrtarget * 0.1961) }
TargetLambda = { TargetAFR / 14.7 }
#elif Innovate0_5
afr = { (egoADC * 0.0392) + 10 }
lambda = { afr / 14.7 }
TargetAFR = { (afrtarget * 0.0392) + 10 }
TargetLambda = { TargetAFR / 14.7 }
#endif
; 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 GM300KPa
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { mapADC * 1.17647}
#elif MPXH6400A
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { (mapADC + 2.147) * 1.6197783}
#elif MPX4250
barometer = { table(baroADC, "kpafactor4250.inc") }
map = { table(mapADC, "kpafactor4250.inc") } ; Manifold pressure in kPa.
#else
barometer = { table(baroADC, "kpafactor4115.inc") }
map = { table(mapADC, "kpafactor4115.inc") }
#endif
throttle = { table(tpsADC, "throttlefactor.inc") }
advSpark = { (advance * 0.352)-10 }
; Enhanced Stuff
KnockAng = {(KnockAngle * 90 / 256)}
KnockDeg = {-KnockAng }
CltIatAng = {CltIatAngle * 90 / 256 }
CltIatDeg = { CltIatAng < 45? CltIatAng: -90 + CltIatAng} ; Coolant Iat added Angle
fuelvolt = {fuelADC < 1 ? 0.0 : fuelADC * (5/255) - 0.5}
fuelpress = {fuelADC < 1 ? 0.0 : fuelvolt / 0.04 +1}
altDiv1 = { alternate1 ? 2 : 1 }
altDiv2 = { alternate2 ? 2 : 1 }
cycleTime1 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke1) }
nSquirts1 = { nCylinders1/divider1 }
dutyCycle1 = { rpm < 100 ? 0 : 100.0*nSquirts1/altDiv1*pulseWidth1/cycleTime1 }
cycleTime2 = { rpm < 100 ? 0 : 60000.0 / rpm * (2.0-twoStroke2) }
nSquirts2 = { nCylinders2/divider2 }
dutyCycle2 = { rpm < 100 ? 0 : 100.0*nSquirts2/altDiv2*pulseWidth2/cycleTime2 }
; These next two are needed to make the runtime dialog look good.
veCurr = { veCurr1 }
pulseWidth = { pulseWidth1 }
; Test use only
test = {egtADC}
test2 = {fuelADC}
; Hi Res RPM only for 4 or greater cylinder engines.
; Phil, this can be cleaned up now that nCylinders is no longer the 0..15 value but the actual count.
; ??? begin
TimeDivisor = {(nCylinders1-1) > 6 ? 0.86 : (nCylinders1-1) > 4 ? 0.82 : (nCylinders1-1) > 2 ? 0.75 : 1}
RpmHiResCalc = { (60000000 / ((cTime * (nCylinders1-1) + 1) / (2.0-twoStroke1))) * TimeDivisor}
RpmHiRes = { rpm100 < 5 ? rpm : (nCylinders1-1) < 3 ? rpm : RpmHiResCalc}
; ??? end
; Vacuum and Boost Gauges
vacuum = {(barometer-map)*0.2953007} ; Calculate vacuum in in-Hg.
boost = {map < barometer ? 0.0 : (map-barometer)*0.1450377} ; Calculate boost in PSIG.
boostVac = {map < barometer ? -vacuum : (map-barometer)*0.1450377}
; Speedo Gauge, when VSS connected to X6 and X7
;****************************************************************************
; CHANGE THESE TO SUIT YOUR CAR TO GET MPG, MPH, ETC. THIS WILL ONLY WORK WITH A SUITABLE
; VEHICLE SPEED SENSOR CONNECTED TO MSnS-EXTRA CODE.
Speed = { 70 } ; Change this to your actual speed @ 2.5V from VSS circuit
fuelCC = { 2168 } ; Enter the total flow for all your injectors here in cc/Min
;****************************************************************************
squirtmul = { divider1 < 2 ? 2 : divider1 < 3 ? 1 : divider1 < 5 ? 0.5 : divider1 < 9 ? 0.25 : divider1 < 17 ? 0.125 : 1}
squirts = { alternate1 > 0 ? rpm100 / 0.6 * squirtmul : rpm100 * 2 * squirtmul / 0.6 } ; How many squirts per Sec
OpenWidth = { injOpen1 * 0.1 } ; Pulse width for injector opening time
CCpHr = { pulseWidth < 1 ? 1 : (fuelCC/60) * ((pulseWidth - OpenWidth)/1000) * squirts * 3600 } ; cc / hr
mphTemp = { fuelADC < 1 ? 0 : (fuelADC * Speed) /127.5 } ; MPH
mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph
USgph = { CCpHr / 3785 } ; US Gallons / Hr
USmpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon
gph = { CCpHr / 4546 } ; Real Gallons / Hr
mpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / gph } ; Real Miles / Gallon
;*****************************************************************************
; CHANGE THESE VALUES TO FIND THE APPROXIMATE BHP FOR YOUR ENGINE.
; CALCULATIONS WERE PROVIDED BY ERIC. THESE WILL ONLY WORK IF A SUITABLE VEHICLE SPEED
; SENSOR IS CONNECTED TO THE MSnS-EXTRA CODE.
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
;-------------------------------------------------------------------------------
[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"
entry = veCurr2, "Gve2", int, "%d"
entry = pulseWidth2, "PW2", float, "%.1f"
entry = dutyCycle1, "DutyCycle1", float, "%.1f"
entry = dutyCycle2, "DutyCycle2", float, "%.1f"
; Last three are for MSLVV compatibility, but we dont use these, we use the
; three underneath.
; entry = pulseWidth2, "UserData1", int, "%d"
; entry = veCurr2, "UserData2", int, "%d"
; entry = idleDC, "UserData3", int, "%d"
; 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 = advSpark, "Spark Angle", int, "%d"
; entry = fuelpress, "Fuel Press", int, "%d"
entry = KnockDeg, "Knock", int, "%d"