MembersPage/JimW/ExampleConfig
############################################################
# JimW's Setup
# 1.8 8v counterflow motor
# 36-1 crank wheel
# 11th tooth on trigger wheel is TDC
# Genboard v3.2 Assembled
# High-Z (14.5ohm) 31lb/hr injectors), 3.0bar fuel pressure
# Wideband Heater:  WB1
# Wasted spark ignition
# v20050922

############################################################
#
# CRANKING INFORMATION
#
# Fuel Pump Priming
# 0x01=0.1ms
# eg 0D=1.3ms 
primep=20

# Hot start priming pulse scaling at 170F
# Measured as percentage 
# 0x80=50%, 0xFF=100%
# eg A0=63%
primep_temp_scaling=A0

# Cranking while cold (low temp) pulsewidth
# Cranking pulsewidth at -40 F
# 0x01=0.1ms
# eg 1E=3.0ms
cwl=2c

# Cranking while hot pulsewidth
# Used when coolant temp >= 170 degF
# Typical cwh = about 20% of cwl
# 0x01=0.1ms
# eg 0A=1.0ms
cwh=0A

# Cranking Threshold
# Defines boundry between cranking and running;
# Cranking settings used up to cranking_thres rpm,
# then settings switch over to running values.
# Offset by +99 rpm
# 0x01=100 (+99) rpm
# eg 0x03=399 rpm
cranking_thres=03


#############################################################
#
# Operating environment
#
# Battery voltage calibration (affects dwell and pwm'ing)
# Adjust so that VBatt reading in Megatune matches actual supply voltage.
# 0x01=???
#
# default=BC
batt_cal=A8

# Mean Barometric Pressure
# MAP sensor failure value (limp home value)
# 0x01=2kPa
baro=64

# Max allowed difference in barometric pressure
# If barometric pressure less than baro-dbaro or
# barometric pressure greater than baro+dbaro, use
# baro as barometric pressure.
# 0x01=1kPa?
dbaro=0C 
#
#############################################################


#############################################################
# 
# INJECTOR SETTINGS
#
# JimW: 109 cid (1776cc), 4 cylinder, 4 injectors, 31lb/hr
#
# COMMENT: 
# For Req_fuel information 
#     see: http://www.megasquirt.info/manual/mfuel.htm#reqfuel
#     Scaling the VE and and req_fuel effectively increases the resolution
#        of the fueling parameters. 
# EXAMPLE:
# scaling is accomplished by making:
#          req_fuel  = calculated req_value / 2
#          VE_TABLE==> j[] = j[] .*2 (matlab notation) 
#          This changes the range of values in the j[] table 
#              from 1..100 to 2..200  
#6E
req_fuel=8F

# Injector bank setup
# Number of injections per 720 degrees of crank revolution
#
# alternate works with h[0]
# alternate=00 means use only first (batch fire; all injectors in one batch)
# alternate=01 means alternate between first and second batch
# alternate=03 to use indexes 3,2,1,0 
# alternate=07 to use indexes 7,6,5,4,3,2,1,0 
#
# ex: 4 cyl, 4 injectors, 1 batch, all injectors attached to individual pins InjA...D
#     alternate=00
#     divider=04
#     h[0]=0F 00 00 00 00 00 00 00
#
# ex: 4 cyl, 4 injectors, 4 batches, all injectors attached to individual pins InjA...D
#     Injectors are fired in this order: A-C-D-B
#     alternate=03
#     divider=01
#     h[0]=02 08 04 01 00 00 00 00
#
# add 0x10 to fire in 1-batch mode at cranking
alternate=07

# divider = (number of cylinders)/(alternate + 1)
# examples: (x=don't care)
# divider=04 and alternate=x0 for 1 bank
# divider=02 and alternate=x1 for 2 banks
# divider=01 and alternate=x3 for 4 banks
divider=01

# Injector open and closing times
#   for more detailed information look:
#      MembersPage/MarcellGal/EngineSwap/Feed
#      http://www.vems.hu/wiki/index.php?page=MembersPage%2FMarcellGal%2FEngineSwap%2FFuelFeed
#      http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening  
#   [ This comes from I = V/R, the current flowing varies with the voltage applied since 
#     the resistance of the injectors remains constant ]
#
# injopen should not be set higher than 0x20 (512us);
# If injopen is too high, VE table at low kPa (j[0]) will have very small, untunable values
# There is a bad rumour that injopen is the time needed for the injector to open. 
# It is not the case, and it has never been the case.
# The misconception comes from the fact that if an injector opens slower 
# than another injector with all other parameters the same, 
# injopen value will be higher. Even with simpler injector opening models, 
# injector closing is also heavily involved.
# In very short and simplified form: injopen=injector_opening_time - injector_closing_time.
# But read more:
# http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FConfig%2FInjectorOpening
# 0x01=0.16ms
# eg 0x10=2.56ms
injopen=10

