;-------------------------------------------------------------------------------
[MegaTune]
MTversion = 2.25 ; MegaTune itself; needs to match exec version.
queryCommand = "S" ; data format
signature = "MSnS-extra format 027a *********" ; gets changed when data format/this file changes
versionInfo = "T" ; full text of this revision
; last edited for version 027a2 and MT2.25b627 or later
; put ALPHA-N back in, (add #set SPEED_DENSITY to your settings file to disable)
;-------------------------------------------------------------------------------
[Constants]
; msValue = userValue / scale - translate
; userValue = (msValue + translate) * scale
endianness = big
;this is the normal eight page setup
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"
;this is the optional 10 page version with pages 9 & 10 returning logged data
;At present you can only access this data by using the Table Editor and viewing the data directly
;Page 9 contains the time between each tooth in the missing tooth wheel decoder _ONLY_
;Page 10 contains the time between "triggers" and will work for all ignition types
;99 big endian 16bit numbers are returned. The 199th byte is the address of the _next_ byte to
;be written. The code logs continuously once the page is selected so you need to start from the
;next byte and wrap around to the beginning to get the data in the right order
;The 200th byte indicates the time units. 0 = microseconds, 1= 0.1ms units
;After you've selected the page, pause a little then hit Fetch, you'll get 99 new samples.
;Then somehow get them into a spreadsheet and plot a graph.
;
; nPages = 10
; burnCommand = "B"
; pageSize = 200, 200, 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","P\360","P\361"
; pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V"
; pageValueWrite = "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v","",""
; 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 = off ; 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
#elif AIR_FLOW_METER
afmBins1 = array, U08, 170, [ 12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins1 = array, U08, 170, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
#if CELSIUS
egoTemp1 = scalar, U08, 144, "°C", 0.555, -72, -40, 102.0, 0
#else
egoTemp1 = scalar, U08, 144, "°F", 1.0, -40, -40, 215.0, 0
#endif
egoCount1 = scalar, U08, 145, "", 1.0, 0.0, 0.0, 255.0, 0
egoDelta1 = scalar, U08, 146, "%", 1.0, 0.0, 0.0, 255.0, 0
egoLimit1 = scalar, U08, 147, "%", 1.0, 0.0, 0.0, 255.0, 0
reqFuel1 = scalar, U08, 148, "ms", 0.1, 0.0, 0.0, 25.5, 1
divider1 = scalar, U08, 149, "", 1.0, 0.0
alternate1 = bits, U08, 150, [0:0], "Simultaneous", "Alternating"
injOpen1 = scalar, U08, 151, "ms", 0.1, 0.0, 0.1, 25.5, 1
injPwmP1 = scalar, U08, 153, "%", 1.0, 0.0, 0.0, 100.0, 0
injPwmT1 = scalar, U08, 154, "ms", 0.1, 0.0, 0.0, 25.5, 1
battFac1 = scalar, U08, 155, "ms/v",0.0166667, 0.0, 0.0, 1.0, 2
rpmk1 = scalar, U16, 156, "", 1.0, 0.0
; Config1
mapType1 = bits, U08, 182, [0:1], "115 kPa", "250 kPa", "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
#elif AIR_FLOW_METER
afmBins2 = array, U08, 170, [12], "Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins2 = array, U08, 170, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; 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
#elif AIR_FLOW_METER
afmBins3 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins3 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
TrigAng = scalar, U08, 168, "Deg", 0.352, 0, 0, 90, 0
FixAng = scalar, U08, 169, "Deg", 0.352, -28.4, -10, 80, 0
Trim = scalar, S08, 170, "Deg", 0.352, 0, -45, 45, 0
CrankAng = scalar, U08, 171, "Deg", 0.352, -28.4, -10, 80, 0
IgHold = scalar, U08, 172, "", 1, 0, 0, 100, 0
Trig_plus = bits, U08, 173[0:1], "0", "+22.5", "INVALID", "+45"
TrigCrank = bits, U08, 173[2:2], "Trigger Return", "Time Based"
IgInv = bits, U08, 173[3:3], "No", "Yes"
oddfire = bits, U08, 173[4:4], "No", "Yes"
IdleAdv = scalar, U08, 174, "Deg", 0.352,-28.4, -10, 80, 0
IdleAdvTPS = scalar, U08, 175, "ADC", 1, 0, 0, 255, 0
IdleAdvRPM = scalar, U08, 176, "RPM", 100, 0, 0, 1200, 0
spare3_177 = scalar, U08, 177, "", 1, 0, 0, 255, 0
spare3_178 = scalar, U08, 178, "", 1, 0, 0, 255, 0
spare3_179 = scalar, U08, 179, "", 1, 0, 0, 255, 0
spare3_180 = scalar, U08, 180, "", 1, 0, 0, 255, 0
spare3_181 = scalar, U08, 181, "", 1, 0, 0, 255, 0
spare3_182 = scalar, U08, 182, "", 1, 0, 0, 255, 0
spare3_183 = scalar, U08, 183, "", 1, 0, 0, 255, 0
spare3_184 = scalar, U08, 184, "", 1, 0, 0, 255, 0
page = 4
msnsCyl = bits, U08, 0, [0:0], "Off*", "MSnS^"
neonCrank = bits, U08, 0, [1:1], "Off*^", "Neon/420A"
wheelon = bits, U08, 0, [2:2], "Off*^", "Generic wheel"
onetwo = bits, U08, 0, [3:3], "-1", "-2"
edis = bits, U08, 0, [4:5], "Off*^", "EDIS", "INVALID", "dual EDIS"
tfi = bits, U08, 0, [6:6], "Off*^", "Ford TFI"
hei7 = bits, U08, 0, [7:7], "Off*^", "GM 7pin HEI"
; used to capture all ignition modes, for menu selection
ignmode = scalar, U08, 0, "", 1, 0, 0,0 255,0
fidleUse = bits, U08, 1, [0:0], "Idle control*", "Spark output A"
led17Use = bits, U08, 1, [1:1], "Squirt*^", "Spark output A"
led18Use = bits, U08, 1, [2:3], "Warmup*^", "IRQ trigger", "Output4","Spark output C"
led18_2Use = bits, U08, 1, [3:3]
led19Use = bits, U08, 1, [4:4], "Acceleration*^", "Spark output B"
x2use = bits, U08, 1, [5:5], "Water inj", "Fan control"
;bit 6 is led18/fan control
toy_dli = bits, U08, 1, [7:7], "Normal*", "Toyota DLI muliplex"
;spark outputs E & F
spkeop = bits, U08, 116, [3:3], "Shiftlight", "Spark output E"
spkfop = bits, U08, 116, [4:4], "Knock input", "Spark output F"
SoftRevLim = scalar, U08, 2, "rpm", 100.0, 0.0, 100, 25500, 0
SoftLimRetard = scalar, U08, 3, "deg", 0.352, -28.4, -10, 80, 0
SoftLimMax = scalar, U08, 4, "s", 0.1, 0.0, 0.0, 25.5, 1
; "MSnS Soft limit cool time (s)", 5, 0.1, 0.0, 0.0, 25.5 NOT USED
HardRevLim = scalar, U08, 6, "rpm", 100, 0.0, 100, 25500, 0
out1lim = scalar, U08, 7, "raw byte or deg F +40", 1, 0, 0, 255, 0
out1src = bits, U08, 8, [0:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out2lim = scalar, U08, 9, "raw byte or deg F +40", 1, 0, 0, 255, 0
out2src = bits, U08, 10, [0:4], "Off*", "INVALID", "INVALID", "INVALID", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out1Hysis = scalar, U08, 126, "raw byte or deg F", 1, 0, 0, 255, 0
out2Hysis = scalar, U08, 127, "raw byte or deg F", 1, 0, 0, 255, 0
out3lim = scalar, U08, 133, "raw byte or deg F +40", 1, 0, 0, 255, 0
out3src = bits, U08, 132, [0:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT", "TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out3Timer = scalar, U08, 134, "Sec", 0.1, 0, 0, 25.5 , 1
Out3_Out1 = bits, U08, 116[7:7], "Source", "output1+Source"
out4lim = scalar, U08, 139, "raw byte or deg F +40", 1, 0, 0, 255, 0
out4src = bits, U08, 138, [0:4], "Off*", "INVALID", "DECEL", "ACCEL", "MAP", "MAT", "CLT","TPS", "BATT", "EGO", "egocorr", "AirCorr", "WarmCorr", "RPM", "PW1", "TPSAccel" ,"BaroCorr", "GammaE","VECurr1", "PW2","VECurr2", "IdleDC","CTimeH", "CTimeL","SparkAngle", "AFRTarget","X7ADC", "X6ADC","CltIATAngle", "KnockAngle","EggoCorr2", "Traction Active"
out4FAN = bits, U08, 1, [6:6], "Source", "Fan Control"
wd_2trig = bits, U08, 11, [0:0], "Off", "2nd trigger"
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"
rotaryFDign = bits, U08, 11, [4:4], "FC Trailing", "FD Trailing"
hybridAN = bits, U08, 11, [5:5], "Off*^", "On"
inj2cr = bits, U08 11, [6:6], "Off", "On*^"
boostUse = bits, U08, 12, [0:0], "Output1*^", "Boost Control"
shiftUse = bits, U08, 12, [1:1], "Off*^", "On"
launchUse = bits, U08, 12, [2:2], "Off*^", "On"
pwmIdle = bits, U08, 12, [3:3], "B&G On-Off*^", "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, 6, 0
freqDiv = bits, U08, 14, [0:2], "INVALID","39.0 Hz","19.5 Hz","13.0 Hz","9.8 Hz","7.8 Hz","6.5 Hz","5.6 Hz"
bcUpdateRate = scalar, U08, 15, "ms", 1.0, 0.0, 10, 255, 0
pGain = scalar, U08, 16, "%", 0.3922, 0.0, 0, 100, 1
dGain = scalar, U08, 17, "%", 0.3922, 0.0, 0, 100, 1
ShiftLower = scalar, U08, 18, "rpm", 100.0, 0.0, 100, 25500, 0
ShiftUpper = scalar, U08, 19, "rpm", 100.0, 0.0, 100, 25500, 0
LaunchLim = scalar, U08, 20, "rpm", 100.0, 0.0, 100, 25500, 0
edismultirpm = scalar, U08, 21, "rpm", 100.0, 0.0, 100, 2500, 0
BoostDir = bits, U08, 92, [6:6], "Increase boost", "Decrease Boost"
inj1g = bits, U08, 33, [5:5], "off", "on*^"
inj2t = bits, U08, 33, [4:4], "1*^", "2 (DT)"
inj2g = bits, U08, 33, [6:6], "off", "on*^"
#if MPXH6300A
KPaTarg10 = scalar, U08, 29, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1.213675, 1.53, 100, 304.0, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1.213675, 1.53, 100, 304.0, 0
#elif MPXH6400A
KPaTarg10 = scalar, U08, 29, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KPaTarg10 = scalar, U08, 29, "KPa", 1, 0, 100, 255, 0
KPaTarg40 = scalar, U08, 30, "KPa", 1, 0, 100, 255, 0
KPaTarg60 = scalar, U08, 31, "KPa", 1, 0, 100, 255, 0
KPaTarg100 = scalar, U08, 32, "KPa", 1, 0, 100, 255, 0
#endif
TPSRPMTarg = bits, U08, 92, [7:7], "TPS", "RPM"
TargetB1 = scalar, U08, 25, "Raw Value", 1, 0, 0, 255, 0
TargetB2 = scalar, U08, 26, "Raw Value", 1, 0, 0, 255, 0
TargetB3 = scalar, U08, 27, "Raw Value", 1, 0, 0, 255, 0
TargetB4 = scalar, U08, 28, "Raw Value", 1, 0, 0, 255, 0
; Added for Enhanced stuff
; Target AFR 8 x 8 table
AfrTar = bits, U08, 46,[7:7], "Off*^(DT)", "On"
AfrTar2 = bits, U08, 92,[1:1], "Off*^(DT)", "On"
#if MPXH6300A
EgoLimKPa = scalar, U08, 39, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
EgoLimKPa = scalar, U08, 39, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
EgoLimKPa = scalar, U08, 39, "KPa", 1, 0, 0, 255, 0
#endif
EgoLim2 = scalar, U08, 40, "+-", 1, 0, 0, 100, 0
KpaTPSTar = bits, U08, 109,[4:4], "Speed Density", "Alpha-N"
TPSTar = bits, U08, 109,[5:5], "Always", "Above TPS Setpoint"
TPSAFRPoint = scalar, U08, 121, "Raw ADC", 1, 0, 0, 255, 0
; More Launch Stuff
LachTps = scalar, U08, 41, "Raw ADC", 1, 0, 0, 255, 0
LachDeg = scalar, U08, 42, "Deg", 0.352, -28.4, -10, 45, 0
LachRpm = scalar, U08, 43, "RPM", 100, 0, 0, 6000, 0
VLaunch = bits, U08, 46[1:1], "Off", "On"
LC_flatsel = scalar, U08, 124, "RPM", 100, 0, 0, 25500, 0
LC_flatlim = scalar, U08, 128, "RPM", 100, 0, 3000, 6000, 0
LC_f_slim = scalar, U08, 140, "RPM", 100, 0, 3000, 6000, 0
LC_f_limangle = scalar, U08, 141, "Deg", 0.352, -28.4, -10, 45, 0
; Over Boost Protection
#if MPXH6300A
OvrBKpa = scalar, U08, 44, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
OvrBKpa = scalar, U08, 44, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
OvrBKpa = scalar, U08, 44, "KPa", 1, 0, 100, 255, 0
#else
OvrBKpa = scalar, U08, 44, "PSI", 0.147, -100, -15, 23, 1
#endif
; Coolant / Iat Related Ignition
CltAdv = bits, U08, 46[2:2], "Off", "On"
#if CELSIUS
IgAdvDeg = scalar, U08, 48, "C", 0.555, 0, 0, 100, 1
IgAdvTemp = scalar, U08, 47, "C", 0.555, -72, -40, 70, 1
IgRetDeg = scalar, U08, 50, "C", 0.555, 0, 0, 102, 1
IgRetTemp = scalar, U08, 52, "C", 0.555, -72, -40, 102, 1
#else
IgAdvDeg = scalar, U08, 48, "F", 1, 0, 0, 120, 1
IgAdvTemp = scalar, U08, 47, "F", 1, -40, -10, 120, 1
IgRetDeg = scalar, U08, 50, "F", 1, 0, 0, 120, 1
IgRetTemp = scalar, U08, 52, "F", 1, -40, -10, 120, 1
#endif
MaxIatAdv = scalar, U08, 49, "Deg", 0.352,0 , 0, 15, 1
#if MPXH6300A
IatAdvKpa = scalar, U08, 51, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
IatAdvKpa = scalar, U08, 51, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
IatAdvKpa = scalar, U08, 51, "KPa", 1, 0, 0, 255, 0
#endif
; KNOCK DETECTOR SETTINGS
KnockOn = bits, U08, 46[6:6], "Off","On"
KnockRpm = scalar, U08, 53, "RPM", 100, 0, 0, 12000, 0
#if MPXH6300A
KnockKpa = scalar, U08, 55, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KnockKpa = scalar, U08, 55, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KnockKpa = scalar, U08, 55, "KPa", 1, 0, 0, 255, 0
#endif
KnockRpmL = scalar, U08, 54, "RPM", 100, 0, 0 , 12000, 0
KnockRet = scalar, U08, 56, "Deg", 0.352, 0, 0, 10, 0
KnockSb = scalar, U08, 57, "Deg", 0.352, 0, 0, 10, 0
KnockMax = scalar, U08, 59, "Deg", 0.352, 0, 1, 30, 0
KnockAdv = scalar, U08, 58, "Deg", 0.352, 0, 0, 20, 0
KnockTim = scalar, U08, 60, "Sec", 1, 0, 1, 10, 0
#if MPXH6300A
KnockBoost = scalar, U08, 107, "KPa", 1.213675, 1.53, 0, 304.0, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KnockBoost = scalar, U08, 107, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
KnockBoost = scalar, U08, 107, "KPa", 1, 0, 0, 155, 0
BoostMaxKn = scalar, U08, 108, "KPa", 1, 0, 0, 155, 0
#else
KnockBoost = scalar, U08, 107, "PSI", 0.147, 0, 0, 20, 0
BoostMaxKn = scalar, U08, 108, "PSI", 0.147, 0, 0, 20, 0
#endif
; WATER INJECTION SETTINGS
WaterInj = bits, U08, 46[3:3], "Off*", "On"
WaterIRpm = scalar, U08, 63, "RPM", 100, 0, 0, 12000, 0
#if MPXH6300A
StartWIKPa = scalar, U08, 62, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
StartWIKPa = scalar, U08, 62, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#elif KPa
StartWIKPa = scalar, U08, 62, "KPa", 1, 0, 0, 255, 0
#else
StartWIKPa = scalar, U08, 62, "PSI", 0.147, -100, 0, 20, 0
#endif
#if CELSIUS
WaterIIat = scalar, U08, 61, "°C", 0.555, -72, -40, 102, 1
#else
WaterIIat = scalar, U08, 61, "°F", 1, -40, -10, 120, 1
#endif
; OPEN LOOP MODE
OLoopEgo = bits, U08, 46[0:0], "TPS", "KPa"
#if MPXH6300A
KPaOn = scalar, U08, 64, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
KPaOn = scalar, U08, 64, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
KPaOn = scalar, U08, 64, "KPa", 1, 0, 0 , 255, 0
#endif
TpsOn = scalar, U08, 65, "Raw", 1, 0, 0, 255, 0
#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 Only", "Fuel & Spark"
HCutSpark = scalar, U08, 45, "Sparks", 1,0, 0, 20, 0
HCutLCType = bits, U08, 76[0:1], "INVALID", "Spark Cut Only", "Fuel Only", "Fuel & Spark"
HCutLCSpark = scalar, U08, 77, "Sparks", 1, 0, 0, 20, 0
SparkCutBase = scalar, U08, 78, "Sparks", 1, -1, 5, 20, 0 ; -1 to Value
OvrBCutType = bits, U08, 76[4:5], "INVALID", "Spark Cut Only", "Fuel Only", "Fuel & Spark"
SparkCutBNum = scalar, U08, 84, "Sparks", 1, 0, 0, 20, 0
; Output Inverters
InvOut1 = bits, U08, 66[1:1], "Normal", "Inverted"
InvOut2 = bits, U08, 66[2:2], "Normal", "Inverted"
Out1UpLim = scalar, U08, 88, "raw byte or deg F +40", 1, 0, 0, 255, 0
Out2UpLim = scalar, U08, 89, "raw byte or deg F +40", 1, 0, 0, 255, 0
; EDIS multi-spark
edismulti = bits, U08, 66[3:3], "Off*^", "On"
; Nitrous System
NosRpm = scalar, U08, 23, "RPM", 100, 0, 1000, 25000, 0
NosTps = scalar, U08, 67, "Raw", 1, 0, 0, 255, 0
#if CELSIUS
NosClt = scalar, U08, 22, "°C", 0.555, -72, -40, 102, 1
#else
NosClt = scalar, U08, 22, "°F", 1, -40, -10, 120, 1
#endif
NosAngle = scalar, U08, 68, "Deg", 0.352, 0, 0, 30, 0
NosPWLo = scalar, U08, 69, "mSec", 0.1, 0, 0, 25.5, 1
NosPWHi = scalar, U08, 70, "mSec", 0.1, 0, 0, 25.5, 1
nitrousUse = bits, U08, 11, [7:7], "Off*", "On"
NosRpmMax = scalar, U08, 24, "RPM", 100, 0, 3000, 25000, 0
DtNos = bits, U08, 66[5:5], "Bank1", "Bank2"
NosLagSystem = bits, U08, 76[6:6], "Off", "On"
#if MPXH6300A
NosLowKpa = scalar, U08, 85, "KPa", 1.213675, 1.53, 0, 304.0, 0
NosHiKpa = scalar, U08, 86, "KPa", 1.213675, 1.53, 0, 304.0, 0
#elif MPXH6400A
NosLowKpa = scalar, U08, 85, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
NosHiKpa = scalar, U08, 86, "KPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
NosLowKpa = scalar, U08, 85, "KPa", 1, 0, 0, 255
NosHiKpa = scalar, U08, 86, "KPa", 1, 0, 0, 255
#endif
; n2ostage2 = bits, U08, ??where??, "Off", "Stage2 on"
;nitrous/launch
N2Odel_launch = scalar, U08, 172, "s", 0.01, 0, 0, 2.55, 2
N2Odel_flat = scalar, U08, 173, "s", 0.01, 0, 0, 2.55, 2
N2Oholdon = scalar, U08, 174, "s", 0.01, 0, 0, 2.55, 2
;wheel decoder
numteeth = scalar, U08, 90, "", 1, 0, 0, 255
trig1 = scalar, U08, 25, "", 1, 0, 0, 255
trig2 = scalar, U08, 26, "", 1, 0, 0, 255
trig3 = scalar, U08, 27, "", 1, 0, 0, 255
trig4 = scalar, U08, 28, "", 1, 0, 0, 255
trig1ret = scalar, U08, 29, "", 1, 0, 0, 255
trig2ret = scalar, U08, 30, "", 1, 0, 0, 255
trig3ret = scalar, U08, 31, "", 1, 0, 0, 255
trig4ret = scalar, U08, 32, "", 1, 0, 0, 255
trig5 = scalar, U08, 160, "", 1, 0, 0, 255
trig6 = scalar, U08, 161, "", 1, 0, 0, 255
trig5ret = scalar, U08, 162, "", 1, 0, 0, 255
trig6ret = scalar, U08, 163, "", 1, 0, 0, 255
miss2nd = bits, U08, 66[0:0], "no missing", "missing teeth"
dualdizzy = bits, U08, 92, [4:4], "Normal", "Dual dizzy"
; OVER RUN FUEL CUT SETTINGS
OvrRunC = bits, U08, 66[6:6], "Off","On"
OvrRunRpm = scalar, U08, 71, "RPM", 100, 0, 1000, 6000, 0
#if CELSIUS
OvrRunClt = scalar, U08, 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"
AFMUse = bits, U08, 199, [5:5], "No AFM *^", "AFM on X7"
AirCorAFM = bits, U08, 199, [6:6], "Use IAT", "Built into AFM"
ConsBarCor = bits, U08, 199, [7:7], "Not Fitted*^", "Extra MAP fitted to X7"
; Spark Table Selection
STTable2On = bits, U08, 76[7:7], "Spark Table1^", "Spark Table2"
ST2Delay = scalar, U08, 87, "Sec", 0.1, 0, 0, 25, 1
; VE Table 3
UseVE3 = bits, U08, 92[0:0], "Dont switch*^(DT)" ,"Switch to Table3"
VE3Delay = scalar, U08, 93, "Sec", 0.1, 0, 0, 25, 1
; Traction Control
TractionOn = bits, U08, 92[5:5], "Off*^", "On"
RPMThresh = scalar, U08, 98, "RPM/Sec", 1000, 0, 1000, 25000, 0
RPM1S = scalar, U08, 94, "3000RPM/Sec or 5%Slip", 0.1, 0, 0, 20.0, 1
RPM2S = scalar, U08, 95, "4000RPM/Sec or 15%Slip", 0.1, 0, 0, 20.0, 1
RPM3S = scalar, U08, 96, "6000RPM/Sec or 30%Slip", 0.1, 0, 0, 20.0, 1
RPM4S = scalar, U08, 97, "10000RPM/Sec or 70%Slip ", 0.1, 0, 0, 20.0, 1
TractRet1 = scalar, U08, 99, "3000RPM/Sec or 5%Slip", 0.352, 0, 0, 30, 0
TractRet2 = scalar, U08, 100, "4000RPM/Sec or 15%Slip", 0.352, 0, 0, 30, 0
TractRet3 = scalar, U08, 101, "6000RPM/Sec or 30%Slip", 0.352, 0, 0, 30, 0
TractRet4 = scalar, U08, 102, "10000RPM/Sec or 70%Slip", 0.352, 0, 0, 30, 0
TractSC1 = scalar, U08, 103, "3000RPM/Sec or 5%Slip", 1, 0, 0, 2, 0
TractSC2 = scalar, U08, 104, "4000RPM/Sec or 15%Slip", 1, 0, 0, 2, 0
TractSC3 = scalar, U08, 105, "6000RPM/Sec or 30%Slip", 1, 0, 0, 2, 0
TractSC4 = scalar, U08, 106, "10000RPM/Sec or 70%Slip", 1, 0, 0, 2, 0
TractNOS = bits, U08, 109, [0:0], "No", "Yes"
TractCyc1 = scalar, U08, 112, "3000RPM/Sec or 5%Slip", 1, 0, 1, 255, 0
TractCyc2 = scalar, U08, 113, "4000RPM/Sec or 15%Slip", 1, 0, 1, 255, 0
TractCyc3 = scalar, U08, 114, "6000RPM/Sec or 30%Slip", 1, 0, 1, 255, 0
TractCyc4 = scalar, U08, 115, "10000RPM/Sec or 70%Slip", 1, 0, 1, 255, 0
TractCySec = bits, U08, 109,[2:2], "RPM stable for 0.1S", "Cycle count only"
TractScale = scalar, U08, 119, "%", 0.39216, 0, 0, 100, 0
TractSlip = scalar, U08, 120, "%", 0.39216, 0, 0, 100, 0
TractVSSMax = scalar, U08, 118, "V", 0.0196, 0, 0, 5, 2
TractVSSMin = scalar, U08, 117, "V", 0.0196, 0, 0, 5, 2
TractMode = bits, U08, 109, [3:3], "RPM Based", "Vehicle Speed Sensors"
TractSlipH = scalar, U08, 123, "%", 0.39216, 0, 0, 100, 0
;Advanced options for testing
hrd_disable = bits, U08, 92, [2:2], "Enabled*", "Disabled"
wheel_old = bits, U08, 92, [3:3], "025 style", "024s9 style"
;Dwell control
;running dwell variable railed to 8 - who needs more than 8ms?
;mindischarge railed to 1.5ms. ought to be max 1ms I guess? Normal value say 0.1ms
dwellcont = bits, U08, 109, [1:1], "Fixed duty*^", "Dwell control"
dwellcrank = scalar, U08, 110, "ms", 0.1, 0, 0, 25, 1
dwellrun = scalar, U08, 111, "ms", 0.1, 0, 0, 8, 1
mindischg = scalar, U08, 143, "ms", 0.1, 0, 0, 1.5, 1
idle_dc_lo = scalar, U08, 122, "Freq", 1, 0, 0, 255, 0
idle_dc_hi = scalar, U08, 149, "Freq", 1, 0, 0, 255, 0
idleperiod = scalar, U08, 144, "Ignition Events", 1, 0, 0, 255, 0
idlekickrpm = scalar, U08, 145, "RPM", 100, 0, 100, 6000, 0
idlekickdc = scalar, U08, 146, "Freq", 1, 0, 0, 255, 0
idledashdc = scalar, U08, 147, "Freq", 1, 0, 0, 255, 0
idlemindc = scalar, U08, 148, "Freq", 1, 0, 0, 255, 0
idlekpaval1 = scalar, U08, 150, "KPA", 1, 0, 0, 100, 0
idlekpaval2 = scalar, U08, 151, "KPA", 1, 0, 0, 100, 0
ikpamin1 = scalar, U08, 152, "Freq", 1, 0, 0, 255, 0
ikpamin2 = scalar, U08, 153, "Freq", 1, 0, 0, 255, 0
idlefreq = scalar, U08, 154, "10000/x = Frequency", 1, 0, 0, 255, 0
delay2rpm = scalar, U08, 155, "RPM", 100, 0, 100, 6000, 0
idlePeriod2 = scalar, U08, 156, "Ignition Events", 1, 0, 0, 255, 0
irestorerpm = scalar, U08, 157, "RPM", 100, 0, 100, 6000, 0
idleclosed = scalar, U08, 158, "Freq", 1, 0, 0, 255, 0
tachconf = bits, U08, 159[0:2], "OFF","X2 (JS0)","X3 (JS1)","X4 (JS2)","X5 (JS3)","Output3","Pin10","INVALID"
tachconfdiv = bits, U08, 159[7:7], "Normal", "Half speed"
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"
RPMBAsedAE = bits, U08, 199[4:4], "Normal AE*^", "RPM Based"
RPMAE1 = scalar, U08, 164, "RPM", 100, 0, 100, 25500, 0 ; RPM based AE stuff
RPMAE2 = scalar, U08, 165, "RPM", 100, 0, 100, 25500, 0
RPMAE3 = scalar, U08, 166, "RPM", 100, 0, 100, 25500, 0
RPMAE4 = scalar, U08, 167, "RPM", 100, 0, 100, 25500, 0
RPMmS1 = scalar, U08, 168, "mS", 0.1, 0, 0, 25.5, 1
RPMmS2 = scalar, U08, 169, "mS", 0.1, 0, 0, 25.5, 1
RPMmS3 = scalar, U08, 170, "mS", 0.1, 0, 0, 25.5, 1
RPMmS4 = scalar, U08, 171, "mS", 0.1, 0, 0, 25.5, 1
page = 5
advTable2 = array, U08, 0,[12x12], "deg", 0.352, -28.4, -10.0, 80.0, 0
rpmBins4 = array, U08, 144,[ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins4 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins4 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins4 = array, U08, 156, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#elif AIR_FLOW_METER
afmBins4 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins4 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; 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"
ExFuelCrank = bits, U08, 193, [6:6], "Off", "On"
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
ExtraFMult = scalar, U08, 197, "%", 1.0, 0.0, 0.0, 255, 0
page = 6
veBins3 = array, U08, 0, [12x12], "%", 1.0, 0.0, 0.0, 255.0, 0
rpmBins5 = array, U08, 144, [ 12], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins5 = array, U08, 156, [ 12], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins5 = array, U08, 156, [ 12], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins5 = array, U08, 156, [ 12], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#elif AIR_FLOW_METER
afmBins5 = array, U08, 156, [12], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins5 = array, U08, 156, [ 12], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
ASETable1 = scalar, U08, 168, "%", 1.0, 0.0, 0.0, 255, 0
ASETable2 = scalar, U08, 169, "%", 1.0, 0.0, 0.0, 255, 0
ASETable3 = scalar, U08, 170, "%", 1.0, 0.0, 0.0, 255, 0
ASETable4 = scalar, U08, 171, "%", 1.0, 0.0, 0.0, 255, 0
ASETable5 = scalar, U08, 172, "%", 1.0, 0.0, 0.0, 255, 0
ASETable6 = scalar, U08, 173, "%", 1.0, 0.0, 0.0, 255, 0
ASETable7 = scalar, U08, 174, "%", 1.0, 0.0, 0.0, 255, 0
ASETable8 = scalar, U08, 175, "%", 1.0, 0.0, 0.0, 255, 0
ASETable9 = scalar, U08, 176, "%", 1.0, 0.0, 0.0, 255, 0
ASETable10 = scalar, U08, 177, "%", 1.0, 0.0, 0.0, 255, 0
ASETime = scalar, U08, 178, "", 1.0, 0.0, 0.0, 255, 0
aseIgnCount = bits, U08, 179, [0:0], "Cycles*^", "Sec"
ASEFixDe = bits, U08, 179, [1:1], "Decay *^", "Fixed then Decay"
ASEFixTim = scalar, U08, 180, "", 1.0, 0.0, 0.0, 255, 0
IATCor = bits, U08, 179,[3:3], "Normal Correction*^", "Corrected"
IATCorTy = bits, U08, 179,[4:4], "Coolant Corrected", "IAT Corrected"
#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
; Coolant related correction table for air density
IATCor1 = scalar, U08, 183, "%", 1.0, 0.0, 0.0, 255, 0
IATCor2 = scalar, U08, 184, "%", 1.0, 0.0, 0.0, 255, 0
IATCor3 = scalar, U08, 185, "%", 1.0, 0.0, 0.0, 255, 0
IATCor4 = scalar, U08, 186, "%", 1.0, 0.0, 0.0, 255, 0
IATCor5 = scalar, U08, 187, "%", 1.0, 0.0, 0.0, 255, 0
IATCor6 = scalar, U08, 188, "%", 1.0, 0.0, 0.0, 255, 0
IATCor7 = scalar, U08, 189, "%", 1.0, 0.0, 0.0, 255, 0
RPMRedHi = scalar, U08, 190, "RPM", 100, 0.0, 0.0, 25500, 0
RPMRedLo = scalar, U08, 191, "RPM", 100, 0.0, 0.0, 25500, 0
#if CELSIUS
IATCTemp1 = scalar, U08, 192, "C", 0.555, -72, -40, 102, 1
IATCTemp2 = scalar, U08, 193, "C", 0.555, -72, -40, 102, 1
IATCTemp3 = scalar, U08, 194, "C", 0.555, -72, -40, 102, 1
IATCTemp4 = scalar, U08, 195, "C", 0.555, -72, -40, 102, 1
IATCTemp5 = scalar, U08, 196, "C", 0.555, -72, -40, 102, 1
IATCTemp6 = scalar, U08, 197, "C", 0.555, -72, -40, 102, 1
IATCTemp7 = scalar, U08, 198, "C", 0.555, -72, -40, 102, 1
#else
IATCTemp1 = scalar, U08, 192, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp2 = scalar, U08, 193, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp3 = scalar, U08, 194, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp4 = scalar, U08, 195, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp5 = scalar, U08, 196, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp6 = scalar, U08, 197, "F", 1.0, -40.0, -40.0, 215, 1
IATCTemp7 = scalar, U08, 198, "F", 1.0, -40.0, -40.0, 215, 1
#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 DYNOJET_LINEAR
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0314, 0, 0.0, 5.0, 2
#elif TECHEDGE_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1
#elif INNOVATE_1_2_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1
#elif INNOVATE_0_5_LINEAR
afrBins1 = array, U08, 0, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1
#elif ZEITRONIX_NON_LINEAR
afrBins1 = array, U08, 0, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#else
; Should never get here but just incase put message on screen
#error "No O2 sensor configuration selected; Youll need to fix the settings.ini.\n\nMegaTune terminating."
#exit ; Terminate MT
#endif
rpmBins6 = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
#if SPEED_DENSITY
#if MPXH6300A
mapBins6 = array, U08, 72, [ 8], "kPa", 1.213675, 1.53, 20.0, 304.0, 0
#elif MPXH6400A
mapBins6 = array, U08, 72, [ 8], "kPa", 1.6197783, 2.147, 20.0, 400.0, 0
#else
mapBins6 = array, U08, 72, [ 8], "kPa", 1.0, 0.0, 0.0, 255.0, 0
#endif
#elif AIR_FLOW_METER
afmBins6 = array, U08, 72, [8], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins6 = array, U08, 72, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
; TARGET AFR table 2 BINS FOR VE 3 (First find which sensor used)
#if NARROW_BAND_EGO
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif WB_1_0_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif WB_UNKNOWN
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DIYWB_NON_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0196, 0, 0.0, 5.0, 2
#elif DYNOJET_LINEAR
afrBins2 = array, U08, 80, [8x8], "Volts", 0.0314, 0, 0.0, 5.0, 2
#elif TECHEDGE_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 229.0, 9.0, 19.0, 1
#elif INNOVATE_1_2_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.1961, 0, 10.0, 20.0, 1
#elif INNOVATE_0_5_LINEAR
afrBins2 = array, U08, 80, [8x8], "AFR", 0.0392, 255.0, 10.0, 20.0, 1
#elif 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
#elif AIR_FLOW_METER
afmBins7 = array, U08, 152, [8], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
tpsBins7 = array, U08, 152, [ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
#endif
;nitrous stage 2
; Nitrous System
Nos2Rpm = scalar, U08, 160, "RPM", 100, 0, 1000, 25000, 0
Nos2RpmMax= scalar, U08, 161, "RPM", 100, 0, 3000, 25000, 0
Nos2delay = scalar, U08, 162, "s", 0.01, 0, 0, 2.55,2
Nos2Angle = scalar, U08, 163, "Deg", 0.352, 0, 0, 30, 0
Nos2PWLo = scalar, U08, 164, "mSec", 0.1, 0, 0, 25.5, 1
Nos2PWHi = scalar, U08, 165, "mSec", 0.1, 0, 0, 25.5, 1
;oddfire wheel decoder
;outaoffs = bits, U08, 166, [0:2], "0", "+22.5", "+45", "+67.5", "+90", "+112.5", "+135", "+157.5"
outaoffs = bits, U08, 166, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outaoffv = scalar, U08, 167, "deg", 0.352, 0, 0, 45, 1
outboffs = bits, U08, 168, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outboffv = scalar, U08, 169, "deg", 0.352, 0, 0, 45, 1
outcoffs = bits, U08, 170, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outcoffv = scalar, U08, 171, "deg", 0.352, 0, 0, 45, 1
outdoffs = bits, U08, 172, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outdoffv = scalar, U08, 173, "deg", 0.352, 0, 0, 45, 1
outeoffs = bits, U08, 174, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outeoffv = scalar, U08, 175, "deg", 0.352, 0, 0, 45, 1
outfoffs = bits, U08, 176, [0:2], "0", "INVALID", "+45", "INVALID", "+90", "INVALID", "INVALID", "INVALID"
outfoffv = scalar, U08, 177, "deg", 0.352, 0, 0, 45, 1
page = 8 ; boost controller targets+ 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
#elif AIR_FLOW_METER
splitafmBins = array, U08, 186, [6], "AFM Volts", 0.01961, 0.0, 0.0, 5.0, 2
#elif ALPHA_N
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 = CrankExtra, "(NEW)More Cranking Stuff", 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 = "&Fuel Basics"
subMenu = fuelTable, "&Fuel table selection"
subMenu = LambdaSet, "&Lambda AFR Settings"
subMenu = OpenLoop, "&Open Loop Mode"
subMenu = OvrRun, "Over &Run Settings"
subMenu = clt_IATCorr, "(NEW) Coolant related Air Density"
subMenu = AccelDecc, "&Accel Deccl Mode"
subMenu = MoreAccel, "(NEW) RPM &Based Accel"
subMenu = std_accel, "&Acceleration Wizard", 4
menu = "&General"
subMenu = OvrBoo, "Over &Boost Protection"
subMenu = HardLim, "&Hard Cut/Limiter Type"
subMenu = RevLimiterS, "Re&v Limiter", 4
subMenu = LaunchSettings, "Launch &Control"
subMenu = traction, "Anti-Rev System (&Traction Control)"
subMenu = traction2, "Anti-Rev System cont...", 0, {TractionOn}
subMenu = idleControl, "&Idle Control", 0, { !fidleUse }
subMenu = idleControl2, "Idle Control (Closed Loop Settings)", 0, { pwmIdle & (pwmidlewhen >1) }
subMenu = boostControl, "&Boost Control", 0, { boostUse }
subMenu = boostTbl1, "Boost kpa targets table1", 8, { boostUse }
subMenu = boostTbl3, "Boost kpa targets table2", 8, { boostUse && BooTbl2Use}
subMenu = boostTbl2, "Boost duty targets", 8, { boostUse }
subMenu = boostIAT, "IAT Related Boost", 0, { boostUse }
subMenu = tachoutput, "Tacho output pin", 0
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 = rotarySplitType, "Rotary trailing output type", 0, { rotary2}
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 = oddwheel, "Oddfire Wheel settings", 7, { wheelon && oddfire }
subMenu = MapSettings, "MA&P Sensor Settings"
subMenu = BarroCor, "NEW &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 = NosSystem2, "&Nitrous Stage 2", 0, { nitrousUse && n2ostage2 }
subMenu = NosSystem2, "&Nitrous Stage 2", 0, { 0 }
subMenu = Staged, "&Staged Injection"
; the following menu gives access to some spare bytes of flash
;uncomment to use it
; subMenu = demo, "Example Demo"
menu = "&Tuning"
subMenu = std_realtime, "&Realtime Display"
subMenu = std_separator
subMenu = veTable1Map, "VE Table &1"
subMenu = veTable2Map, "VE Table &2", 0, { inj2t }
subMenu = veTable3Map, "VE Table &3" 0, { UseVE3 }
subMenu = sparkMap, "Spar&k Table1", 0, { ignmode }
subMenu = sparkMap2, "Spark &Table2", 0, { STTable2On }
subMenu = splitMap, "Rotary Split", 0, { rotary2 }
subMenu = boostMap1, "Boost 1", 8, { boostUse }
subMenu = boostMap3, "Boost 2", 8, { boostUse && BooTbl2Use}
subMenu = boostMap2, "Boost duty targets", 8, { boostUse }
menu = "Help"
subMenu = std_separator
subMenu = Fhelp1, "&General Help"
subMenu = Fhelp2, "&Fuel Table Selection"
subMenu = Fhelp3, "&Lambda Settings"
subMenu = Fhelp4, "&Hard Cut Limiter Type"
subMenu = Fhelp5, "&Launch Control"
subMenu = Fhelp6, "Accel Decel &Mode"
subMenu = Fhelp7, "Rev Limiter"
subMenu = Ihelp1, "Idle Control"
subMenu = Ihelp2, "Idle Control (Closed Loop Settings)"
subMenu = Shelp3, "&Spark Settings"
subMenu = Shelp4, "Spar&k Table Selection"
subMenu = 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 = "Choose one code type"
field = "Distributor (MSnS)", msnsCyl
field = "Neon/420A decoder", neonCrank
field = "Wheel decoder (e.g. 36-1)", wheelon
field = "EDIS", edis
field = "EDIS multispark", edismulti, { edis }
field = "TFI ignition", tfi
field = "HEI Ignition", hei7
field = "Choose input/output pins to use"
field = "FIDLE function", fidleUse
field = "LED17(D14) function", led17Use
field = "LED18(D15) function", led18Use
field = "LED19(D16) function", led19Use
field = "Multiplex ignition?", toy_dli
field = "X2 (JS0) function", x2use
field = "X4 (JS2) function", boostUse
field = "output3/Spark D", out3sparkd
field = "pin10 shift / Spark E", spkeop
field = "knock in / Spark F", spkfop
dialog = wheeldecoder, "Power cycle after changes", 4
topicHelp = Fhelp1
field = "F1 for HELP"
field = ""
field = "Wheel decoder base teeth", numteeth
field = "2nd trigger enable", wd_2trig
field = "2nd trigger and missing teeth", miss2nd, { wd_2trig }
field = "Missing teeth", onetwo, { !wd_2trig || ( wd_2trig && miss2nd) }
field = "Trig pos A", trig1
field = "Trig return pos A", trig1ret
field = "Trig pos B", trig2
field = "Trig return pos B", trig2ret
field = "Trig pos C", trig3
field = "Trig return pos C", trig3ret
field = "Trig pos D", trig4
field = "Trig return pos D", trig4ret
field = "Trig pos E", trig5
field = "Trig return pos F", trig5ret
field = "Trig pos F", trig6
field = "Trig return pos F", trig5ret
field = "Dual dizzy EXPERIMENTAL", dualdizzy
dialog = oddwheel, "Oddfire wheel offsets", 7
field = "HIGHLY EXPERIMENTAL"
field = ""
field = "Output A offset steps", outaoffs, { trig1 }
field = "plus value", outaoffv, { trig1 }
field = "Output B offset steps", outboffs, { trig2 }
field = "plus value", outboffv, { trig2 }
field = "Output C offset steps", outcoffs, { trig3 }
field = "plus value", outcoffv, { trig3 }
field = "Output D offset steps", outdoffs, { trig4 }
field = "plus value", outdoffv, { trig4 }
field = "Output E offset steps", outeoffs, { trig5 }
field = "plus value", outeoffv, { trig5 }
field = "Output F offset steps", outfoffs, { trig6 }
field = "plus value", outfoffv, { trig6 }
dialog = advanced, "Power cycle after changes",4
topicHelp = Chelp2
field = "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 = "Unless your using a MAF,"
field = "ENSURE MAF SET TO NO !!"
field = "Mass Air Flow Meter MAF: (X7)", AFMUse
field = "Air Density Correction:", AirCorAFM , {AFMUse}
field = ""
field = "EDIS multispark", edismulti, { edis }
field = "EDIS multispark rpm limit", edismultirpm, { edis && edismulti }
field = ""
field = "Enable hi-res dwell", hrd_disable
field = "Wheel decoder routine", wheel_old
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 = "28% for GM 3-BAR and 6300A series sensor"
field = "78% for 6400A series sensor"
field = "Baro Correction Factor", KPA300BARO, {mapSensor1 && KPA300Sens}
field = "KPa Correction factor needs to be:"
field = "28% for GM 3-BAR and 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 / JS2) source", out1src, { !boostUse }
field = "On-Off Limit", out1lim, { !boostUse }
field = "Off Hysterisis", out1Hysis, { !boostUse }
field = "Upper Limit", Out1UpLim, { !boostUse }
field = "Output1 Invert for Temps", InvOut1, { !boostUse }
field = ""
field = "OUTPUT 2 (X5 / JS3) source", out2src
field = "On-Off Limit", out2lim
field = "Off Hysterisis", out2Hysis
field = "Upper Limit", Out2UpLim
field = "Output2 Invert for Temps" InvOut2
dialog = outputs2,"More Outputs",4
topicHelp = Fhelp1
field = "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, { !spkfop }
field = "Shift light Lower Threshold", ShiftLower, { shiftUse }
field = "Shift Light Upper Threshold", ShiftUpper, { shiftUse && (!wd_2trig) }
field = "Fan control (X2 / JS0 or LED18)"
field = "Fan on temperature", efanontemp, { x2use + out4FAN }
field = "Fan off temperature", efanofftemp, { x2use + out4FAN }
dialog = sparkSettings,"Spark Settings",3
topicHelp = Shelp3
field = "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, { !oddfire }
field = "Note: If req Trigger above 90"
field = "then select +22.5 Deg"
field = "if above 112.5 select +45"
field = ""
field = "Cranking Timing", TrigCrank, { !edis }
field = "Cranking advance Angle", CrankAng, { TrigCrank + edis }
field = "Hold Ignition", IgHold
field = "Spark Output Inverted", IgInv
field = "EXPERIMENTAL Oddfire support", oddfire
field = ""
field = "Fixed Angle (-10 = use map)", FixAng
field = "Trim Angle", Trim
field = "Idle advance (-10 = use map)", IdleAdv
field = "Idle advance TPS threshold", IdleAdvTPS
field = "Idle advance RPM threshold", IdleAdvRPM
dialog = rotarySplitType, "Rotary Trailing Output Type",4
field = "trailing output type", rotaryFDign, { rotary2 }
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 = ">20 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 = tachoutput,"Tacho output pin",4
; topicHelp = Fhelp1
field = "MAKE SURE THIS PIN IS NOT ALREADY IN USE"
field = ""
field = "Tacho output pin", tachconf
field = "Normal or half speed", tachconfdiv
dialog = idleControl, "PWM 2-Wire Idle Control", 4
topicHelp = Ihelp1
field = "Algorithm", pwmIdle
field = "When to use PWM idle", pwmidlewhen, { pwmIdle }
field = "Warmup Settings"
field = "Idle frequency at lower temp", idle_dc_lo, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) }
field = "Idle frequency at upper temp", idle_dc_hi, { pwmIdle & (pwmidlewhen !=0) & (pwmidlewhen != 2) }
field = "Closed Loop Primary Settings"
field = "*Fast Idle (lower) Temp", fastIdleTemp, { pwmIdle }
field = "*Slow Idle (upper) Temp", slowIdleTemp, { pwmIdle }
field = "Fast Idle", fastIdleRPM, { pwmIdle & (pwmidlewhen >1) }
field = "Slow Idle", slowIdleRPM, { pwmIdle & (pwmidlewhen >1) }
field = "* Denotes item also used for warmup"
field = "Idle Valve Frequency*", idlefreq, { pwmIdle }
field = "Throttle Threshold", idleThresh, { pwmIdle & (pwmidlewhen >1) }
field = "IdleDC above Threshold", idleclosed, { pwmIdle & (pwmidlewhen >1) }
field = "Idle Restore", irestorerpm, { pwmIdle & (pwmidlewhen >1) }
field = "Frequency at Idle Restore", idledashdc, { pwmIdle & (pwmidlewhen >1) }
field = "Idle kick up", idlekickrpm, { pwmIdle & (pwmidlewhen >1) }
field = "Idle Kick up frequency", idlekickdc, { pwmIdle & (pwmidlewhen >1) }
field = "Please see 'Idle Control (Closed Loop Settings)' "
dialog = idleControl2, "Idle Control Continued", 4
topicHelp = Ihelp2
field = "Duty Cycle Limitations"
field = " -- KPA min 1 > KPA min 2 > Minimum for proper function"
field = "KPA Corrected Minimum 1", ikpamin1, { pwmIdle & (pwmidlewhen >1) }
field = "KPA Corrected Minimum 2", ikpamin2, { pwmIdle & (pwmidlewhen >1) }
field = "Minimum frequency", idlemindc, { pwmIdle & (pwmidlewhen >1) }
field = "No Correction when KPA = 100, "
field = " -- KPA 1 > KPA 2 for proper function"
field = "KPA Correction Threshold 1", idlekpaval1, { pwmIdle & (pwmidlewhen >1) }
field = "KPA Correction Threshold 2", idlekpaval2, { pwmIdle & (pwmidlewhen >1) }
field = "Idle Timing"
field = ""
field = "Primary Idle Period", idleperiod, { pwmIdle & (pwmidlewhen >1) }
field = "Secondary Idle Period", idlePeriod2, { pwmIdle & (pwmidlewhen >1) }
field = "Secondary Period Active Above", delay2rpm, { pwmIdle & (pwmidlewhen >1) }
; field = "Idle is most stable when"
; field = "Sitting on a DC limit"
; field = "KPA limit 1 must be greater than"
; field = "KPA limit 2. When limit set to 100"
; field = "No correction occurs"
; field = "Manifold pressure is an indication"
; field = "Of engine load, these settings allow"
; field = "load compensation by raising the"
; field = "duty cycle above 'kpa' set points"
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>0)}
field = "Retard to : ", LachDeg, {launchUse && (ignmode>0)}
field = "Enable Launch when TPS above ", LachTps, {launchUse}
field = "Launch Control Hard Rev Limit", LaunchLim, {launchUse}
field = "Variable Launch", VLaunch, {launchUse}
field = "Flat shift arming rpm", LC_flatsel, {launchUse}
field = "Flat shift mode retard above", LC_f_slim, {launchUse && (ignmode>0)}
field = "Retard to : ", LC_f_limangle, {launchUse && (ignmode>0)}
field = "Flat shift hard rev limit", LC_flatlim, {launchUse}
dialog = LambdaSet, "Lambda Sensor Targets", 4
topicHelp = Fhelp3
field = "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 N2O on when above", NosRpm, {nitrousUse}
field = "And Coolant Temp above", NosClt, {nitrousUse}
field = "And TPS >", NosTps, {nitrousUse}
; field = ""
field = "Additional Fuel PW @ N2O min rpm", NosPWLo, {nitrousUse}
field = "NOS Max RPM", NosRpmMax, {nitrousUse}
field = "Additional Fuel PW @ N2O Max RPM", NosPWHi, {nitrousUse}
; field = ""
field = "If ST2 off Retard Ignition by" NosAngle, {nitrousUse}
; field = ""
field = "If Dual Table enrich ", DtNos, {nitrousUse}
field = "Nitrous delay after launch", N2Odel_launch, {nitrousUse && launchUse}
field = "Nitrous delay after flat shift", N2Odel_flat, {nitrousUse && launchUse}
;not yet implemented field = "Nitrous fuel hold on", N2Oholdon, {nitrousUse}
field = ""
field = "Turbo Anti-Lag System: (see help)", NosLagSystem, {nitrousUse}
field = "Fire N2O when conditions above met"
field = "and MAP above", NosLowKpa, {nitrousUse && NosLagSystem}
field = "and MAP below", NosHiKpa, {nitrousUse && NosLagSystem}
field = ""
; field = "Enable 2nd stage", n2ostage2, { nitrousUse }
dialog = NosSystem2, "Nitrous System stage 2", 7
; topicHelp = Chelp5
field = "Enable stage 2 above", Nos2Rpm
field = "NOS Max RPM", Nos2RpmMax
field = "delay after stage1", Nos2delay
field = "Retard Ignition by", Nos2Angle
field = "Additional Fuel PW @ N2O min rpm", Nos2PWLo
field = "Additional Fuel PW @ N2O Max RPM", Nos2PWHi
dialog = Staged, "Staged Injection", 4
topicHelp = Chelp6
field = "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 = ""
dialog = MoreAccel, "RPM Based Accel", 4
topicHelp = Fhelp6a
field = "F1 for Help"
field = "RPM BAsed Accel is triggered as usual via MAP or TPS"
field = "but it is NOT based on a rate of change of MAP "
field = "or TPS. The fuel added is based on the engine's RPM."
field = "RPM Based Accel Enrichment:", RPMBAsedAE
field = ""
field = "Engine Speed high", RPMAE1, {RPMBAsedAE}
field = "Engine Speed mid - high", RPMAE2, {RPMBAsedAE}
field = "Engine Speed low - mid", RPMAE3, {RPMBAsedAE}
field = "Engine Speed low", RPMAE4, {RPMBAsedAE}
field = ""
field = "Enrichment for high speed:", RPMmS4, {RPMBAsedAE}
field = "Enrichment for mid - high speed:", RPMmS3, {RPMBAsedAE}
field = "Enrichment for low - mid speed:", RPMmS2, {RPMBAsedAE}
field = "Enrichment for low speed:", RPMmS1, {RPMBAsedAE}
field = ""
field = "MAP Threshold:" , mapThresh4, {RPMBAsedAE}
field = "TPS Threshold:" , tpsThresh4, {RPMBAsedAE}
field = "Accel Time:", taeTime4, {RPMBAsedAE}
dialog = BarroCor, "Barometric Correction", 4
topicHelp = Chelp3
field = "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
field = ""
field = "Constant Baro corr in Alpha_n:", AlphBaroCor, {algorithm1}
field = ""
field = "This is ONLY for use with a second "
field = "MAP sensor connected to X7"
field = "Constant Baro Correction:", ConsBarCor
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 = CrankExtra, "More Cranking Stuff",5
topicHelp = Chelp9a
field = "F1 for Help"
field = "Cranking RPM", CrankRPM
field = "TPS value for flood clear", tpsflood
field = ""
field = "Extra fuel for cranking:"
field = "Use First Start Enrichment:", ExFuelCrank
field = "Extra Cranking Fuel Enrichment: ", ExtraFMult, {ExFuelCrank}
field = "If normal cranking PW = 10.0mS and "
field = "Enrichment = 50% then PW = 15.0mS"
dialog = CrankTble, "Cranking / Prime Table", 5
topicHelp = Chelp9
field = "F1 for HELP"
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 = "Use Fixed ASE/MAP when coolant below:", ASEFixTemp, {ASEFixDe + VEFixASE}
field = "Fixed ASE/MAP Time Period", ASEFixTim, {ASEFixDe + VEFixASE}
field = "Fixed MAP Value", VEFixValue, {VEFixASE}
#if CELSIUS
field = "After Start Enrichment Table"
field = " -40 C ", ASETable1
field = " -29 C ", ASETable2
field = " -18 C ", ASETable3
field = " -7 C ", ASETable4
field = " 4 C ", ASETable5
field = " 16 C ", ASETable6
field = " 27 C ", ASETable7
field = " 38 C ", ASETable8
field = " 54 C ", ASETable9
field = " 71 C ", ASETable10
#else
field = "After Start Enrichment Table"
field = " -40 F ", ASETable1
field = " -20 F ", ASETable2
field = " 0 F ", ASETable3
field = " 20 F ", ASETable4
field = " 40 F ", ASETable5
field = " 60 F ", ASETable6
field = " 80 F ", ASETable7
field = " 100 F ", ASETable8
field = " 130 F ", ASETable9
field = " 160 F ", ASETable10
#endif
dialog = clt_IATCorr, "Coolant corrected Air Density", 6
topicHelp = airdenHelp
field = "PLEASE SEE HELP FILE F1"
field = "Air Density Correction:" , IATCor
field = "Correction based on:", IATCorTy, {IATCor}
field = "User defined temperature 1 ", IATCTemp1, {IATCor}
field = "User defined temperature 2 ", IATCTemp2, {IATCor}
field = "User defined temperature 3 ", IATCTemp3, {IATCor}
field = "User defined temperature 4 ", IATCTemp4, {IATCor}
field = "User defined temperature 5 ", IATCTemp5, {IATCor}
field = "User defined temperature 6 ", IATCTemp6, {IATCor}
field = "User defined temperature 7 ", IATCTemp7, {IATCor}
field = "Correction for Temp 1 ", IATCor1, {IATCor}
field = "Correction for Temp 2 ", IATCor2, {IATCor}
field = "Correction for Temp 3 ", IATCor3, {IATCor}
field = "Correction for Temp 4 ", IATCor4, {IATCor}
field = "Correction for Temp 5 ", IATCor5, {IATCor}
field = "Correction for Temp 6 ", IATCor6, {IATCor}
field = "Correction for Temp 7 ", IATCor7, {IATCor}
field = "Set both to 25500 for no reduction!"
field = "Start to reduce correction at:", RPMRedLo, {IATCor}
field = "End correction at:", RPMRedHi, {IATCor}
dialog = demo, "Demo menu", 3
field = "spare 3 177", spare3_177
field = "spare 3 178", spare3_178
field = "spare 3 179", spare3_179
field = "spare 3 180", spare3_180
field = "spare 3 181", spare3_181
field = "spare 3 182", spare3_182
field = "spare 3 183", spare3_183
field = "spare 3 184", spare3_184
;*************************** HELP STUFF ***************************************
help = Fhelp1, "General Help"
webHelp = "http://megasquirt.sourceforge.net/extra/"
text = "For MS (fuel only) select *.
"
text = "For MSnS select ^
"
text = "
"
text = "For more help or problems please see the Extra Website by clicking the Web Help button.
"
text = "
"
text = "If you can't find an answer there post a thread on http://www.msefi.com
"
text = "or contact"
text = " james@nscc.info
"
text = "or contact"
text = " philip.ringwood@ntlworld.com"
help = Fhelp2, "Fuel Table Selection"
webHelp = "http://megasquirt.sourceforge.net/extra/tableswitch.html"
text = "INJECTOR CH1 (PW1)"
text = "This will always use VE Table1
"
text = "GammaE On or OFF = :"
text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
"
text = "
"
text = "INJECTOR CH2 (PW2)"
text = "Either use VE Table 1 or 2, 1=Normal 2=DT
"
text = "GammaE On or Off = :"
text = "Accel Enrich, WarmUpEnrich + AirTemp Corr
"
text = "Pulse Inj CH2 during cranking"
text = "Do you want CH2 to add fuel whilst cranking
"
text = "
"
text = "The VE Table 1 can be switched to"
text = "VE Table 3 on the run for use with Spark Table2"
text = "or on its own if ST2 not selected in"
text = "Spark Table Selection
"
text = "VE3 will replace VE1 when NOS running or Pin6 JP1 low.
"
text = "This can be used in any mode, but in DT "
text = "it will obviously only change PW1."
text = "If not in DT it will change both PW's.
"
help = Fhelp3,"Lambda Settings"
webHelp = "http://megasquirt.sourceforge.net/extra/dualego.htm"
text = "You can now change the Ego Limit"
text = "depending on the MAP KPa. If you don't"
text = "want it to change simply put 255 in the"
text = "KPa setpoint.
"
text = "
"
text = "There are also 2 AFR target tables.
"
text = "Table 1 contains the target AFR's for"
text = "VE Table 1.
"
text = "Table 2 contains the target AFR's for"
text = "VE Table 3.
"
text = "NOTE: These are just targets, they dont"
text = "replace your VE table and should be"
text = "thought of as a fine tune for the VE table.
"
text = "If you dont want to use them simply"
text = "select them off. The target will then "
text = "be as set in the enrichments page.
"
text = "
"
text = "We have added the facility to run from the target tables when above a certain TPS setpoint.
"
text = "If you want to use this set Use Targets to Above TPS and set the TPS setpoint.
"
text = "
"
help = Fhelp4,"Hard Cut Limiter Type"
text = "If using any spark mode other than Edis then you have the"
text = "option to cut spark and or fuel in "
text = "the rev limiting modes.
"
text = "The Base Number is the number of sparks"
text = "that can be cut from (yy). This value will"
text = "depend on number of cylinders.
"
text = "Then select how many sparks to cut"
text = "in each mode(xx).
"
text = "So you will get xx cuts in every yy sparks.
"
help = Fhelp5, "Launch Control"
webHelp = "http://megasquirt.sourceforge.net/extra/launch.htm"
text = "Active low input TOMI Header JP1 Pin4
"
text = "Typically this is wired to a thumb switch or clutch/brake pedal switch"
text = "This holds the RPM by first activating a ignition retard
"
text = "then a hard cut to help you get a good Launch
"
text = "
"
text = "Variable Launch, when selected,"
text = "stores the current engine RPM"
text = "as soon as the input is switched low"
text = "and uses that as its Hard Cut RPM.
"
text = "This is for use with a thumb switch"
text = "so launch rpm can be altered at the"
text = "track.
"
text = "
"
text = "The flat shift settings are for use with a clutch switch and allow"
text = "for different limits when changing gear. To disable, set the arming"
text = "RPM above you maximum rpm"
text = "If you press the clutch above the flat shift arming limit then the code"
text = "uses the flat shift limits, else it uses the launch limits"
help = Fhelp6, "Accel Decel Mode"
webHelp = "http://megasquirt.sourceforge.net/extra/mapdot.html"
text = "Select between TPSdot / MAPdot accel/decel enrichment
"
text = "
"
text = "The Accel Timer can be changed from Seconds to Engine Cycle counts.
"
text = "
"
text = "Normal MS mode finds the increase in PW and holds that till the Accel Timer has timed out.
"
text = "By selecting Decay it will find the increase to add then it will linearly decrease the Enrichment,
"
text = "to the Decay Value by the time the Accel Timer has timed out.
"
text = "
"
text = "If in MAP mode then you turn off"
text = "the accel/decel enrichment when"
text = "the engine goes into boost.
"
text = "
"
text = "You can also turn just the Decel off in either mode when in Boost to prevent a lean condition in boost
"
text = "
"
text = "Please see the Accel Wizard in the Tuning Section"
help = Fhelp6a, "RPM Based Accel"
webHelp =""
text = "THIS OPTION IS USED FOR A VERY SPECIALISED INSTALL!! 99.9% of installs will not need this option.
"
text = "This is triggered via a rate of change of TPS or MAP as the usual Accel Stuff, BUT the enrichment is based on how fast the engine is running.
"
text = "The MAP and TPS based Accel erichment bins in the Accel Wizard will be ignored in this mode. The Trigger values will still be current."
text = "This is often required with high strung small displacement MOTORS and race motors"
help = Ihelp1, "Idle Control"
webHelp = "http://megasquirt.sourceforge.net/extra/pwmidle.html"
text = "Idle control can be used in B&G on/off, Warm up, or Closed-Loop Modes.
"
text = "
"
text = "--B&G on/off simply opens or closes a valve to provide additional air below a temperature threshold
"
text = "
"
text = "--Warm up mode linearly varies the duty cycle of a 2 wire solenoid actuated valve to provide"
text = "additional air during cold startup, while gradually scaling down the duty cycle until the engine is warm.
"
text = "
"
text = "--Closed-loop mode attempts to keep the engine idling at a set rpm by using PWM with a 2 wire"
text = "solenoid actuated valve, and actively varying the duty cycle to maintain rpm.
"
text = "
"
text = "
"
text = "Warmup Settings:
"
text = "--Lower temp idle frequency is the higher duty cycle required to start and run a cold engine.
"
text = "--Upper temp idle frequency is the duty cycle the idle valve will be scaled down to as the engine warms up.
"
text = "
"
text = "--Idle valve frequency
"
text = "
"
text = "This is generally something most people will not need to mess with, however, different idle valves are designed to work"
text = "best at specific operational frequencies.
"
text = "
"
text = "Please Note: DUTY CYCLE = Lower or Upper frequency / Idle Valve Frequency
"
text = "
"
text = "These two values are linearly interpolated from one to the other starting from the lower engine temp"
text = "to the higher engine temp (fast idle temp, and slow idle temp.)"
text = "
"
text = "
"
text = "Closed Loop Settings:
"
text = "
"
text = "This is fairly experimental code, but with careful manipulation of variables it should be possible to"
text = "produce a stable idle.
"
text = "
"
text = "--Fast Idle RPM is the idle target for the engine at, or below the fast idle temperature.
"
text = "--Slow Idle RPM is the idle target for the engine at, or above the slow idle temperature.
"
text = "
"
text = "The two RPM set points are linearly interpolated between the two temperatures to provide a smooth"
text = "transition during warmup
"
text = "
"
text = "--Throttle Threshold is the point above which the idlevalve closes (as it is no longer needed).
"
text = "--Idle Restore RPM is the rpm point at which the idle valve returns to operation after the throttle"
text = "has been opened and closed again.
"
text = "--Frequency at Idle Restore is the amount the valve will open when you return to idle after letting"
text = "go of the throttle. (This will likely need to be a few points above the highest minimum frequency.
"
text = "
"
text = "--Idle kick up rpm is the point at which the idle control will make a last ditch effort to restore"
text = "idle. If for some reason the engine is suddenly loaded and drops below this rpm the idle control"
text = "will open the valve radically in order to keep the engine from stalling.
"
text = "--Idle kick up frequency is the amount the valve is opened when the engine falls below the kick up"
text = "rpm
"
text = "
"
text = "See next help section 'Idle Control (Closed Loop Settings)' for more information.
"
help = Ihelp2, "Idle Control (Closed Loop Settings)"
webHelp = "http://megasquirt.sourceforge.net/extra/pwmidle.html"
text = "Closed Loop Settings
"
text = "
"
text = "
"
text = "Duty Cycle Limitations
"
text = "
"
text = "Idle control seems most stable when the code is allowed to 'rest' on minimum idle frequency limits.
"
text = "
"
text = "Since idle air demands are greater when the engine is loaded at idle there had to be some sort of"
text = "load compensation. Turns out manifold pressure is quite representative of engine load at idle just the"
text = "same as it is while driving.
"
text = "
"
text = "--KPA Corrected Minimum 1 is the minimum frequency when manifold air pressure is above the KPA correction Threshold 1.
"
text = "--KPA Corrected Minimum 2 is the minimum frequency when manifold air pressure is above the KPA correction threshold 2.
"
text = "--Minimum frequency is the absolute minimum the valve should ever be open whenever the idle is active. This should be"
text = "set to a point the engine has a stable idle. It may help to set the slow idle target speed 100 or so rpm under your 'ideal'"
text = "idlespeed and use this minimum frequency value to hold your 'ideal' idle by preventing the code from lowering the duty cycle.
"
text = "
"
text = "Once you have set your minimum frequency with no load on the engine, you can continue fine tuning by identifying"
text = "frequency requirements for various idle loading. (A/c activation, Switching into gear with an automatic, etc...
"
text = "
"
text = "--KPA correction 1 should be used for the most radical engine loading condition.
"
text = "--KPA correction 2 should be used for small loading conditions such as electric fan activation. (just to increase the DC%"
text = "by another point or so to keep a stable idle rpm.
"
text = "
"
text = "This ordering is important since the logical progression of the code will not allow a higher kpa limit to be sensed"
text = "if a lower one has previously been breeched.
"
text = "
"
text = "If the KPA correction is not desired, the KPA correction thresholds can be set to 100kpa. This will keep them from"
text = "from affecting idle frequency as it is unlikely you will be idleing at or near 100kpa.
"
text = "
"
text = "
"
text = "Idle Timing
"
text = "
"
text = "While most valves operate at 100 hertz, some older style 2-wire valves will work better at frequencies as low as 39 hertz."
text = "Some newer valves may emit a buzzing sound which can be eliminated by increasing the frequency to 200 hertz.
"
text = "
"
text = "There is a formula for modifying the idle valve frequency. The formula is '10000/desired frequency = x where x is"
text = "is the variable you input in megatune. For example '100' would be 100 hertz, and '50' would be 200 hertz
"
text = "
"
text = "
"
text = "--Primary idle period is the speed at which the code attempts to make modifications to the frequency of the idle valve."
text = "This period is a counted measurement of spark ignition events. The higher the number the longer the code 'waits' to"
text = "make idle frequency modifications. Higher numbers will tend to reduce idle 'surge' or 'hunt'.
"
text = "
"
text = "--Secondary idle period is an option to help more quickly lower the idle after a kickup recovery. It might be best"
text = "to set this the same as the primary period. If the idle falls too quickly you could also increase the period to prevent"
text = "rapid idle frequency changes (since ignition events come faster at higher rpm's)
"
text = "
"
text = "--Secondary period active above, refers to the rpm at which the code switches to the secondary period. Anything below"
text = "this rpm and the idle code will operate at the primary idle period, anything above and it will operate at the secondary"
text = "period
"
text = "
"
text = "
"
text = "Questions can be directed to http://msefi.com"
help = Shelp1, "Knock Detection"
text = "Please see:
"
webHelp = "http://megasquirt.sourceforge.net/extra/knock.html"
text = "for more info on this function.
"
help = Shelp2, "IAT/CLT Related Ignition"
webHelp = "http://megasquirt.sourceforge.net/extra/cltiat.html"
text = "When selected you can add 1 degree"
text = "of advance to the ignition"
text = "for every xx amount of degrees lower"
text = "the coolant temp is than the setpoint.
"
text = "There is also a max setpoint to"
text = "limit the added advance by.
"
text = "
"
text = "The IAT Related Ignition is similar"
text = "but it retards the ignition 1 degree"
text = "for every nn degrees of temp higher "
text = "it is above the setpoint when the "
text = "engine is running over the set KPa.
"
help = Shelp3, "Spark Settings"
webHelp = "http://megasquirt.sourceforge.net/extra/"
text = "Trigger Angle:
"
text = "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 (JS0) output = Water Inj Pump Out
"
text = " Cooling Fan Out
"
text = ""
text = "X4 (JS2) output = Output1
"
text = " Boost Control
"
text = ""
text = "Shift Light outputs are on PTC3 and 4 (JS7 and JS8 for V3 pcb's)
"
help = Chelp2, "Advanced code options"
text = "
"
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. This means that the KPa value becomes part of the fuel calculations, the same as in Speed density. This is very important for turbo applications where Alpha_n is used.
"
text = "
"
text = "We have added the facility for a Mass Air Flow Meter to run the fuel calculations rather than"
text = " a MAP sensor. Connect the MAF 0-5V output up to pin X7 (JS5) via a filter circuit as described on the Extra website. "
text = "In MegaTune ensure the Mass_Air_Flow Mode is set in the Settings.ini file. this is some what experimental, expect "
text = "the VE table to look very linear with lots of rows of numbers the same value in the horizontal axis."
text = "
"
text = "
"
text = "
"
text = "Air Density Correction is most likely built into the MAF you are using, so set to BUILT INTO MAF."
help = Chelp3, "Barometric Correction"
text = "If the Barometric Correction is set on"
text = "in the Enrichments screen then here you"
text = "set up the limits.
"
text = "This is used if MS resets during driving it will take in"
text = "the current MAP pressure and use that"
text = "as the Barometric Pressure to calculate"
text = "the correction.
"
text = "Now you can limit the BarCorr to the presets.
"
text = "
"
text = "If using Alpha-n mode then you can use the MAP sensor thats on the MS board as a constant barometric correction sensor."
text = "
"
text = "A way to gain Constant Baro Correction when in normal speed density mode is by fitting an extra MAP sensor to input X7 (JS5 V3.0) The MAP sensor MUST be the same type as fitted to your MS"
text = "
"
help = Chelp4, "Water Injection"
webHelp = "http://megasquirt.sourceforge.net/extra/waterinj.html"
text = "If selected you cannot use the fan out on X2."
text = "See Codebase and Output functions
"
text = "
"
text = "The output X2 will come on"
text = "when the setpoints are met, the IAT"
text = "setpoint is ignored when it has started.
"
text = "
"
text = "If NOS is not selected then:
"
text = "Output X3 is pulsed at the same rate"
text = "as CH2. This can be used to drive"
text = "a fast acting solenoid.
"
text = "So if a water nozzle is selected that"
text = "flows 10-15% of the total flow of the "
text = "fuel injectors, then it will supply a"
text = "proportional amount of water to fuel.
"
text = "
"
text = "NB: O2 correction is turned"
text = "off during water injection
"
help = Chelp5, "NOS System"
webHelp = "http://megasquirt.sourceforge.net/extra/nitrous.html"
text = "Water Inj output X3 will not work in"
text = "this mode.
"
text = "This turns output X3 on when the "
text = "setpoints are satisfied. Then it "
text = "waits for input Pin6 JP1 to go low. "
text = "When this happens it retards the "
text = "ignition by the set amount and adds "
text = "to the fuel by an interpoled amount"
text = "of between NOS min and max"
text = "RPM value. If the additional PWs"
text = "are zero then no extra fuel is added.
"
text = "
"
text = "If in DT mode you can select which"
text = "CH to add the enrichment PW to."
text = "O2 correction is turned off when the"
text = "input Pin6 JP1 is low. If Duty Cycle"
text = "95% then NOS output X3 is turned off"
text = "and wont come back on untill one of"
text = "setpoints is not satisfied.
"
text = "
"
text = "If NOS selected on and Anti-Lag on"
text = "when MS receives a low input on"
text = "the NOS Check Back (Pin6 JP1)"
text = "before it turns the NOS output on (X3)"
text = "then this will enable the NOS Turbo "
text = "Anti-Lag. This system is used to spool"
text = "the turbo up between a certain KPa"
text = "range using NOS.
"
text = "See http://megasquirt.sourceforge.net/extra/
"
text = "for a suitable wiring diagram.
"
help = Chelp6, "Staged Injection System"
webHelp = "http://megasquirt.sourceforge.net/extra/stagedinj.html"
text = "Roger Emm's Staged Injection System"
text = "Not for use in DT mode!
"
text = "This runs Ch1 injectors only untill"
text = "the setpoint is satisfied, then CH1"
text = "and CH2 will fire at a reduced amount"
text = "depending on the scale factor.
"
text = "This is worked out by calculating"
text = "Primary Injector Flow/Total Inj Flow."
text = "When the engine runs below the"
text = "setpoint-delta the injectors change"
text = "back to CH1 on normally and CH2 off.
"
help = 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 = "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 = Chelp9a, "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 = "If the First Start Enrichment option is set to ON you will have the option to increase the cranking PW for the first start of the day. Just turn on the ignition and then pump the throttle 3 times before cranking. If the TPS value goes above the FLOODCLEAR more than 3 times before you crank the engine then the cranking PW will be multiplied by the Extra Cranking Fuel Multiplier. So if the normal cranking PW is set to 10.0mS and the multiplier is 50% then the "
text = "cranking PW will be 15.0mS. This setting returns to the normal PW after the first attempt to start the motor or if you apply the throttle past the FLOODCLEAR setting. This is to assist starting a motor that requires additional fuel to start only on the first start after sitting a long time. If the engine fails to start on the first attempt, the First Start Enrichment can be reactivated after the engine has set for two sec without cranking."
help = Chelp10, "After Start Enrichment (ASE)"
webHelp = ""
text = "It's been found that during winter the cranking and after start enrichments 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"
help = airdenHelp, "Coolant Corrected Air Density"
text = "Unless you really know what your doing this MUST be set to NORMAL CORRECTION. This is ONLY suitable for fine tuning an already tuned engine!"
text = "
"
text = "Air Density Correction is a factor of Inlet Air Temp measured from the Manifold Air Temp Sensor. There have been a few instances where the air temp is more affected by the coolant temp at low manifold pressures or Throttle positions rather than the entering air temp as measured at the MAT. In this case it was found that the engine could run lean for the same air temp depending on the coolant temperature. To help TUNE this we have added Coolant Correction percentage.
"
text = "With this function enabled the correction percentage is interpolated from the table, depending on the coolant temperature. So Air Density would now be :
"
text = " Air Density = (MAT Related Air Density) * Coolant related correction %
"
text = "E.G. Air Density = 120 * 110 % = 132"
text = "
"
text = "This correction can then be reduced by the engines RPM. The Reduction Start value is where the coolant correction is started to be removed, and the correction End position is where there will no longer be any coolant correction. The coolant correction is interpolated between these 2 points. At engine speeds lower then the start point the correction will be as the Coolant Correction Table. "
text = "Between the Start and End values the Coolant Correction is reduced at a linear rate. At the End value the Coolant Correction rate is removed totally."
text = "
"
text = "The idea is that as rpm increases as does air flow, so the MAT sensor will be a more realistic measurement of density."
text = "
"
text = "So if start is 3000rpm and end is 6000, and correction is 150%, then at 3000rpm correction will be 150%, at 4500rpm correction will be 125% and at 6000rpm correction will be 100% (i.e. no correction)."
text = "
"
text = "We have allowed the temperatures to be user defined, suggested temps would be :
"
text = "Temp 1 = -40 F
"
text = "Temp 2 = -20 F
"
text = "Temp 3 = 0 F
"
text = "Temp 4 = 20 F
"
text = "Temp 5 = 50 F
"
text = "Temp 6 = 80 F
"
text = "Temp 7 = 120 F
"
;-------------------------------------------------------------------------------
[TableEditor]
; table_id, map3d_id, "title", page
table = veTable1Tbl, veTable1Map, "VE Table 1", 1
; constant, variable
xBins = rpmBins1, rpm
#if SPEED_DENSITY
yBins = mapBins1, map
#elif AIR_FLOW_METER
yBins = afmBins1, MAFVolts
#elif ALPHA_N
yBins = tpsBins1, tpsADC
#endif
zBins = veBins1
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
allowAutoTune = on
table = veTable2Tbl, veTable2Map, "VE Table 2 (DT)", 2
xBins = rpmBins2, rpm
#if SPEED_DENSITY
yBins = mapBins2, map
#elif AIR_FLOW_METER
yBins = afmBins2, MAFVolts
#elif ALPHA_N
yBins = tpsBins2, tpsADC
#endif
zBins = veBins2
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
allowAutoTune = on
table = sparkTbl, sparkMap, "Ignition Advance Main Table", 3
xBins = rpmBins3, rpm
#if SPEED_DENSITY
yBins = mapBins3, map
#elif AIR_FLOW_METER
yBins = afmBins3, MAFVolts
#elif ALPHA_N
yBins = tpsBins3, tpsADC
#endif
zBins = advTable1
gridHeight = 3.0
upDownLabel = "ADVANCED", "RETARDED"
table = sparkTbl2, sparkMap2, "Ignition Advance Table 2. See Spark Table selection", 5
xBins = rpmBins4, rpm
#if SPEED_DENSITY
yBins = mapBins4, map
#elif AIR_FLOW_METER
yBins = afmBins4, MAFVolts
#elif ALPHA_N
yBins = tpsBins4, tpsADC
#endif
zBins = advTable2
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
table = veTable3Tbl, veTable3Map, "VE Table 3. See Fuel Table Selection", 6
xBins = rpmBins5, rpm
#if SPEED_DENSITY
yBins = mapBins5, map
#elif AIR_FLOW_METER
yBins = afmBins5, MAFVolts
#elif ALPHA_N
yBins = tpsBins5, tpsADC
#endif
zBins = veBins3
gridHeight = 1.0
upDownLabel = "(RICHER)", "(LEANER)"
allowAutoTune = on
allowAutoTune = on
#if NARROW_BAND_EGO
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#elif AIR_FLOW_METER
yBins = afmBins6, MAFVolts
#elif ALPHA_N
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#elif AIR_FLOW_METER
yBins = afmBins7, MAFVolts
#elif ALPHA_N
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#elif WB_UNKNOWN
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#elif AIR_FLOW_METER
yBins = afmBins6, MAFVolts
#elif ALPHA_N
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#elif AIR_FLOW_METER
yBins = afmBins7, MAFVolts
#elif ALPHA_N
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#elif DIYWB_NON_LINEAR
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (Volts)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#elif AIR_FLOW_METER
yBins = afmBins6, MAFVolts
#elif ALPHA_N
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (Volts)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#elif AIR_FLOW_METER
yBins = afmBins7, MAFVolts
#elif ALPHA_N
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#else
table = afrTable1Tbl, afrTable1Map, "AFR Targets for VE Table 1 (AFR)", 7
xBins = rpmBins6, rpm
#if SPEED_DENSITY
yBins = mapBins6, map
#elif AIR_FLOW_METER
yBins = afmBins6, MAFVolts
#elif ALPHA_N
yBins = tpsBins6, tpsADC
#endif
zBins = afrBins1
table = afrTable2Tbl, afrTable2Map, "AFR Targets for VE Table 3 (AFR)", 7
xBins = rpmBins7, rpm
#if SPEED_DENSITY
yBins = mapBins7, map
#elif AIR_FLOW_METER
yBins = afmBins7, MAFVolts
#elif ALPHA_N
yBins = tpsBins7, tpsADC
#endif
zBins = afrBins2
#endif
table = boostTbl1, boostMap1, "Boost kpa target 1", 8
; constant, variable
xBins = bcrpmBins1, rpm
yBins = bctpsBins1, throttle
zBins = bcBins1
table = boostTbl2, boostMap2, "Boost duty target", 8
xBins = bcrpmBins2, rpm
yBins = bctpsBins2, throttle
zBins = bcBins2
table = boostTbl3, boostMap3, "Boost kpa target 2", 8
xBins = bcrpmBins3, rpm
yBins = bctpsBins3, throttle
zBins = bcBins3
table = splitTbl, splitMap, "Rotary split Table", 8
xBins = splitrpmBins, rpm
#if SPEED_DENSITY
yBins = splitkpaBins, map
#elif AIR_FLOW_METER
yBins = splitafmBins, MAFVolts
#elif ALPHA_N
yBins = splittpsBins, tpsADC
#endif
zBins = splitTable
gridHeight = 3.0
upDownLabel = "RETARDED", "ADVANCED"
;-------------------------------------------------------------------------------
[GaugeConfigurations]
;-------------------------------------------------------------------------------
; Notes on some of the gauges.
;
; The accelEnrichGauge is now a composite of both acceleration enrichment
; and deceleration enleanment numbers. See the definition of the variable
; accDecEnrich in the OutputChannels section.
;
; David Hooke contributed the lambda gauge and associated transfer
; function files.
;
; The lambda gauge is the best way (my opinion) to report data from a
; wide band EGO gauge, it standardizes the output irrespective of fuel
; or mix of fuels, so you needn't do any brainwork to know if your 75%
; gasoline and 25% methanol is rich at 10:1 or not.
;
; Use the file WBlambda100AVR.inc, if using a standard ADC (e.g., AVR cpu).
; Use the file WBlambda100MOT.inc, if using a biased ADC (e.g., MOT cpu).
;-------------------------------------------------------------------------------
; Define a gauge's characteristics here, then go to a specific layout
; block (Tuning or FrontPage) and use the name you've defined here to
; display that gauge in a particular position.
;
; Name = Case-sensitive, user-defined name for this gauge configuration.
; Var = Case-sensitive name of variable to be displayed, see the
; OutputChannels block in this file for possible values.
; Title = Title displayed at the top of the gauge.
; Units = Units displayed below value on gauge.
; Lo = Lower scale limit of gauge.
; Hi = Upper scale limit of gauge.
; LoD = Lower limit at which danger color is used for gauge background.
; LoW = Lower limit at which warning color is used.
; HiW = Upper limit at which warning color is used.
; HiD = Upper limit at which danger color is used.
; vd = Decimal places in displayed value
; ld = Label decimal places for display of Lo and Hi, above.
;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld
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
idleGauge = idleDC "IdleDC", "%", 0, 255, -1, -1, 256, 256, 0, 0
#if NARROW_BAND_EGO
egoGauge = egoVoltage, "Rear Bank O2 Voltage", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
egoGauge = egoVoltage, "Rear Bank O2 Voltage", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
#if NARROW_BAND_EGO
ego2Gauge = ego2Voltage, "Front Bank O2 Voltage", "volts", 0, 1.0, 0.2, 0.3, 0.6, 0.8, 2, 2
#else
ego2Gauge = ego2Voltage, "Front Bank O2 Voltage", "volts", 0.5, 4.5, 0.0, 0.0, 5.0, 5.0, 2, 2
#endif
lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
accelEnrichGauge = accDecEnrich, "AE Driven Fuel Pct", "Pct", 100, 200, 0, 0, 999, 999, 0, 0
afrGauge = afr, "Air:Fuel Ratio", "", 10, 19.4, 12, 13, 15, 16, 2, 2
clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0
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, 150, -1, -1, 999, 999, 0, 0
veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0
voltMeter = batteryVoltage,"Battery Voltage", "volts", 7, 21, 8, 9, 15, 16, 2, 2
warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 150, -1, -1, 101, 105, 0, 0
#if CELSIUS
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 120, -15, 0, 95, 105, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 110, -15, 0, 95, 100, 0, 0
#else
cltGauge = coolant, "Coolant Temp", "%TEMP", -40, 250, 0, 0, 200, 220, 0, 0
matGauge = mat, "Manifold Air Temp", "%TEMP", -40, 215, 0, 0, 200, 210, 0, 0
#endif
advanceGauge = advSpark, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0,
stackGauge = stackL, "CPU stack", "bytes", 240, 200, 0, 0, 254, 254, 0, 0
; T2XGauge = T2X, "T2 X byte", "byte", 0, 255, 0, 0, 254, 254, 0, 0
; Extra Stuff
fuelGauge = fuelpress, "Fuel Pressure", "lb/in", 0, 80, 30, 40, 60, 65, 1, 1
#if CELSIUS
egtGauge = egttemp, "EGT", "C", 0, 1000, 0, 0, 1450, 1480, 1, 1
#else
egtGauge = egttemp, "EGT", "F", 0, 2200, 0, 0, 1450, 1480, 1, 1
#endif
CltIatGauge = CltIatDeg, "Clt IAT Angle", "Deg", -10, 10, -10, -10, 10, 10, 1
KnockGauge = KnockDeg, "Knock Retard", "Deg", -20, 0, -20, -20, 1, 1
egoCorrGauge2 = egoCorrection2, "EGO Correction2", "%", 50, 150, 90, 99, 101, 110, 0, 0
testGauge = test, "TEST", "", 0, 255, 255, 255, 0 , 0,
test2Gauge = test2, "TEST2", "", 0, 255, 255, 255, 0, 0,
RpmHiResGauge = RpmHiRes, "Engine RPM", "RPM", 0, 8000, 0, 300, 7800, 8000, 0
lambdaGauge2 = lambda2, "Lambda2", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2
afrGauge2 = afr2, "Air:Fuel Ratio2", "", 10, 19.4, 12, 13, 15, 16, 2, 2
vacuumGauge = vacuum, "Engine Vacuum", "in-HG", 0, 30, 0, 0, 30, 30, 1, 1
boostgauge = boost, "Engine Boost", "PSIG", 0, 20, 0, 0, 15, 20, 1, 1
VacBooGauge = boostVac, "Engine Vac Boost", "in-HG/PSIG", -30, 30, -30, -30, 30, 30, 1, 1
TargetAFRGauge = TargetAFR, "Target AFR", "AFR", 10, 19.4, 0, 0, 20, 20, 2, 2
mphGauge = mph, "Speedo", "MPH", 0, 200, -1, -1, 200, 200, 1
USgphGauge = USgph, "US GPH", "GPH", 0, 100, -1, -1, 100, 100, 1
gphGauge = gph, "GPH", "GPH", 0, 100, -1, -1, 100, 100, 1
USmpgGauge = USmpg, "US MPG", "MPG", 0, 100, -1, -1, 100, 100, 1
mpgGauge = mpg, "MPG", "MPG", 0, 100, -1, -1, 100, 100, 1
YGForceGauge = YForce, "Y G-Force", "G", -3, 3, 0, 0, 2, 3, 3
XGForceGauge = XForce, "X G-Force", "G", -3, 3, 0, 0, 2, 3, 3
MAFGauge = MAFVolts, "Volts", "V", 0, 5, 0, 0, 5, 5, 2
;-------------------------------------------------------------------------------
[FrontPage]
#if NARROW_BAND_EGO
egoLEDs = 0.0, 1.0, 0.5 ; NB settings.
#else
; If you reverse these range values as you see below, then the LED
; bar will work as you expect, high on the right, low on the left.
egoLEDs = 4.0, 1.0, 2.5 ; WB settings.
#endif
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
;Gauge Setup 0
gauge1 = RpmHiResGauge
; gauge2 = cltGauge
gauge3 = pulseWidth1Gauge
gauge4 = dutyCycle1Gauge
gauge5 = mapGauge
; gauge6 = matGauge
gauge7 = afrGauge
gauge8 = advanceGauge
;Gauge Setup 1
; gauge1 = RpmHiResGauge
; gauge2 = cltGauge
; gauge3 = pulseWidth1Gauge
; gauge4 = dutyCycle1Gauge
; gauge5 = mapGauge
; gauge6 = accelEnrichGauge
; gauge7 = egoCorrGauge
; gauge8 = advanceGauge
;Gauge Setup 2
; gauge1 = tachometer
; gauge2 = throttleGauge
; gauge3 = cltGauge
; gauge4 = matGauge
; gauge5 = mapGauge
; gauge6 = veGauge
; gauge7 = ego2Gauge
; gauge8 = advanceGauge
;Gauge Setup 3
; gauge1 = RpmHiResGauge
; gauge2 = cltGauge
; gauge3 = pulseWidth1Gauge
; gauge4 = dutyCycle1Gauge
; gauge5 = mapGauge
; gauge6 = accelEnrichGauge
; gauge7 = egoCorrGauge
; gauge8 = advanceGauge
;Gauge Setup 4
; gauge1 = tachometer
gauge2 = throttleGauge
; gauge3 = idleGauge
; gauge4 = pulseWidth1Gauge
; gauge5 = mapGauge
gauge6 = cltGauge
; gauge7 = matGauge
; gauge7 = accelEnrichGauge
; gauge8 = advanceGauge
;Gauge Setup 5 Alpha-N / MAF
; gauge1 = tachometer
; gauge2 = tpsADCGauge
; gauge2 = MAFGauge
; gauge3 = pulseWidth1Gauge
; gauge4 = accelEnrichGauge
; gauge5 = cltGauge
; gauge6 = veGauge
; gauge7 = voltMeter
; gauge8 = mapGauge
; gauge5 = tpsADCGauge
; gauge4 = TargetAFRGauge
; gauge4 = batADCGauge
; gauge3 = mphGauge ; ONLY FOR USE WHEN VSS CONNECTED TO MS
; gauge3 = USgphGauge
; gauge3 = gphGauge
; gauge3 = USmpgGauge
; gauge3 = mpgGauge
; gauge4 = egtGauge
; gauge4 = fuelGauge
; gauge4 = throttleGauge
; gauge6 = matGauge
; gauge7 = KnockGauge
; gauge7 = pulseWidth2Gauge
; gauge7 = afrGauge
; gauge8 = dutyCycle2Gauge
; gauge8 = stackGauge ; CPU stack pointer, only useful for coders
; gauge8 = T2XGauge ; only useful for code testing
; These 3 are for the second lambda sensor. Remove ";" and re-number gauge
; gauge6 = afrGauge2
; gauge7 = pulseWidth2Gauge
; gauge8 = egoCorrGauge2
; Eliot Mansfield's boost and vacuum gauges.
; gauge7 = vacuumGauge
; gauge8 = boostgauge
; Decided to combine the Vacuum and Boost gauges into one
; gauge4 = VacBooGauge
; For testing only
; gauge8 = testGauge
; gauge8 = test2Gauge
; G FORCE GAUGES
; gauge7 = XGForceGauge
; gauge8 = YGForceGauge
;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.
gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees.
; The four radio buttons on the tuning screen select a "page" of six
; gauges. The gauge numbering is the same as the front page, across
; then down.
; 1 2
; 3 4
; 5 6
;
; gaugeColumns allows you to hide or show gauges in column 2 (i.e.,
; gauges 2, 4 and 6).
gaugeColumns = 2 ; Only 1 or 2 are valid.
; Page 1 Page 2 Page 3 Page 4
pageButtons = "&EGO", "&WUE", "PW&1", "PW&2"
; gauge1 = tachometer, tachometer, tachometer, tachometer
gauge1 = RpmHiResGauge, RpmHiResGauge, RpmHiResGauge, RpmHiResGauge
gauge2 = mapGauge, mapGauge, mapGauge, mapGauge
; gauge3 = egoGauge, egoGauge, egoGauge, egoGauge
gauge3 = afrGauge, afrGauge, afrGauge, afrGauge
gauge4 = egoCorrGauge, warmupEnrichGauge, pulseWidth1Gauge, pulseWidth2Gauge
gauge5 = veBucketGauge, veBucketGauge, veBucketGauge, veBucketGauge
gauge6 = accelEnrichGauge, accelEnrichGauge, dutyCycle1Gauge, dutyCycle2Gauge
;-------------------------------------------------------------------------------
[OutputChannels]
; 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, "mS", 1.000, 0.000
baroCorrection = scalar, U08, 16, "%", 1.000, 0.000
gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000
veCurr1 = scalar, U08, 18, "%", 1.000, 0.000
pulseWidth2 = scalar, U08, 19, "ms", 0.100, 0.000
veCurr2 = scalar, U08, 20, "%", 1.000, 0.000
idleDC = scalar, U08, 21, "%", 1.000, 0.000
iTime = scalar, U16, 22, "s", 1.000, 0.000
advance = scalar, U08, 24, "deg", 1.000, 0.000
afrtarget = scalar, U08, 25, "ADC", 1.000, 0.000
fuelADC = scalar, U08, 26, "ADC", 1.000, 0.000 ; ADC from X7 (second O2 or fuel pressure)
egtADC = scalar, U08, 27, "ADC", 1.000, 0.000
CltIatAngle = scalar, U08, 28, "deg", 1.000, 0.000
KnockAngle = scalar, U08, 29, "deg", 1.000, 0.000
egoCorrection2 = scalar, U08, 30, "%", 1.000, 0.000 ; Second O2 sensor correction
porta = scalar, U08, 31, "", 1.000, 0 ; porta raw value
portb = scalar, U08, 32, "", 1.000, 0 ; portb raw value
portc = scalar, U08, 33, "", 1.000, 0 ; portc raw value
portd = scalar, U08, 34, "", 1.000, 0 ; portd raw value
stackL = scalar, U08, 35, "", 1.000, 0 ; low byte of stack
tpsLast = scalar, U08, 36, "", 1.000, 0 ; TPS last for Accel Wizard
iTimeX = scalar, U08, 37, "s", 1.000, 0.000
; dwelldelay1 = scalar, U16, 38, "0.1ms", 1, 0.000
; dwelldelay2 = scalar, U16, 40, "0.1ms", 1, 0.000
; dwelldelay3 = scalar, U16, 42, "0.1ms", 1, 0.000
; dwelldelay4 = scalar, U16, 44, "0.1ms", 1, 0.000
accDecEnrich = { (engine & 0b00100000) ? 100 : ((pulseWidth-injOpen1) / (pulseWidth-(accelEnrich / 10)-injOpen1) * 100) }, "%" ; In percent, centered on 100% meaning no correction.
batteryVoltage = { batADC / 255.0 * 30.0 } ; Current MS power supply voltage.
coolant = { tempCvt(table(cltADC, "thermfactor.inc")-40) } ; Coolant sensor temperature in user units.
egoVoltage = { egoADC / 255.0 * 5.0 } ; EGO sensor voltage.
ego2Voltage = { fuelADC / 255.0 * 5.0 } ; EGO sensor voltage 2.
mat = { tempCvt(table(matADC, "matfactor.inc")-40) } ; Manifold temperature in user units.
rpm = {rpm100*100 } ; True RPM.
time = { timeNow } ; "timeNow" is a parameterless built-in function.
#if CELSIUS
egttemp = { egtADC * 3.90625} ; Setup for converting 0-5V = 0 - 1000C
#else
egttemp = { egtADC * 7.15625} ; Setup for converting 0-5V = 0 - 1832F
#endif
; Added for second O2 sensor
#if NARROW_BAND_EGO
afr2 = { table(fuelADC, "NBafr100.inc") / 100.0 }
lambda2 = { afr2 / 14.7 }
#elif ZEITRONIX_NON_LINEAR
lambda2 = { table(egoADC, "WBafr100Zeit.inc") / 100.0 }
afr2 = { lambda * 14.7 }
#else
lambda2 = { table(fuelADC, "WBlambda100MOT.inc") / 100.0 }
afr2 = { lambda2 * 14.7 }
#endif
#include "lambdaSensors.ini"
#if MPXH6300A
barometer = { table(baroADC, "kpafactor4250.inc") }
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 = {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 }
; G FORCE DISPLAY Alter Values for XOffset and YOffset to get the G at zero when stationary
; this is to compensate for any tilting the chip has at rest.
YOffset = {182}
XOffset = {187}
YForce = {egtADC > YOffset + 1 ? (egtADC - YOffset) * 0.04464 : egtADC < YOffset - 1 ? (egtADC - YOffset) * 0.04464 : 0 } ; 1G = 312mV * 1.41 gain from amp = 440mV
XForce = {fuelADC > XOffset + 1 ? (fuelADC - XOffset) * 0.04464 : fuelADC < XOffset - 1 ? (fuelADC - XOffset) * 0.04464 : 0 } ; 1G = 312mV * 1.41 gain from amp = 440mV
; Test use only
test = {mapDOT}
test2 = {egtADC}
; 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 = { fuelADC < 1 ? 0 : (fuelADC * Speed) /127.5 } ; MPH
mph = { mphTemp < 1 ? 0 : mphTemp } ; Ensure we get 0 mph
USgph = { CCpHr / 3785 } ; US Gallons / Hr
USmpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / USgph } ; US Miles / Gallon
gph = { CCpHr / 4546 } ; Real Gallons / Hr
mpg = { fuelADC < 1 ? 0 : mph < 1 ? 0 : mph / gph } ; Real Miles / Gallon
;*****************************************************************************
; CHANGE THESE VALUES TO FIND THE APPROXIMATE BHP FOR YOUR ENGINE.
; CALCULATIONS WERE PROVIDED BY ERIC. THESE WILL ONLY WORK IF A SUITABLE VEHICLE SPEED
; SENSOR IS CONNECTED TO THE MSnS-EXTRA CODE. This is unfinished!
Cd = 0.33 ; Change this to your vehicle's Coefficient of Drag (0.25-1.0 for road vehicles)
Mass = 1050 ; Change this to your vehicle's weight in KGs.
Crr = 18 ; Change this to your vehicle's internal drive train loss. (8% for Nascar,
; diamond-like coating on gears to 25% for road car with automatic transmission)
Radius = 16.15 ; Change this to your vehicle's driven wheel radius in inch's
GrTms = 0.88 ; Ratio of the gear you want to test BHP in.
DiffRa = 3.31 ; Differential ratio
floodclear = { tpsADC > 200 ? 1 : 0 } ; For flood clear indicator on main screen
tpsDOTTY = { mapProportion4 ? 0 : (tpsADC - tpsLast) * 0.19} ; * 0.019 / 0.1 to convert it to V from ADC and to 1Sec from 0.1Sec
mapDOTTY = { mapProportion4 ? (mapADC - tpsLast) / 0.1 : 0 } ; Divide by 0.1 to convert from 0.1Sec to 1Sec
tpsDOT = { tpsDOTTY < 0 ? 0 : tpsDOTTY} ; Only display positive or it gets confusing to read
mapDOT = { mapDOTTY < 0 ? 0 : mapDOTTY} ; Only display positive or it gets confusing to read
Timeroll = { portc & 0b00000100 }
waterIlog = { porta & 0b00010000 }
MAFVolts = {fuelADC * 0.0196078}
;-------------------------------------------------------------------------------
[Datalog]
; Full datalog.
;
; Default user-defined log emulates the full datalog.
;
; The entries are saved in the datalog file in the order in
; which they appear in the list below.
;
; Channel - Case sensitive name of output channel to be logged.
; Label - String written to header line of log. Be careful
; about changing these, as programs like MSLVV and
; MSTweak key off specific column names.
; Type - Data type of output, converted before writing.
; Format - C-style output format of data.
;
; Channel Label Type Format
; -------------- ---------- ----- ------
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"
#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 are for datalogging the egt,fuel pressure, GForces, spark angle
; and knock retard. Only 3 can be used at once for MSLVV compatability.
entry = advSpark, "Spark Angle", int, "%d"
entry = egttemp, "EGT", int, "%d"
; entry = fuelpress, "Fuel Press", int, "%d"
entry = KnockDeg, "Knock", int, "%d"
; entry = XForce, "X GForce", float, "%.2f" ; X on X7
; entry = YForce, "Y GForce", float, "%.2f" ; Y on X6
; entry = MAFVolts, "MAF Volts", float, "%.2f" ; MAF on X7
; TEST ONLY - DONT USE
; entry = iTime, "iTime", int, "%d"
; entry = iTimeX, "iTimeX", int, "%d"
; entry = iTimefull, "iTimeFull", int, "%d"
; TESTING
; entry = dwelldelay1, "dd1", int, "%d"
; entry = dwelldelay2, "dd2", int, "%d"
; entry = dwelldelay3, "dd3", int, "%d"
; entry = dwelldelay4, "dd4", int, "%d"