# Slope of line representing time added to 
# injopen to compensate for high/low battery voltage.
# Only used when 7V>=VBATT>=19V
# 0x01=xxxx
battfac=10

# Time added to injection to compensate for reduction in fuel flow
# during injector opening and closing.
# 0x01=0.24ms
# eg 0x20=7.68ms
injocfuel=2C

# Slope of line representing time added to 
# injocfuel to comepensate for high/low battery voltage.
# Only used when 7V>=VBATT>=19V
# eg 0xFF=77% of injocfuel @ 14V
injrampup_battfac=FF

#############################################################
#
# High Z INJECTORS
#
# For non-PWM settings INJPWMT=FF, INJPWM=FF, INJPWM6=00 sets up HIGH Z injection
# COMMENT why wouldnt INJPWMT be set to 00, then it doesnt need to get "disabled"
#
# delta t=(t=0 to time initial resistance is overcome in injector)
# Injector PWM time at which to activate pwm
# FF=disabled (set to 1 mS per MegaManual for starting point)
# 0x01=0.1ms
injpwmt=FF          

# Injector PWM duty cycle
# Measured in percent (50%=0x80, 100%=0xFF)
# 100% when using HighZ
injpwm=FF

# Added Injector PWM duty cycle during low battery voltage (6V)
# Measured in percent (50%=0x80, 100%=0xFF)
# 0% when using HighZ (we're already always at 100%)
injpwm6=00

#--------------------------------------------------------------
#
# Low Z INJECTORS
#
# delta t=(t=0 to time initial resistance is overcome in injector)
# Injector PWM time at which to activate pwm
# FF=disabled (set to 1 mS for starting point)
# 0x01=0.1ms
#injpwmt=0A
#
# Current during the hold cycle
# injpwm= (I= (V/R) * (% duty cycle))
# verify by measuring OC0 with DVM
# 0x01=0.4%
# eg 0xFF=100% (that measures OC0=0V; since this is before the inverting FET driver)
# 48/256 (=3/16), that measures OC0=5V * (256-48)/256
# Injector PWM duty cycle (when current limiting is active)
#injpwm=30
#
# In the case of low battery to keep the same I(current); the duty cycle must be increased.
# COMMENT: this is straight forward and should be built into the firmware
#      Also, shouldn't this be taken care of by battfac?  Seems redundant.
# 6volts = Vbatt/2; Iold = Inew; dutycycle should be equal to 2x 12volt percentage.
# added Injector PWM duty cycle during low battery voltage (6V)
#injpwm6=40
#---------------------------------------------------------------


#############################################################
#
# TPS related information
#
# TPS calibration
# TPS closed (low) and open (high) settings
tps_low=30
tps_high=AC

# Acceleration Enrichment basis
# 00 = Use TPS DOT for acceleration enrichment
# 01 = Use both MAP DOT and TPS DOT for acceleration enrichment
tpsdot_kpadot_conf=00

# TPSDOT bins
# Amount of change in throttle position over 0.1 sec
tpsdotrate[0]=05
tpsdotrate[1]=14
tpsdotrate[2]=28
tpsdotrate[3]=4D

# TPS accelerator enrichement
# Set to 00 for inital VE tuning
# Amount of enrichment for amount of change in throttle position
tpsaq[0]=00
tpsaq[1]=00
tpsaq[2]=00
tpsaq[3]=00

# Acceleration TPSDOT threshold (throttle sensitivity) 
# Minimum rate of change to enable any acceleration enrichment.
# This should be set to at least tpsdotrate[0].
# Setting lower than tpsdotrate[0] effectively disables
# TPS/MAP based acceleration enrichment.
tps_thresh=05

# Acceleration duration
# Amount of time to apply the enrichments specified in tpsaq[] bins.
# 0x01=0.1s
# eg 0x0A=1 second
tpsasync=02

# Cold acceleration multiplication factor
# Biased at 0x64
# eg 0x64 - bias = 0
acmult=64

# Cold acceleration added amount (at -40 F degrees)
# 0x01=0.1ms
# eg 0x14 = 2.0ms
tpsacold=05

# Deceleration fuel cut
# 100% (0x64) means no fuelcut on sudden tps-release
# Values under 96% (0x60) are dangerous (can cause lean condition)
# 0x00 would be rough behaviour
# Recommended value: 64
tpsdq=64

# Decel fuelcut enabled above threshold
# 0x01=100rpm
# eg 0x0F=1500rpm
decel_fuelcut_thres=0F

# Overrun fuelcut:
# injectors disabled above this
# 0x01=100rpm
# eg 0x10=1600rpm
overrun_fuelcut=1F

# Overrun fuel resume
# Injectors re-enabled below this value
# 0x01=100rpm
# eg 0x0F=1500 RPM
overrun_fuelresume=1E





#############################################################
#
# MAP Sensor settings
#
# MAP Sensor
# MPX4250AP 250kpa sensor (standard for v3.x)
kpafac=7F
kpaoffs=52


##############################################################
#
# Coolant fan output 
#
# This ouput is generally used to trigger a relay to turn on
# the electric radiator fan, or engage the electric clutch for 
# engine cooling fan.
#
# Temperature when fan will turn on (in degC)
# 0x01=1 degree C
# eg 0x55 = 85degC
fan_temp=EA

# Decrease in temperature required to turn fan off
# fan_temp - fan_hyst=temp when fan will turn off
# 0x01=1 degree C
# eg 0x55 - 0x09 = 0x4C (76degC)
fan_hyst=05

# Coolant fan
# Output channel selection (digitalout)
fan_channel=FF

###################################################################
#
# Idle
#
# Below this coolant temperature, fast idle is enable
# 40 degF offset: 0=-40 degF, 200=160 degF
# 0x01=1 degF
# eg 0xAA=130 degF
fastidle=AA

# Idle enleaning limit
#
# Use to avoid enleaning of AFR when idling due to IAT
# sensor heat soak (above 25C (77F) degrees).
# 0x01=1%
# eg 0x62=98%
airden_ignore=62


###################################################
#
# Idle air controller based idle control
#
# Idle air controller stepping sequence for
# 4-pin bipolar stepper motors.
# iac_step_seq=C9:  Sequence is 3-1-2-0
# iac_step_seq=D8:  Sequence is 3-0-2-1
iac_step_seq=C9

# Idle Air Controller Type
# Use iac_conf=7E for stepper style
# Use iac_conf=18 for PWM style
iac_conf=18

# Max commanded output for solenoid
# eg 0xFF=5V
iac_max_steps=F0

# Enable IAC when TPS is less than iac_tps_thres
# 0x01=0.64% open
# eg 0x10=1/16 open throttle
iac_tps_thres=05

# Below this temp, idle is set to iac_cold_rpm
# In Fahrenheit degrees + 40
# 0x01=1 degF
# eg 0xA0=200degF
iac_cold_idle_temp=A0

# Above this temp, idle is set to iac_warm_rpm
# In Fahrenheit degrees + 40
# 0x01=1 degF
# eg 0xD0=248degF
iac_warm_idle_temp=D0

# At iac_cold_idle_temp, set idle to iac_cold_rpm
# 0x01=10rpm
# eg 0x74=1160rpm
iac_cold_rpm=74

# At iac_warm_idle_temp, set idle to iac_warm_rpm
# 0x01=10rpm
# eg 0x67=1000rpm
iac_warm_rpm=64

# Actual IAC (stepper or PWM) position that is 
# applied during cranking is calculated
# from engine coolant temp:
# interpolation between iac_cold_start_pos and iac_warm_start_pos
# open these significantly so lots of air can enter the engine
# during cranking without TPS applied.
# We want MAP values between 85..100kPa.

# Valve position on cold start (-40F)
iac_cold_start_pos=E2

# Valve position on warm start (170F)
iac_warm_start_pos=B0

# Intentional rpm overshoot after startup
# Add this amount of rpm to idle rpm at startup
# 0x01=10rpm
# eg 0x1F=310rpm
iac_afterstart_rpm=1F

# Duration to hold iac_afterstart_rpm
# 0x01=0.1sec
# eg 0x20=3.2 seconds
iac_afterstart_duration=20

# During the afterstart duration,
# iac_afterstart_steps * actual_afterstart_added_rpm
# is added to the iac reference position.
# Since PID control is active, sufficiently high
# iac_integral_limit_inc will make sure the valve
# is opened, even if iac_afterstart_steps is very small (0..1)
#
# Steps per 160rpm
iac_afterstart_steps=04

# PID parameters for idle air controller
iac_kp=25
iac_ki=17
iac_kd=A0
iac_integral_speed=40
iac_integral_limit_dec=10
iac_integral_limit_inc=20
iac_integral_deadband=14
iac_deadband=0A
iac_pid_conf=01
iac_overclose_interval=0A

# Reference position hint as function of coolant temp
iac_ref_pos[0]=35
iac_ref_pos[1]=34
iac_ref_pos[2]=33
iac_ref_pos[3]=32
iac_ref_pos[4]=31
iac_ref_pos[5]=30
iac_ref_pos[6]=2F
iac_ref_pos[7]=2E
iac_ref_pos[8]=2D
iac_ref_pos[9]=2C

# IAC Solenoid output channel
# 0xFF=Disable/Stepper type IAC
# 
iac_sol_channel=FF
#
#############################################################


#############################################################
#
# Ignition based idle control
#
# This section should be used for idle 
# if you have no idle air control device.
# Idle control via ignition advance/retard.
#
# Ignition advance based fine-adjust
# 0x01=0.25 crank degrees per 256rpm
iac_ign_advance_change=28

# Ignition advance based fine-adjust
# 0x01=0.25 crank degrees per 256rpm
iac_ign_retard_change=20

# Ignition advance limit when trying to increase RPM
# 0x01=0.25 crank degrees
# eg 0x10=4 degree limit
iac_ign_advance_limit=10

# Ignition retard limit when trying to decrease RPM
# 0x01=0x25 crank degrees
# eg 0x1A=6.5 degree limit
iac_ign_retard_limit=1A

# Minimum distance (in degrees) before change in advance/retard.
# If less than n degrees of ignition advance/retard is sufficient
# to reach the idle RPM target, don't change current advance/retard
# 0x01=0.25 crank degrees
# eg 0x08=2 crank degrees
iac_ign_threshold=08
#
#############################################################


#############################################################
#
# Engine Warmup
#
# 15..40% (0x0F .. 0x28) are common (and sometimes even higher).
# Since originally warmup enrichment is not tuned, we often 
# adjust awev (besides cwl,cwh) to start the engine, but after
# warmup enrichments tuning is done, awev must retuned 
# to get back the desired pulsewidth. Take notes of 
# working cwl,cwh, awev settings and actual CLT and
# the warmup enrichments, so when warmup values are changed
# awev can be changed with simple calculation instead of guessing

# Afterstart warmup enrichment
# awev is the percentage of added fuel added at startup that fades away
# to zero in (awc) revolutions.
# 0x01=1%
# eg 0x1D
awev=1E

# Afterstart number of cycles
# Afterstart enrichment will be scaled from awev to zero 
# through this many cycles after startup
# 0x01=1 cycle
# eg 0x64=100 engine cycles
awc=96

# Afterstart warmup scaling at 170F
# Use this percentage of awev when coolant temp >= 170F
# 0x01=0.4%
# eg 0x80=50%, 0xFF=100%
awev_temp_scaling=A0

# Warmup Coolant 
# warmup_clt_range defines the temperature bins used for interpolation
# the values in warmup_clt_range is degrees Fahrenheit + 40
# C = 5/9 * F - 40 Looks messed up!
# F = 9/5 * C + 72 Looks messed up!
# use these:
# C= 5/9 * (F - 32)
# F= 9/5 * C + 32

warmup_clt_range[0]=00  # -40.0 C
warmup_clt_range[1]=14  # -28.8 C
warmup_clt_range[2]=28  # -17.7 C
warmup_clt_range[3]=3C  #  -6.6 C
warmup_clt_range[4]=50  #   4.4 C
warmup_clt_range[5]=64  #  15.5 C
warmup_clt_range[6]=78  #  26.6 C
warmup_clt_range[7]=8C  #  37.7 C
warmup_clt_range[8]=AA  #  54.4 C
warmup_clt_range[9]=C8  #  71.1 C

# warmup_clt is the value of each bin defined in warmup_clt_range
# this is the actual warmup enrichment. 
# Values biased at 100; these are additions to current enrichments.
warmup_clt[0]=A0
warmup_clt[1]=A0
warmup_clt[2]=A0
warmup_clt[3]=A0
warmup_clt[4]=A0
warmup_clt[5]=96
warmup_clt[6]=8C
warmup_clt[7]=87
warmup_clt[8]=7D
warmup_clt[9]=64

# Warmup enrichment as function of RPM
# At the last RPM bin r[], apply this percentage 
# of warmup_clt[x]-100.
# Just above cranking RPM, 100% is applied.
# Linear interpolation is used between just 
# above cranking and highest rpm.
# Use 0xFF for full warmup enrichment at all RPM.
# Recommended: E0 .. F0
# F0=240/256=94% 
# below C0 (75%) is not recommended
warmup_rpm_scale=F0


#############################################################
#
# EGO (Exhaust Gas Oxygen) Setup 
#
#
# Need valid values for this variable
# Use ego_conf=20 for narrow band O2 sensor control?
# Use ego_conf=01 for PID control?
# Every one else using ego_conf=07
ego_conf=07

# EGO Resolution
# Minimum recognized change in EGO value
# 0x01=0.4%
# eg 0x02=0.8%
ego_delta=02 

# Minimum time between correction factor changes
# Measured in engine cycles
# 0x01=1 engine cycle
ego_lag=03

# Minimum coolant temperature for EGO enabling [F]
# eg. 0xC2 = 194 degF (108degC)
ego_coolant=92

# Maximum TPS position for EGO correction
# 0xFF=100% open (WOT)
ego_maxtps=FF

# Maximum MAP for O2 correction
# 0x01=2kPa
ego_maxmap=FF

# Minimum rpm for ego enabling
# Ignore all EGO information below this RPM
# 0x01=100rpm
# eg 0x0C=1200rpm
ego_minrpm=08

# Maximum rpm for EGO correction
# 0x01=100rpm
# eg 0x4B=7500rpm
ego_maxrpm=FF

# Warmup time
# 0x01=1 sec
# eg 0x3C=60 sec
ego_warmup=3C

# Maximum allowed enleanment of AFR
# 0x01=0.4%
# eg 0x30=19.2%
ego_lean_limit=30 

# Maximum allowed enrichment of AFR
# 0x01=0.4%
# eg 0x80=51.2%
ego_rich_limit=30


#############################################################
#
# WBO2
#
#
# Wideband O2 heater warm-up ramp speed
# 0x01=0.0032V/sec
# eg 0x3F=0.2V/sec
wbo2_warmup_ramp=E8

# Heater absolute voltage limit
# eg 0x2A=12V
# eg 0xFF=30V
wbo2_abs_limit=E4

# Max time allowed at absolute voltage limit
# in milliseconds
# 0x01=1ms
# eg A0=160ms
wbo2_limit_maxt=A0

# Fall back voltage after max time spent at absolute limit
# 1C=10V, 2A=12V, FF=30V
wbo2_fallback=60

# Time before retrying control:
# 0x01=4 sec
# eg 0x3B=59 seconds
wbo2_retry_t=03

# Edgetime correction constant C/R
# EVERYONE HAS wbo2_edgetime_corr=BA, SHOULD THIS BE ADJUSTABLE?
wbo2_edgetime_corr=BA

# Gate for small edgetimes
# Any reading less than this is ignored
# 0x01=0.5usec
# 0x50=40.0usec
wbo2_edgetime_min=50

# O2 percentage of 'normal' air: 20.947%, calibrated to 20.95
# WARNING: Sensor dependent. Every single sensor is different!
# For verification, also measure (and write here) sensor RCal (DVM Ohmmeter mode)
# between red wire and connector pin that has no wire towards the sensor (pins 2 and 6).
# The RCal lives in sensor connector housing.
# Typical reading is between 80 and 180 ohms.
#
# Rcal(ohms)  wbo2_calibration starting point
# 30          		0x00
# 50          		0x3C
# 70          		0x66
# 90          		0x85
# 110         		0x9D
# 130         		0xB0
# 200         		0xDC
# 300         		0xFC
#
# Rcal=127 ohm, wbo2_calibration=B0
# 0xB0 gives free air reading of 1850
# 0xD0 gives free air reading of 2000-2020
# 0xD2 = 2010-2030
wbo2_calibration=E0

# wbo2_pump_pw_zero:
# Pump zero duty cycle.
# Adjust to get pump+ close (within 0.1V if pump+ connection open) to pump-.
# Pump- is appr. 3.98V
# 5V/256 (?)
#
# default: wbo2_pump_pw_zero=0x66
#
#0x65=0.71V
#0x64=0.24V
#0x63=-0.064V
#0x62=-0.335V
wbo2_pump_pw_zero=63

# WBO2 target Ri (pulse amplitude)
# 0x01=5V/4096
wbo2_ri_target=96 

# OPA amplification, g = 270/75 + 1 = 4.6
# Vadc = g * (5 - Vnernst)
#
# Vnernst DC at sensor wire = 4.45V 
# Vnernst DC at adc = 4.6 * (5 - 4.45) = 2.53
# nernstdc_target = Vadc / g * 256 = 141 = 0x8D
# WBO2 target nernstDC
# 0x01=5V/256
# 0x01=20mV
# eg
# 0x66=2.04V
# 0x66=102 decimal
# 102*20mV=2.04V
wbo2_nernstdc_target=8D

# wbo2_ri_confidence_scale:
# Ri confidence scaling factor.
# s^2 < 255/scale
#
wbo2_ri_confidence_scale=80

wbo2_warmup_target=FF
wbo2_heater_pid_kp=46
wbo2_heater_pid_ki=10
wbo2_heater_pid_kd=1A
wbo2_heater_pid_ilimit=80
wbo2_pump_pid_kp=30
wbo2_pump_pid_ki=80 
wbo2_pump_pid_kd=00
wbo2_pump_pid_ilimit=80


#############################################################
#
#  Knock Detection and correction
#  2-channel knock sensor control
# 
#  Not currently used, mechanical lifter head makes too much noise
# 	f_knock = 900 / (pi*r) = 900 / (pi * 0.5 * 0.083) = 6.903 kHz 
# 	from datasheet tpic801.pdf page 10 table#1
# 	bandpass frequency selection 6.94 kHz is closest to 6.903 kHz
# 	filter setting = 29 hex (41 dec)

# Overall System Settings
# Knock selection
knock_conf=00
knock_sampling_window=FF

# Use knock sensing in this RPM range
# FF for both means no knock sensing/control
knock_minrpm=FF
knock_maxrpm=FF

# Channel #1 setup
knock1_frequency=29
knock1_gain=FF
knock1_integrator=FF

# Channel #2 setup
knock2_frequency=29
knock2_gain=FF
knock2_integrator=FF

# Trigger level
knock_threshold=FF
knock_noise_scale=FF

# Ignition effects
#
# Knock getting louder
knock_max_retard=FF
knock_default_retard=00
knock_retard_step=FF
knock_retard_delay=FF

# Knock getting softer
knock_advance_step=FF
knock_advance_delay=FF



#############################################################
#
# VE learning
#
# Some basic comments:
#   VE Learning can adjust a loadsite that is visited 
#   but not a neighboring loadsite that is rarely visited causing 
#   peaks and valleys in the VE (j[]) map that will need smoothed
#
#   EGO correction is transferred across loadsites for fast loadsite-changes 
#   (that happens, especially in kPa direction)
# 
# VE Learning Enable/Disable
# Use ve_learn_conf=00 to Disable
# Use ve_learn_conf=01 to Enable
ve_learn_conf=01

# Minimum coolant temp for learning to be enabled.
# This should be set to a temperature above where
# warmup enrichments are used.
# 0x00=-40F
# 0xFF=215F
ve_learn_coolant=D8

# VE Learning speeds
# Higher number means more agressive changes
ve_learn_rpm_scale=1E
ve_learn_kpa_scale=1E
ve_learn_ego_scale=43
ve_learn_speed=FF
ve_learn_max_power=FF

# ve_learn_min_weight:
# Minimum weight for modifying VE entry
ve_learn_min_weight=4D

# ve_learn_limit:
# Max deviation from reference VE bin
# 0x01=0.4%
ve_learn_limit=FF
#
#############################################################


#############################################################
#
# Triggers
#
# Primary_Trigger 
#
# NEED LIST OF VALID VALUES AND APPLICATIONS HERE
# FE: Rising Edge trigger
# FF: Falling Edge trigger
# 01: Multi-tooth wheel configuration
primary_trigger=01

# tooth_wheel:
# Used for multi-tooth wheels
# Total number of teeth on wheel
# eg For 60-2 wheel, 58 teeth = 3A
# eg For 36-1 wheel, 35 teeth = 23
tooth_wheel=23

# tooth_wheel_twidth1:
# width (in degrees) of each tooth 
# eg For 36-1 wheel, each tooth is 10 degrees = 0A
# eg For Rising edge coil type, angular width of 'window'
tooth_wheel_twidth1=0A

# trigger_tooth:
# Tooth that triggers event (Used for multi-tooth wheels)
# Usually first tooth after missing tooth is selected.
# Counting from missing tooth, where missing tooth=00.
# If using wheel (eg 60-2) with >1 missing tooth, 1st missing
# tooth is 00, second is 01; first tooth after missing teeth=02.
trigger_tooth=07

# Secondary_Trigger
# FE: Rising Edge trigger
# FF: Falling Edge trigger
# 01: Multi-tooth configuration
# 1D: Rising edge, enable, enable filtering, coil type, cam sync, single edge
secondary_trigger=02

# another_trigger_tooth:
# Trigger tooth for secondary trigger device.
# 06 (decimal 06) halves the 12-1 (2 events per crankrot for 4 cyl) - JoseLCortes
# 1E (decimal 30) halves the 60-2 (2 events per crankrot for 4 cyl)
# 14 (decimal 20) 1/3-ds the 60-2 (3 events per crankrot for 6 cyl)
another_trigger_tooth=12

# width (in degrees) of each tooth 
# eg For 36-1 wheel, each tooth is 10 degrees = 0A
# eg For Rising edge coil type, angular width of 'window'
# JoseLCortes: F0 #angular width of missing tooth
tooth_wheel_twidth2=06

toothrel_missing=FF
toothrel_normal=FF

# Minimum crank period
# Triggers before this amount of time are
# considered errors.
# Be sure to consider your max rpm (rev_limit) when
# calculating crank_minper.
# 0x01=0.16ms
# eg 0x50=12.8ms
crank_minper=50

# cam_sync settings:
###################################
# JoseLCortes:
# Cam trigger goes high 90 degrees BTDC on cylinder 1 compression stroke
# This results in the 0->1 trigger 20 crank degrees before the trigger_tooth (70 BTDC)
# Cylinder 1 start of intake stroke is defined as phase==0
# A) cyl 1 start of intake:        0 degrees, phase=0
# B) cyl 1 start of compression: 180 degrees, phase=60
# C) cyl 1 start of combustion:  360 degrees, phase=120 , trigger at 104
# D) cyl 1 start of exhaust:     540 degrees, phase=180
# 0->1 cam trigger arrives between B and C, thus cam_sync_r_edge_phase = 104 (dec)
# cam_sync_r_edge_phase=68
#
cam_sync_r_edge_phase=FF

#################################
# The 1->0 trigger arrives 180 cam degrees apart, 
# thus cam_sync_f_edge_phase = (87+216/2)%216 = 33 (dec)
#
cam_sync_f_edge_phase=FF

##################################
# reset_engphase_after == 2 [revolutions] * ( (12-2) * tooth_wheel_twidth1 + 2 * tooth_wheel_twidth2 )
# 240 = 2 * ( 10*10 + 2*10 ) 
#
reset_engphase_after=D8
#
#############################################################


#************************************************************
# mcell's Trigger setup, 60-1 vr
# Triggers, HW determines VR or Hall
#
# Primary  Trigger
#primary_trigger=01
#tooth_wheel=3A
#trigger_tooth=10
# Secondary  Trigger
#secondary_trigger=FF
#another_trigger_tooth=1E
#crank_minper=50
#tooth_wheel_twidth1=06
#tooth_wheel_twidth2=12
#cam_sync_r_edge_phase=FF
#cam_sync_f_edge_phase=FF
#reset_engphase_after=FF
#
#************************************************************


#############################################################
#
# Ignition
#
# Rev limiter
# Fuel and spark are cut above rev_limit rpm
# 0x01=100 rpm
# eg 0x4B=7500 rpm
rev_limit=4B

# Distance (in degrees) from first tooth after missing tooth to cylinder #1 TDC
# 0x01=0.5 degrees
# eg 0xF0=120 degrees
# 62 degrees = 120 (from missing tooth) - 48 (trigger tooth * 6) 
ign_tdcdelay=78

# Dwell 
# Dwell settings for 14V and 6V
# 0x01=0.64ms
# eg 0x14=
ign_dwell14=14

# 0x01=0.27ms
ign_dwell6=1E

# Ignition advance at cranking
# 0x01=0.25 degrees (at crank)
# eg 0x20=8 degrees 
ign_crank_advance=20 

# Dummy ignition with inverted output
# 0x01=???
# eg 0x70=???
# 0xFF=Disable ignition output
ign_out=70

# Highest indexed ignition coil to trigger
# At least 0..ignchmax index of h[2] must be filled in
# eg1 h[2] =     05 07 05 07 00 00 00 00
# eg1 ignchmax = 03
ignchmax=07

# Cease ignition after engine_off_delay
# TIMEUNITS?
# 0x01=???
# eg 0x08=?
engine_off_delay=08
#
#############################################################


#############################################################
#
# Fuel Pump Control 
#

# TURN OFF PUMP AFTER pump_on_mintime TIME UNITS
# 0x01=???
# eg 0x0F=???s
pump_on_mintime=0F

# Free injector driver drives the fuelpump relay?
# If no free injector driver, select another channel (eg. from P259) or set last element of h[0]
# FF=Auto-shutoff disable (not recommended, dangerous)
fuelpump_channel=00


#############################################################
#
# Second stage of injectors
# Not used
#
inj_stage2_rate=FF
inj_stage2_start_tps=FF
inj_stage2_start_map=FF
#
#############################################################


#############################################################
#
# Anti-lag system
# Not used
#
als_lowrpm=FF
als_maxtps=FF
als_ignretard=FF
als_rich=FF
als_rev_limit=FF
#
#############################################################


#############################################################
#
# Exhaust Gas Temperature
# 48..4B are typical values for Celsius output, 
# calibrate with DVM so that:
# EGT reading is around: Tchip + 25C/mV * UinputmV 
# Tchip=25C
# 25C/mV is the same as 40uV/C that is characteristic of K-thermocouple
# UinputmV is the mV signal measured between green(+) and white(-) signals ( K-thermocouple wires during operation)
egt1_cal=4A
egt1_offs=00
#
#############################################################


#############################################################
#
# Boost Controller
# Not used

boost_conf=00
boost_targetoffs=00
boost_minpressure=FF
boost_pid_kp=20
boost_pid_ki=80
boost_pid_kd=01
boost_pid_ilimit=FF
boost_channel=00
#
#############################################################


#############################################################
#
# Water pump Controller
# Not used

water_pump_temp=00

water_pump_hyst=00
water_pump_channel=00
#
#############################################################


#############################################################
#
# Auxillary outputs (WOT and RPM, WOT, RPM, channel definition)
#
# Use 0xFF to disable outputs
#
# Aux 1 output
misc1out_minrpm=28
misc1out_maxrpm=48
misc1out_mintps=FF
misc1out_maxtps=FF
misc1out_minmap=00
misc1out_maxmap=FF
misc1out_channel=00 

###################
#
# Aux 2 output
#
misc2out_minrpm=46
misc2out_maxrpm=FF
misc2out_mintps=00
misc2out_maxtps=FF
misc2out_minmap=00
misc2out_maxmap=FF
misc2out_channel=00 

###################
#
# Aux 3 output
#
act_wot_rpm=FF
act_wot_channel=00

###################
#
# Aux 4 output
#
act_rpm_rpm=4B 
act_rpm_channel=00 
#
#############################################################



#############################################################
#
# LCD layout
#
# A better description would definately be helpful
# TODO: wiki page reference
lcd_c0=FE
lcd_delay=FF
lcd_backlight=FF
lcd_offs[0]=FF
lcd_offs[1]=FF
lcd_offs[2]=FF
lcd_offs[3]=FF
lcd_default_view=00
#
#############################################################


#############################################################
#
# RPM Calculation
#
# eg 0x0BB8 = 3000 = 12000 rpm/4 cyl
# 4 cylinder: rpmk[0]=0B, rpmk[1]=B8
# 5 cylinder: rpmk[0]=09, rpmk[1]=60
# 6 cylinder: rpmk[0]=07, rpmk[1]=D0
# 8 cylinder: rpmk[0]=05, rpmk[1]=DC
rpmk[0]=0B   
rpmk[1]=B8
#
#############################################################


#############################################################
# 
# DO NOT CHANGE for a 4cyl
# These will be different for 5,6,8 or 12 cyl
# (useful descriptions are left over from Megasquirt)
config11=30   # old config 31
config12=30   # 4 cylinders
config13=02   # old config 00
mt_unused=FF
#
#############################################################


##############################################################
#
# Air mass calculation method
#
# Use 0x00 for speed density control at all RPM (recommended)
hybrid_rpm_a=00
hybrid_rpm_m=00
#
#############################################################


##################################################################################################
#
# Don't touch stuff below here
#
ego_pid_kp=40

# not used for the wbo2 incredible ego, only for NBO2_PID_EGO_EXPERIMENT
ego_pid_window=FF

# Narrow band O2 sensor target voltage
# ego_target = 51 * O2_sensor_voltage
ego_target=19
# wbo2_warmup_target:
# UNUSED

# max authority of I term is: wbo2_pump_pid_ki * wbo2_pump_pid_ilimit 
# note that lower wbo2_pump_pid_ilimit means faster operation

##############################################

# VE table values

# j[0]->j[9] = low kPa values->high kPa values

# j[]=low rpm->high rpm

#
#############################################
#

j[0]=42 47 4E 51 50 4C 48 44

j[1]=43 49 50 53 52 4E 4A 46

j[2]=47 4D 54 58 57 53 4F 4B

j[3]=49 4F 57 5A 59 55 51 4D

j[4]=4D 53 5B 5F 5E 59 55 51

j[5]=4F 55 5D 61 60 60 56 52

j[6]=53 59 62 66 65 60 5B 56

j[7]=55 5B 64 68 67 68 5D 58





##############################################

# Lambda table values

# Matches VE table w/respect to rpm/kPa values

#
#############################################
l[0]=63 59 45 43 41 43 45 45

l[1]=63 4F 45 43 41 43 45 45

l[2]=63 4F 43 43 41 41 43 45

l[3]=65 4F 43 43 41 41 43 45

l[4]=65 4F 43 41 3F 3F 41 45

l[5]=65 51 43 41 41 41 43 45

l[6]=65 53 45 43 43 43 43 45

l[7]=67 55 45 45 43 45 49 4B





##############################################

# kPa map points, low->high

#
##############################################

k[0]=32 37 41 46 50 55 5F 64





##############################################

# RPM map points, low->high

#
#############################################
#

r[0]=08 0D 17 22 2C 36 41 4B





##############################################

# Ignition table

# Matches VE table w/respect to rpm/kPa values

# 0x01=0.25 crank degrees after top dead center

#
#############################################
#

n[0]=3C 3C 50 77 A0 B4 B4 B4

n[1]=3C 3C 50 78 A0 B1 B2 B1

n[2]=3C 3C 50 77 99 AA AB A9

n[3]=3C 3C 50 76 95 A1 A2 A1

n[4]=3C 3C 50 75 8D 99 9B 9A

n[5]=3C 3C 50 6F 83 8E 8F 8F

n[6]=3C 3C 50 67 7A 81 83 84

n[7]=3C 3C 50 5F 6F 78 78 78





##############################################

# Injector firing sequence

# Read from right to left

#
#############################################
#

h[0]= 01 02 08 10 00 00 00 00





##############################################

# Coil firing sequence

# Read from right to left

#
#############################################
#

# DR_00[h[2] = 00, EC36p35]

# DR_01[h[2] = 01, EC36p33]

# DR_02[h[2] = 02, EC36p34]

# DR_03[h[2] = 03, EC36p36]

#

# EC36p35 is 0 (mdh02/mdh82)

# EC36p33 is 1 (mdh12/mdh92)

#

# Firing order=1-3-4-2

#
#############################################

h[2]=00 01 00 01 00 01 00 01








#############################################
#

# Boost control points

# MAP pressure target based on RPM map points

# Low rpm->high rpm

#
#############################################
#

b[0]=00 00 00 00 00 00 00 00




##############################################

# Boost reduction as a function of
# TPS position.

# Values are percentages of normal boost at

# RPM map points.

#
#############################################
#

t[0]=00 00 00 00 00 00 00 00


h[1]=00 00 00 00 00 00 00 00