From dd9941ce5d5ca3e52ced5c218691a53c09ebf0d1 Mon Sep 17 00:00:00 2001 From: Josh Stewart Date: Fri, 12 Jan 2018 14:04:43 +1100 Subject: [PATCH] Introduce end-of-line normalization --- .gitattributes | 18 + .gitignore | 2 +- .../hardware/VR Conditioner/BOM/Bom-pcbng.csv | 28 +- .../VR Conditioner/BOM/Bom-seeedstudio.csv | 14 +- .../hardware/VR Conditioner/rounded_pcb.svg | 20 +- reference/speeduino.ini | 4978 ++++++++--------- ...{boost_settings.png => boost_settings.PNG} | Bin speeduino/comms.ino | 2 +- speeduino/globals.h | 2 +- speeduino/speeduino.ino | 2 +- speeduino/timers.ino | 2 +- 11 files changed, 2543 insertions(+), 2525 deletions(-) create mode 100644 .gitattributes rename reference/wiki/accessories/{boost_settings.png => boost_settings.PNG} (100%) diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..2f709938 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,18 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +*.ino text eol=lf +*.h text eol=lf +*.c text eol=lf +*.ini test eol=lf +*.msq test eol=lf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.dll binary +*.fzz binary +*.xls binary + + +*.pdf -text diff --git a/.gitignore b/.gitignore index db81b8c3..03a043d1 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,4 @@ reference/hardware/v0.4/gerbers/Archive.zip .project .vscode .build -.bak +.kicad_pcb-bak diff --git a/reference/hardware/VR Conditioner/BOM/Bom-pcbng.csv b/reference/hardware/VR Conditioner/BOM/Bom-pcbng.csv index a63636b8..b18e1a0f 100644 --- a/reference/hardware/VR Conditioner/BOM/Bom-pcbng.csv +++ b/reference/hardware/VR Conditioner/BOM/Bom-pcbng.csv @@ -1,15 +1,15 @@ -Part/Designator,Manufacture Part Number -R3,RC0805FR-071KL -R5,RC0805FR-071KL -R4,RC0805JR-0710KL -R6,RC0805JR-0710KL -R7,RC0805JR-0710KL -R9,RC0805JR-0710KL -R11,RC0805JR-0710KL -R13,RC0805JR-0710KL -MAX9926,MAX9926UAEE+T -C2,CC0805KRX7R9BB103 -C3,CC0805KKX7R7BB105 -C4,CC0805KRX7R9BB102 -C5,CC0805KRX7R9BB102 +Part/Designator,Manufacture Part Number +R3,RC0805FR-071KL +R5,RC0805FR-071KL +R4,RC0805JR-0710KL +R6,RC0805JR-0710KL +R7,RC0805JR-0710KL +R9,RC0805JR-0710KL +R11,RC0805JR-0710KL +R13,RC0805JR-0710KL +MAX9926,MAX9926UAEE+T +C2,CC0805KRX7R9BB103 +C3,CC0805KKX7R7BB105 +C4,CC0805KRX7R9BB102 +C5,CC0805KRX7R9BB102 C1,CC0805ZRY5V9BB104 \ No newline at end of file diff --git a/reference/hardware/VR Conditioner/BOM/Bom-seeedstudio.csv b/reference/hardware/VR Conditioner/BOM/Bom-seeedstudio.csv index 9133f6dd..806ca63c 100644 --- a/reference/hardware/VR Conditioner/BOM/Bom-seeedstudio.csv +++ b/reference/hardware/VR Conditioner/BOM/Bom-seeedstudio.csv @@ -1,8 +1,8 @@ -Part/Designator,Manufacture Part Number,Quantity -"R3,R5",RC0805FR-071KL,2 -"R4,R6,R7,R9,R11,R13",RC0805JR-0710KL,6 -MAX9926,MAX9926UAEE+T,1 -C2,CC0805KRX7R9BB103,1 -C3,CC0805KKX7R7BB105,1 -"C4,C5",CC0805KRX7R9BB102,2 +Part/Designator,Manufacture Part Number,Quantity +"R3,R5",RC0805FR-071KL,2 +"R4,R6,R7,R9,R11,R13",RC0805JR-0710KL,6 +MAX9926,MAX9926UAEE+T,1 +C2,CC0805KRX7R9BB103,1 +C3,CC0805KKX7R7BB105,1 +"C4,C5",CC0805KRX7R9BB102,2 C1,CC0805ZRY5V9BB104,1 \ No newline at end of file diff --git a/reference/hardware/VR Conditioner/rounded_pcb.svg b/reference/hardware/VR Conditioner/rounded_pcb.svg index 7d7ad3f1..d5095a37 100644 --- a/reference/hardware/VR Conditioner/rounded_pcb.svg +++ b/reference/hardware/VR Conditioner/rounded_pcb.svg @@ -1,10 +1,10 @@ - - - - - - - - - + + + + + + + + + diff --git a/reference/speeduino.ini b/reference/speeduino.ini index 4ea46a99..04ad75ea 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -1,2489 +1,2489 @@ -;------------------------------------------------------------------------------- -#unset CAN_COMMANDS -#unset enablehardware_test - -[MegaTune] - MTversion = 2.25 - - queryCommand = "Q" - signature = "speeduino 201801-dev" - versionInfo = "S" ;This info is what is displayed to user - -[TunerStudio] - iniSpecVersion = 3.46 - -;------------------------------------------------------------------------------- - -[SettingGroups] - ; the referenceName will over-ride previous, so if you are creating a - ; settingGroup with a reference name of lambdaSensor, it will replace the - ; setting group defined in the settingGroups.xml of the TunerStudio config - ; folder. If is is an undefined referenceName, it will be added. - ; keyword = referenceName, DisplayName - - ;settingGroup = boostUnits, "Boost table units" - ;settingOption = DEFAULT, "kPa" - ;settingOption = BOOSTPSI, "PSI" - settingGroup = enablehardware_test, "Enable Hardware Test Page" - - -[PcVariables] - ; valid types: boolean, double, int, list - ; - ; no offset as they are local variables. - ; entry format the same as Constants, except there is no offset. - ; arrays are not yet supported. - ; name = class, type, shape, units, scale, translate, lo, hi, digits - ; name = type, min, max; - ; - ; type List: value will be index. - tsCanId = bits, U08, [0:3], "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" - rpmhigh = scalar, U16, "rpm", 1, 0, 0, 30000, 0 - rpmwarn = scalar, U16, "rpm", 1, 0, 0, 30000, 0 - rpmdang = scalar, U16, "rpm", 1, 0, 0, 30000, 0 - - idleUnits = bits, U08, [0:2], "None", "On/Off", "Duty Cycle", "Duty Cycle", "Steps", "Steps" - -[Constants] - - ;---------------------------------------------------------------------------- - ; Constants Definition - ; -------------------- - ; - ; Scalar Values - ; ------------- - ; The scaling and translation values are used as follows: - ; msValue = userValue / scale - translate - ; userValue = (msValue + translate) * scale - ; - ; - ; Temperatures are fine, check out the Fielding IAC example (fastIdleT). - ; - ; Array Values - ; ------------ - ; Arrays are specified just like scalars, except that they have a "shape" - ; entry in the fourth parameter. The shape allows you to define lists or - ; tables, for example [8] defines a list with eight values and [2x4] defines - ; a table with eight values (two rows and four columns). Tables may be - ; stored in either "X-" or "Y-order." X-order means that memory is layed - ; out like. - ; - ; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]... - ; - ; Y-order would be - ; - ; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]... - ; - ; To use the TableEditor, you must define two lists and a table, and - ; the lengths of the lists must correspond to the shape of the table. - ; - ; Bit Fields - ; ---------- - ; Bits are numbered 0-7, the rightmost being bit zero. The basic - ; data word that stores bit fields must be unsigned. - ; - ; You need NOT supply the correct number of labels matching the - ; number of bits you've specified (one bit requires 2 values, two - ; bits requires 4 values and so on). If you neglect to supply enough - ; labels, they will be synthesized using the sequence "1", "2" and so - ; on based upon their position in the sequence (the cltType and matType - ; will end up with identical lists). - ; - ; If you specify a label as "INVALID" (all upper case), then it will - ; not be displayed in the combo box, so you can leave out values that - ; make no sense. - ; - ;---------------------------------------------------------------------------- - - endianness = little - nPages = 10 - pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192 - - ;burnCommand = "B" - ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" - ;pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" - ;pageValueWrite = "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" - - ; New commands - ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 128, 192 - pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A" - burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" - pageReadCommand = "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v" - pageValueWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" - pageChunkWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" - - blockingFactor = 2048 - tableBlockingFactor = 2048 - delayAfterPortOpen=1000 - ;validateArrayBounds = true - blockReadTimeout = 2000 - ;tsWriteBlocks = on - interWriteDelay = 5 ;Ignored when tsWriteBlocks is on - pageActivationDelay = 10 - -;New for TS 3.0.08ish upwards, define lists of standard I/O options - - #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - - #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" - #define CAN_ADDRESS_HEX_inv255 = $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT10inv, "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #define CAN_ADDRESS_HEX_00XX = "INVALID", "0x001", "0x002", "0x003", "0x004", "0x005", "0x006", "0x007", "0x008", "0x009", "0x00A", "0x00B", "0x00C", "0x00D", "0x00E", "0x00F", "0x010", "0x011", "0x012", "0x013", "0x014", "0x015", "0x016", "0x017", "0x018", "0x019", "0x01A", "0x01B", "0x01C", "0x01D", "0x01E", "0x01F", "0x020", "0x021", "0x022", "0x023", "0x024", "0x025", "0x026", "0x027", "0x028", "0x029", "0x02A", "0x02B", "0x02C", "0x02D", "0x02E", "0x02F", "0x030", "0x031", "0x032", "0x033", "0x034", "0x035", "0x036", "0x037", "0x038", "0x039", "0x03A", "0x03B", "0x03C", "0x03D", "0x03E", "0x03F", "0x040", "0x041", "0x042", "0x043", "0x044", "0x045", "0x046", "0x047", "0x048", "0x049", "0x04A", "0x04B", "0x04C", "0x04D", "0x04E", "0x04F", "0x050", "0x051", "0x052", "0x053", "0x054", "0x055", "0x056", "0x057", "0x058", "0x059", "0x05A", "0x05B", "0x05C", "0x05D", "0x05E", "0x05F" ,"0x060", "0x061", "0x062", "0x063", "0x064", "0x065", "0x066", "0x067", "0x068", "0x069", "0x06A", "0x06B", "0x06C", "0x06D", "0x06E", "0x06F", "0x070", "0x071", "0x072", "0x073", "0x074", "0x075", "0x076", "0x077", "0x078", "0x079", "0x07A", "0x07B", "0x07C", "0x07D", "0x07E", "0x07F", "0x080", "0x081", "0x082", "0x083", "0x084", "0x085", "0x086", "0x087", "0x088", "0x089", "0x08A", "0x08B", "0x08C", "0x08D", "0x08E", "0x08F" ,"0x090", "0x091", "0x092", "0x093", "0x094", "0x095", "0x096", "0x097", "0x098", "0x099", "0x09A", "0x09B", "0x09C", "0x09D", "0x09E", "0x09F", "0x0A0", "0x0A1", "0x0A2", "0x0A3", "0x0A4", "0x0A5", "0x0A6", "0x0A7", "0x0A8", "0x0A9", "0x0AA", "0x0AB", "0x0AC", "0x0AD", "0x0AE", "0x0AF", "0x0B0", "0x0B1", "0x0B2", "0x0B3", "0x0B4", "0x0B5", "0x0B6", "0x0B7", "0x0B8", "0x0B9", "0x0BA", "0x0BB", "0x0BC", "0x0BD", "0x0BE", "0x0BF" ,"0x0C0", "0x0C1", "0x0C2", "0x0C3", "0x0C4", "0x0C5", "0x0C6", "0x0C7", "0x0C8", "0x0C9", "0x0CA", "0x0CB", "0x0CC", "0x0CD", "0x0CE", "0x0CF", "0x0D0", "0x0D1", "0x0D2", "0x0D3", "0x0D4", "0x0D5", "0x0D6", "0x0D7", "0x0D8", "0x0D9", "0x0DA", "0x0DB", "0x0DC", "0x0DD", "0x0DE", "0x0DF", "0x0E0", "0x0E1", "0x0E2", "0x0E3", "0x0E4", "0x0E5", "0x0E6", "0x0E7", "0x0E8", "0x0E9", "0x0EA", "0x0EB", "0x0EC", "0x0ED", "0x0EE", "0x0EF" ,"0x0F0", "0x0F1", "0x0F2", "0x0F3", "0x0F4", "0x0F5", "0x0F6", "0x0F7", "0x0F8", "0x0F9", "0x0FA", "0x0FB", "0x0FC", "0x0FD", "0x0FE", "0x0FF" - #define CAN_ADDRESS_HEX_01XX = "0x100", "0x101", "0x102", "0x103", "0x104", "0x105", "0x106", "0x107", "0x108", "0x109", "0x10A", "0x10B", "0x10C", "0x10D", "0x10E", "0x10F", "0x110", "0x111", "0x112", "0x113", "0x114", "0x115", "0x116", "0x117", "0x118", "0x119", "0x11A", "0x11B", "0x11C", "0x11D", "0x11E", "0x11F", "0x120", "0x121", "0x122", "0x123", "0x124", "0x125", "0x126", "0x127", "0x128", "0x129", "0x12A", "0x12B", "0x12C", "0x12D", "0x12E", "0x12F", "0x130", "0x131", "0x132", "0x133", "0x134", "0x135", "0x136", "0x137", "0x138", "0x139", "0x13A", "0x13B", "0x13C", "0x13D", "0x13E", "0x13F", "0x140", "0x141", "0x142", "0x143", "0x144", "0x145", "0x146", "0x147", "0x148", "0x149", "0x14A", "0x14B", "0x14C", "0x14D", "0x14E", "0x14F", "0x150", "0x151", "0x152", "0x153", "0x154", "0x155", "0x156", "0x157", "0x158", "0x159", "0x15A", "0x15B", "0x15C", "0x15D", "0x15E", "0x15F" ,"0x160", "0x161", "0x162", "0x163", "0x164", "0x165", "0x166", "0x167", "0x168", "0x169", "0x16A", "0x16B", "0x16C", "0x16D", "0x16E", "0x16F", "0x170", "0x171", "0x172", "0x173", "0x174", "0x175", "0x176", "0x177", "0x178", "0x179", "0x17A", "0x17B", "0x17C", "0x17D", "0x17E", "0x17F", "0x180", "0x181", "0x182", "0x183", "0x184", "0x185", "0x186", "0x187", "0x188", "0x189", "0x18A", "0x18B", "0x18C", "0x18D", "0x18E", "0x18F" ,"0x190", "0x191", "0x192", "0x193", "0x194", "0x195", "0x196", "0x197", "0x198", "0x199", "0x19A", "0x19B", "0x19C", "0x19D", "0x19E", "0x19F", "0x1A0", "0x1A1", "0x1A2", "0x1A3", "0x1A4", "0x1A5", "0x1A6", "0x1A7", "0x1A8", "0x1A9", "0x1AA", "0x1AB", "0x1AC", "0x1AD", "0x1AE", "0x1AF", "0x1B0", "0x1B1", "0x1B2", "0x1B3", "0x1B4", "0x1B5", "0x1B6", "0x1B7", "0x1B8", "0x1B9", "0x1BA", "0x1BB", "0x1BC", "0x1BD", "0x1BE", "0x1BF" ,"0x1C0", "0x1C1", "0x1C2", "0x1C3", "0x1C4", "0x1C5", "0x1C6", "0x1C7", "0x1C8", "0x1C9", "0x1CA", "0x1CB", "0x1CC", "0x1CD", "0x1CE", "0x1CF", "0x1D0", "0x1D1", "0x1D2", "0x1D3", "0x1D4", "0x1D5", "0x1D6", "0x1D7", "0x1D8", "0x1D9", "0x1DA", "0x1DB", "0x1DC", "0x1DD", "0x1DE", "0x1DF", "0x1E0", "0x1E1", "0x1E2", "0x1E3", "0x1E4", "0x1E5", "0x1E6", "0x1E7", "0x1E8", "0x1E9", "0x1EA", "0x1EB", "0x1EC", "0x1ED", "0x1EE", "0x1EF" ,"0x1F0", "0x1F1", "0x1F2", "0x1F3", "0x1F4", "0x1F5", "0x1F6", "0x1F7", "0x1F8", "0x1F9", "0x1FA", "0x1FB", "0x1FC", "0x1FD", "0x1FE", "0x1FF" - #define CAN_ADDRESS_HEX_02XX = "0x200", "0x201", "0x202", "0x203", "0x204", "0x205", "0x206", "0x207", "0x208", "0x209", "0x20A", "0x20B", "0x20C", "0x20D", "0x20E", "0x20F", "0x210", "0x211", "0x212", "0x213", "0x214", "0x215", "0x216", "0x217", "0x218", "0x219", "0x21A", "0x21B", "0x21C", "0x21D", "0x21E", "0x21F", "0x220", "0x221", "0x222", "0x223", "0x224", "0x225", "0x226", "0x227", "0x228", "0x229", "0x22A", "0x22B", "0x22C", "0x22D", "0x22E", "0x22F", "0x230", "0x231", "0x232", "0x233", "0x234", "0x235", "0x236", "0x237", "0x238", "0x239", "0x23A", "0x23B", "0x23C", "0x23D", "0x23E", "0x23F", "0x240", "0x241", "0x242", "0x243", "0x244", "0x245", "0x246", "0x247", "0x248", "0x249", "0x24A", "0x24B", "0x24C", "0x24D", "0x24E", "0x24F", "0x250", "0x251", "0x252", "0x253", "0x254", "0x255", "0x256", "0x257", "0x258", "0x259", "0x25A", "0x25B", "0x25C", "0x25D", "0x25E", "0x25F" ,"0x260", "0x261", "0x262", "0x263", "0x264", "0x265", "0x266", "0x267", "0x268", "0x269", "0x26A", "0x26B", "0x26C", "0x26D", "0x26E", "0x26F", "0x270", "0x271", "0x272", "0x273", "0x274", "0x275", "0x276", "0x277", "0x278", "0x279", "0x27A", "0x27B", "0x27C", "0x27D", "0x27E", "0x27F", "0x280", "0x281", "0x282", "0x283", "0x284", "0x285", "0x286", "0x287", "0x288", "0x289", "0x28A", "0x28B", "0x28C", "0x28D", "0x28E", "0x28F" ,"0x290", "0x291", "0x292", "0x293", "0x294", "0x295", "0x296", "0x297", "0x298", "0x299", "0x29A", "0x29B", "0x29C", "0x29D", "0x29E", "0x29F", "0x2A0", "0x2A1", "0x2A2", "0x2A3", "0x2A4", "0x2A5", "0x2A6", "0x2A7", "0x2A8", "0x2A9", "0x2AA", "0x2AB", "0x2AC", "0x2AD", "0x2AE", "0x2AF", "0x2B0", "0x2B1", "0x2B2", "0x2B3", "0x2B4", "0x2B5", "0x2B6", "0x2B7", "0x2B8", "0x2B9", "0x2BA", "0x2BB", "0x2BC", "0x2BD", "0x2BE", "0x2BF" ,"0x2C0", "0x2C1", "0x2C2", "0x2C3", "0x2C4", "0x2C5", "0x2C6", "0x2C7", "0x2C8", "0x2C9", "0x2CA", "0x2CB", "0x2CC", "0x2CD", "0x2CE", "0x2CF", "0x2D0", "0x2D1", "0x2D2", "0x2D3", "0x2D4", "0x2D5", "0x2D6", "0x2D7", "0x2D8", "0x2D9", "0x2DA", "0x2DB", "0x2DC", "0x2DD", "0x2DE", "0x2DF", "0x2E0", "0x2E1", "0x2E2", "0x2E3", "0x2E4", "0x2E5", "0x2E6", "0x2E7", "0x2E8", "0x2E9", "0x2EA", "0x2EB", "0x2EC", "0x2ED", "0x2EE", "0x2EF" ,"0x2F0", "0x2F1", "0x2F2", "0x2F3", "0x2F4", "0x2F5", "0x2F6", "0x2F7", "0x2F8", "0x2F9", "0x2FA", "0x2FB", "0x2FC", "0x2FD", "0x2FE", "0x2FF" - #define CAN_ADDRESS_HEX_03XX = "0x300", "0x301", "0x302", "0x303", "0x304", "0x305", "0x306", "0x307", "0x308", "0x309", "0x30A", "0x30B", "0x30C", "0x30D", "0x30E", "0x30F", "0x310", "0x311", "0x312", "0x313", "0x314", "0x315", "0x316", "0x317", "0x318", "0x319", "0x31A", "0x31B", "0x31C", "0x31D", "0x31E", "0x31F", "0x320", "0x321", "0x322", "0x323", "0x324", "0x325", "0x326", "0x327", "0x328", "0x329", "0x32A", "0x32B", "0x32C", "0x32D", "0x32E", "0x32F", "0x330", "0x331", "0x332", "0x333", "0x334", "0x335", "0x336", "0x337", "0x338", "0x339", "0x33A", "0x33B", "0x33C", "0x33D", "0x33E", "0x33F", "0x340", "0x341", "0x342", "0x343", "0x344", "0x345", "0x346", "0x347", "0x348", "0x349", "0x34A", "0x34B", "0x34C", "0x34D", "0x34E", "0x34F", "0x350", "0x351", "0x352", "0x353", "0x354", "0x355", "0x356", "0x357", "0x358", "0x359", "0x35A", "0x35B", "0x35C", "0x35D", "0x35E", "0x35F" ,"0x360", "0x361", "0x362", "0x363", "0x364", "0x365", "0x366", "0x367", "0x368", "0x369", "0x36A", "0x36B", "0x36C", "0x36D", "0x36E", "0x36F", "0x370", "0x371", "0x372", "0x373", "0x374", "0x375", "0x376", "0x377", "0x378", "0x379", "0x37A", "0x37B", "0x37C", "0x37D", "0x37E", "0x37F", "0x380", "0x381", "0x382", "0x383", "0x384", "0x385", "0x386", "0x387", "0x388", "0x389", "0x38A", "0x38B", "0x38C", "0x38D", "0x38E", "0x38F" ,"0x390", "0x391", "0x392", "0x393", "0x394", "0x395", "0x396", "0x397", "0x398", "0x399", "0x39A", "0x39B", "0x39C", "0x39D", "0x39E", "0x39F", "0x3A0", "0x3A1", "0x3A2", "0x3A3", "0x3A4", "0x3A5", "0x3A6", "0x3A7", "0x3A8", "0x3A9", "0x3AA", "0x3AB", "0x3AC", "0x3AD", "0x3AE", "0x3AF", "0x3B0", "0x3B1", "0x3B2", "0x3B3", "0x3B4", "0x3B5", "0x3B6", "0x3B7", "0x3B8", "0x3B9", "0x3BA", "0x3BB", "0x3BC", "0x3BD", "0x3BE", "0x3BF" ,"0x3C0", "0x3C1", "0x3C2", "0x3C3", "0x3C4", "0x3C5", "0x3C6", "0x3C7", "0x3C8", "0x3C9", "0x3CA", "0x3CB", "0x3CC", "0x3CD", "0x3CE", "0x3CF", "0x3D0", "0x3D1", "0x3D2", "0x3D3", "0x3D4", "0x3D5", "0x3D6", "0x3D7", "0x3D8", "0x3D9", "0x3DA", "0x3DB", "0x3DC", "0x3DD", "0x3DE", "0x3DF", "0x3E0", "0x3E1", "0x3E2", "0x3E3", "0x3E4", "0x3E5", "0x3E6", "0x3E7", "0x3E8", "0x3E9", "0x3EA", "0x3EB", "0x3EC", "0x3ED", "0x3EE", "0x3EF" ,"0x3F0", "0x3F1", "0x3F2", "0x3F3", "0x3F4", "0x3F5", "0x3F6", "0x3F7", "0x3F8", "0x3F9", "0x3FA", "0x3FB", "0x3FC", "0x3FD", "0x3FE", "0x3FF" - #define CAN_ADDRESS_HEX_04XX = "0x400", "0x401", "0x402", "0x403", "0x404", "0x405", "0x406", "0x407", "0x408", "0x409", "0x40A", "0x40B", "0x40C", "0x40D", "0x40E", "0x40F", "0x410", "0x411", "0x412", "0x413", "0x414", "0x415", "0x416", "0x417", "0x418", "0x419", "0x41A", "0x41B", "0x41C", "0x41D", "0x41E", "0x41F", "0x420", "0x421", "0x422", "0x423", "0x424", "0x425", "0x426", "0x427", "0x428", "0x429", "0x42A", "0x42B", "0x42C", "0x42D", "0x42E", "0x42F", "0x430", "0x431", "0x432", "0x433", "0x434", "0x435", "0x436", "0x437", "0x438", "0x439", "0x43A", "0x43B", "0x43C", "0x43D", "0x43E", "0x43F", "0x440", "0x441", "0x442", "0x443", "0x444", "0x445", "0x446", "0x447", "0x448", "0x449", "0x44A", "0x44B", "0x44C", "0x44D", "0x44E", "0x44F", "0x450", "0x451", "0x452", "0x453", "0x454", "0x455", "0x456", "0x457", "0x458", "0x459", "0x45A", "0x45B", "0x45C", "0x45D", "0x45E", "0x45F" ,"0x460", "0x461", "0x462", "0x463", "0x464", "0x465", "0x466", "0x467", "0x468", "0x469", "0x46A", "0x46B", "0x46C", "0x46D", "0x46E", "0x46F", "0x470", "0x471", "0x472", "0x473", "0x474", "0x475", "0x476", "0x477", "0x478", "0x479", "0x47A", "0x47B", "0x47C", "0x47D", "0x47E", "0x47F", "0x480", "0x481", "0x482", "0x483", "0x484", "0x485", "0x486", "0x487", "0x488", "0x489", "0x48A", "0x48B", "0x48C", "0x48D", "0x48E", "0x48F" ,"0x490", "0x491", "0x492", "0x493", "0x494", "0x495", "0x496", "0x497", "0x498", "0x499", "0x49A", "0x49B", "0x49C", "0x49D", "0x49E", "0x49F", "0x4A0", "0x4A1", "0x4A2", "0x4A3", "0x4A4", "0x4A5", "0x4A6", "0x4A7", "0x4A8", "0x4A9", "0x4AA", "0x4AB", "0x4AC", "0x4AD", "0x4AE", "0x4AF", "0x4B0", "0x4B1", "0x4B2", "0x4B3", "0x4B4", "0x4B5", "0x4B6", "0x4B7", "0x4B8", "0x4B9", "0x4BA", "0x4BB", "0x4BC", "0x4BD", "0x4BE", "0x4BF" ,"0x4C0", "0x4C1", "0x4C2", "0x4C3", "0x4C4", "0x4C5", "0x4C6", "0x4C7", "0x4C8", "0x4C9", "0x4CA", "0x4CB", "0x4CC", "0x4CD", "0x4CE", "0x4CF", "0x4D0", "0x4D1", "0x4D2", "0x4D3", "0x4D4", "0x4D5", "0x4D6", "0x4D7", "0x4D8", "0x4D9", "0x4DA", "0x4DB", "0x4DC", "0x4DD", "0x4DE", "0x4DF", "0x4E0", "0x4E1", "0x4E2", "0x4E3", "0x4E4", "0x4E5", "0x4E6", "0x4E7", "0x4E8", "0x4E9", "0x4EA", "0x4EB", "0x4EC", "0x4ED", "0x4EE", "0x4EF" ,"0x4F0", "0x4F1", "0x4F2", "0x4F3", "0x4F4", "0x4F5", "0x4F6", "0x4F7", "0x4F8", "0x4F9", "0x4FA", "0x4FB", "0x4FC", "0x4FD", "0x4FE", "0x4FF" - #define CAN_ADDRESS_HEX_05XX = "0x500", "0x501", "0x502", "0x503", "0x504", "0x505", "0x506", "0x507", "0x508", "0x509", "0x50A", "0x50B", "0x50C", "0x50D", "0x50E", "0x50F", "0x510", "0x511", "0x512", "0x513", "0x514", "0x515", "0x516", "0x517", "0x518", "0x519", "0x51A", "0x51B", "0x51C", "0x51D", "0x51E", "0x51F", "0x520", "0x521", "0x522", "0x523", "0x524", "0x525", "0x526", "0x527", "0x528", "0x529", "0x52A", "0x52B", "0x52C", "0x52D", "0x52E", "0x52F", "0x530", "0x531", "0x532", "0x533", "0x534", "0x535", "0x536", "0x537", "0x538", "0x539", "0x53A", "0x53B", "0x53C", "0x53D", "0x53E", "0x53F", "0x540", "0x541", "0x542", "0x543", "0x544", "0x545", "0x546", "0x547", "0x548", "0x549", "0x54A", "0x54B", "0x54C", "0x54D", "0x54E", "0x54F", "0x550", "0x551", "0x552", "0x553", "0x554", "0x555", "0x556", "0x557", "0x558", "0x559", "0x55A", "0x55B", "0x55C", "0x55D", "0x55E", "0x55F" ,"0x560", "0x561", "0x562", "0x563", "0x564", "0x565", "0x566", "0x567", "0x568", "0x569", "0x56A", "0x56B", "0x56C", "0x56D", "0x56E", "0x56F", "0x570", "0x571", "0x572", "0x573", "0x574", "0x575", "0x576", "0x577", "0x578", "0x579", "0x57A", "0x57B", "0x57C", "0x57D", "0x57E", "0x57F", "0x580", "0x581", "0x582", "0x583", "0x584", "0x585", "0x586", "0x587", "0x588", "0x589", "0x58A", "0x58B", "0x58C", "0x58D", "0x58E", "0x58F" ,"0x590", "0x591", "0x592", "0x593", "0x594", "0x595", "0x596", "0x597", "0x598", "0x599", "0x59A", "0x59B", "0x59C", "0x59D", "0x59E", "0x59F", "0x5A0", "0x5A1", "0x5A2", "0x5A3", "0x5A4", "0x5A5", "0x5A6", "0x5A7", "0x5A8", "0x5A9", "0x5AA", "0x5AB", "0x5AC", "0x5AD", "0x5AE", "0x5AF", "0x5B0", "0x5B1", "0x5B2", "0x5B3", "0x5B4", "0x5B5", "0x5B6", "0x5B7", "0x5B8", "0x5B9", "0x5BA", "0x5BB", "0x5BC", "0x5BD", "0x5BE", "0x5BF" ,"0x5C0", "0x5C1", "0x5C2", "0x5C3", "0x5C4", "0x5C5", "0x5C6", "0x5C7", "0x5C8", "0x5C9", "0x5CA", "0x5CB", "0x5CC", "0x5CD", "0x5CE", "0x5CF", "0x5D0", "0x5D1", "0x5D2", "0x5D3", "0x5D4", "0x5D5", "0x5D6", "0x5D7", "0x5D8", "0x5D9", "0x5DA", "0x5DB", "0x5DC", "0x5DD", "0x5DE", "0x5DF", "0x5E0", "0x5E1", "0x5E2", "0x5E3", "0x5E4", "0x5E5", "0x5E6", "0x5E7", "0x5E8", "0x5E9", "0x5EA", "0x5EB", "0x5EC", "0x5ED", "0x5EE", "0x5EF" ,"0x5F0", "0x5F1", "0x5F2", "0x5F3", "0x5F4", "0x5F5", "0x5F6", "0x5F7", "0x5F8", "0x5F9", "0x5FA", "0x5FB", "0x5FC", "0x5FD", "0x5FE", "0x5FF" - #define CAN_ADDRESS_HEX_06XX = "0x600", "0x601", "0x602", "0x603", "0x604", "0x605", "0x606", "0x607", "0x608", "0x609", "0x60A", "0x60B", "0x60C", "0x60D", "0x60E", "0x60F", "0x610", "0x611", "0x612", "0x613", "0x614", "0x615", "0x616", "0x617", "0x618", "0x619", "0x61A", "0x61B", "0x61C", "0x61D", "0x61E", "0x61F", "0x620", "0x621", "0x622", "0x623", "0x624", "0x625", "0x626", "0x627", "0x628", "0x629", "0x62A", "0x62B", "0x62C", "0x62D", "0x62E", "0x62F", "0x630", "0x631", "0x632", "0x633", "0x634", "0x635", "0x636", "0x637", "0x638", "0x639", "0x63A", "0x63B", "0x63C", "0x63D", "0x63E", "0x63F", "0x640", "0x641", "0x642", "0x643", "0x644", "0x645", "0x646", "0x647", "0x648", "0x649", "0x64A", "0x64B", "0x64C", "0x64D", "0x64E", "0x64F", "0x650", "0x651", "0x652", "0x653", "0x654", "0x655", "0x656", "0x657", "0x658", "0x659", "0x65A", "0x65B", "0x65C", "0x65D", "0x65E", "0x65F" ,"0x660", "0x661", "0x662", "0x663", "0x664", "0x665", "0x666", "0x667", "0x668", "0x669", "0x66A", "0x66B", "0x66C", "0x66D", "0x66E", "0x66F", "0x670", "0x671", "0x672", "0x673", "0x674", "0x675", "0x676", "0x677", "0x678", "0x679", "0x67A", "0x67B", "0x67C", "0x67D", "0x67E", "0x67F", "0x680", "0x681", "0x682", "0x683", "0x684", "0x685", "0x686", "0x687", "0x688", "0x689", "0x68A", "0x68B", "0x68C", "0x68D", "0x68E", "0x68F" ,"0x690", "0x691", "0x692", "0x693", "0x694", "0x695", "0x696", "0x697", "0x698", "0x699", "0x69A", "0x69B", "0x69C", "0x69D", "0x69E", "0x69F", "0x6A0", "0x6A1", "0x6A2", "0x6A3", "0x6A4", "0x6A5", "0x6A6", "0x6A7", "0x6A8", "0x6A9", "0x6AA", "0x6AB", "0x6AC", "0x6AD", "0x6AE", "0x6AF", "0x6B0", "0x6B1", "0x6B2", "0x6B3", "0x6B4", "0x6B5", "0x6B6", "0x6B7", "0x6B8", "0x6B9", "0x6BA", "0x6BB", "0x6BC", "0x6BD", "0x6BE", "0x6BF" ,"0x6C0", "0x6C1", "0x6C2", "0x6C3", "0x6C4", "0x6C5", "0x6C6", "0x6C7", "0x6C8", "0x6C9", "0x6CA", "0x6CB", "0x6CC", "0x6CD", "0x6CE", "0x6CF", "0x6D0", "0x6D1", "0x6D2", "0x6D3", "0x6D4", "0x6D5", "0x6D6", "0x6D7", "0x6D8", "0x6D9", "0x6DA", "0x6DB", "0x6DC", "0x6DD", "0x6DE", "0x6DF", "0x6E0", "0x6E1", "0x6E2", "0x6E3", "0x6E4", "0x6E5", "0x6E6", "0x6E7", "0x6E8", "0x6E9", "0x6EA", "0x6EB", "0x6EC", "0x6ED", "0x6EE", "0x6EF" ,"0x6F0", "0x6F1", "0x6F2", "0x6F3", "0x6F4", "0x6F5", "0x6F6", "0x6F7", "0x6F8", "0x6F9", "0x6FA", "0x6FB", "0x6FC", "0x6FD", "0x6FE", "0x6FF" - #define CAN_ADDRESS_HEX_07XX = "0x700", "0x701", "0x702", "0x703", "0x704", "0x705", "0x706", "0x707", "0x708", "0x709", "0x70A", "0x70B", "0x70C", "0x70D", "0x70E", "0x70F", "0x710", "0x711", "0x712", "0x713", "0x714", "0x715", "0x716", "0x717", "0x718", "0x719", "0x71A", "0x71B", "0x71C", "0x71D", "0x71E", "0x71F", "0x720", "0x721", "0x722", "0x723", "0x724", "0x725", "0x726", "0x727", "0x728", "0x729", "0x72A", "0x72B", "0x72C", "0x72D", "0x72E", "0x72F", "0x730", "0x731", "0x732", "0x733", "0x734", "0x735", "0x736", "0x737", "0x738", "0x739", "0x73A", "0x73B", "0x73C", "0x73D", "0x73E", "0x73F", "0x740", "0x741", "0x742", "0x743", "0x744", "0x745", "0x746", "0x747", "0x748", "0x749", "0x74A", "0x74B", "0x74C", "0x74D", "0x74E", "0x74F", "0x750", "0x751", "0x752", "0x753", "0x754", "0x755", "0x756", "0x757", "0x758", "0x759", "0x75A", "0x75B", "0x75C", "0x75D", "0x75E", "0x75F" ,"0x760", "0x761", "0x762", "0x763", "0x764", "0x765", "0x766", "0x767", "0x768", "0x769", "0x76A", "0x76B", "0x76C", "0x76D", "0x76E", "0x76F", "0x770", "0x771", "0x772", "0x773", "0x774", "0x775", "0x776", "0x777", "0x778", "0x779", "0x77A", "0x77B", "0x77C", "0x77D", "0x77E", "0x77F", "0x780", "0x781", "0x782", "0x783", "0x784", "0x785", "0x786", "0x787", "0x788", "0x789", "0x78A", "0x78B", "0x78C", "0x78D", "0x78E", "0x78F" ,"0x790", "0x791", "0x792", "0x793", "0x794", "0x795", "0x796", "0x797", "0x798", "0x799", "0x79A", "0x79B", "0x79C", "0x79D", "0x79E", "0x79F", "0x7A0", "0x7A1", "0x7A2", "0x7A3", "0x7A4", "0x7A5", "0x7A6", "0x7A7", "0x7A8", "0x7A9", "0x7AA", "0x7AB", "0x7AC", "0x7AD", "0x7AE", "0x7AF", "0x7B0", "0x7B1", "0x7B2", "0x7B3", "0x7B4", "0x7B5", "0x7B6", "0x7B7", "0x7B8", "0x7B9", "0x7BA", "0x7BB", "0x7BC", "0x7BD", "0x7BE", "0x7BF" ,"0x7C0", "0x7C1", "0x7C2", "0x7C3", "0x7C4", "0x7C5", "0x7C6", "0x7C7", "0x7C8", "0x7C9", "0x7CA", "0x7CB", "0x7CC", "0x7CD", "0x7CE", "0x7CF", "0x7D0", "0x7D1", "0x7D2", "0x7D3", "0x7D4", "0x7D5", "0x7D6", "0x7D7", "0x7D8", "0x7D9", "0x7DA", "0x7DB", "0x7DC", "0x7DD", "0x7DE", "0x7DF", "0x7E0", "0x7E1", "0x7E2", "0x7E3", "0x7E4", "0x7E5", "0x7E6", "0x7E7", "0x7E8", "0x7E9", "0x7EA", "0x7EB", "0x7EC", "0x7ED", "0x7EE", "0x7EF" ,"0x7F0", "0x7F1", "0x7F2", "0x7F3", "0x7F4", "0x7F5", "0x7F6", "0x7F7", "0x7F8", "0x7F9", "0x7FA", "0x7FB", "0x7FC", "0x7FD", "0x7FE", "0x7FF" - #define CAN_ADDRESS_HEX = $CAN_ADDRESS_HEX_01XX, $CAN_ADDRESS_HEX_02XX, $CAN_ADDRESS_HEX_03XX, $CAN_ADDRESS_HEX_04XX, $CAN_ADDRESS_HEX_05XX, $CAN_ADDRESS_HEX_06XX, $CAN_ADDRESS_HEX_07XX, $CAN_ADDRESS_HEX_inv255 - -;Page 1 is the fuel map and axis bins only -page = 1 - ; name = bits, type, offset, bits - ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits - ; name = scalar, type, offset, units, scale, translate, lo, hi, digits - veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 - rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 - #if SPEED_DENSITY - ;mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0 - mapBins = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 - #elif ALPHA_N - tpsBins = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 - #endif - - -;-------------------------------------------------- -;Start Page 2 -;Page 2 is all general settings (Previously part of page 1) -;-------------------------------------------------- -page = 2 - flexBoostLow = scalar, S08, 0, "kPa", 1.0, 0.0, -127, 127, 0 - flexBoostHigh = scalar, U08, 1, "kPa", 1.0, 0.0, 0.0, 255, 0 - asePct = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0 - aseCount = scalar, U08, 3, "s", 1.0, 0.0, 0.0, 255, 0 - wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 - crankingPct = scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0 - pinLayout = bits, U08, 15, [0:7], "Speeduino v0.1", "Speeduino v0.2", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NA6 MX5 PNP", "Turtana PCB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Plazomat I/O 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Daz V6 Shield 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NO2C", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - tachoPin = bits, U08, 16, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - tachoDiv = bits, U08, 16, [6:7], "Normal", "Half", "INVALID", "INVALID" - unused2-17 = scalar, U08, 17, "ms", 0.1, 0.0, 0.0, 25.5, 1 - unused2-18 = scalar, U08, 18, "ms", 0.1, 0.0, 0.0, 25.5, 1 - tpsThresh = scalar, U08, 19, "%/s", 1.0, 0.0, 0.0, 255, 0 - taeTime = scalar, U08, 20, "ms", 10, 0.0, 0.0, 2550, 0 - - ; Display (Options for what the display is showing) - display = bits, U08, 21, [0:2], "Unused", "Adafruit 128x32", "Generic 128x32", "Adafruit 128x64", "Generic 128x64", "INVALID", "INVALID", "INVALID" - display1 = bits U08, 21, [3:5], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" - display2 = bits U08, 21, [6:7], "O2", "Voltage", "CPU", "Mem" - - display3 = bits U08, 22, [0:2], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" - display4 = bits U08, 22, [3:4], "O2", "Voltage", "CPU", "Mem" - display5 = bits U08, 22, [5:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" - - displayB1 = bits U08, 23, [0:3], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" - displayB2 = bits U08, 23, [4:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" - - reqFuel = scalar, U08, 24, "ms", 0.1, 0.0, 0.0, 25.5, 1 - divider = scalar, U08, 25, "", 1.0, 0.0 - alternate = bits, U08, 26, [0:0], "Simultaneous", "Alternating" - multiplyMAP = bits, U08, 26, [1:1], "No", "Yes" - includeAFR = bits, U08, 26, [2:2], "No", "Yes" - hardCutType = bits, U08, 26, [3:3], "Full", "Rolling" - unused2-26e = bits, U08, 26, [4:4], "No", "Yes" - unused2-26f = bits, U08, 26, [5:5], "No", "Yes" - unused2-26g = bits, U08, 26, [6:6], "No", "Yes" - indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled" - injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1 - inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0 - inj2Ang = scalar, U16, 30, "deg", 1.0, 0.0, 0.0, 360, 0 - inj3Ang = scalar, U16, 32, "deg", 1.0, 0.0, 0.0, 360, 0 - inj4Ang = scalar, U16, 34, "deg", 1.0, 0.0, 0.0, 360, 0 - - ; Config1 - mapSample = bits, U08, 36, [0:1], "Instantaneous", "Cycle Average", "Cycle Minimum", "INVALID" - twoStroke = bits, U08, 36, [2:2], "Four-stroke", "Two-stroke" - injType = bits, U08, 36, [3:3], "Port", "Throttle Body" - nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" - - ; Config2 - unused2-37a = bits, U08, 37, [0:1], "INVALID", "None", "None", "None" - unused2-37b = bits, U08, 37, [2:3], "INVALID", "None", "None", "None" - nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" - - ; Config3 - engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire" - flexEnabled = bits, U08, 38, [1:1], "Off", "On" - algorithm = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" - baroCorr = bits, U08, 38, [3:3], "Off", "On" - injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential" - perToothIgn = bits, U08, 38, [6:6], "No", "Yes" - dfcoEnabled = bits, U08, 38, [7:7], "Off", "On" - - primePulse = scalar, U08, 39, "ms", 0.1, 0.0, 0.0, 25.5, 1 - dutyLim = scalar, U08, 40, "%", 1.0, 0.0, 0.0, 100.0, 0 - flexFreqLow = scalar, U08, 41, "Hz", 1.0, 0.0, 0.0, 250.0, 0 - flexFreqHigh = scalar, U08, 42, "Hz", 1.0, 0.0, 0.0, 250.0, 0 - - boostMaxDuty = scalar, U08, 43, "%", 1.0, 0.0, 0.0, 100.0, 0 - tpsMin = scalar, U08, 44, "ADC", 1.0, 0.0, 0.0, 255.0, 0 - tpsMax = scalar, U08, 45, "ADC", 1.0, 0.0, 0.0, 255.0, 0 - mapMin = scalar, S08, 46, "kpa", 1.0, 0.0, -100, 127.0, 0 - mapMax = scalar, U16, 47, "kpa", 1.0, 0.0, 0.0, 25500, 0 - fpPrime = scalar, U08, 49, "s", 1.0, 0.0, 0.0, 255.0, 0 - stoich = scalar, U08, 50, ":1", 0.1, 0.0, 0.0, 25.5, 1 - oddfire2 = scalar, U16, 51, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) - oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) - oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) - - flexFuelLow = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 250.0, 0 - flexFuelHigh = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 250.0, 0 - flexAdvLow = scalar, U08, 59, "Deg", 1.0, 0.0, 0.0, 250.0, 0 - flexAdvHigh = scalar, U08, 60, "Deg", 1.0, 0.0, 0.0, 250.0, 0 - - iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle - iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 - boostMinDuty = scalar, U08, 63, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles for boost control - - baroMin = scalar, S08, 64, "kpa", 1.0, 0.0, -100, 127.0, 0 - baroMax = scalar, U16, 65, "kpa", 1.0, 0.0, 0.0, 25500, 0 - unused2-67 = array, U08, 67, [60], "%", 1.0, 0.0, 0.0, 255, 0 - - -;-------------------------------------------------- -;Start Ignition table (Page 3) -;-------------------------------------------------- -page = 3 - advTable1 = array, U08, 0,[16x16], "deg", 1.0, -40, -40, 215.0, 0 - rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 - - #if SPEED_DENSITY - mapBins2 = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 - #elif ALPHA_N - tpsBins2 = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 - #endif - -;-------------------------------------------------- -;Start Page 4 -;These are primarily ignition related settings (Previously part of page 2) -;-------------------------------------------------- -page = 4 - TrigAng = scalar, S16, 0, "Deg", 1, 0, -360, 360, 0 - FixAng = scalar, U08, 2, "Deg", 1, 0, 0, 80, 0 - CrankAng = scalar, U08, 3, "Deg", 1, 0, -10, 80, 0 - TrigAngMul = scalar, U08, 4, "", 1, 0, 0, 88, 0 ; Multiplier for tooth counts that don't evenly divide into 360 - TrigEdge = bits, U08, 5,[0:0], "Leading", "Trailing" - TrigSpeed = bits, U08, 5,[1:1], "Crank Speed", "Cam Speed" - IgInv = bits, U08, 5,[2:2], "Going Low", "Going High" - TrigPattern= bits, U08, 5,[3:7], "Missing Tooth", "Basic Distributor", "Dual Wheel", "GM 7X", "4G63 / Miata / 3000GT", "GM 24X", "Jeep 2000", "Audi 135", "Honda D17", "Miata 99-05", "Mazda AU", "Non-360 Dual", "Nissan 360", "Subaru 6/7", "Daihatsu +1", "Harley EVO", "36-2-2-2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - TrigEdgeSec= bits, U08, 6,[0:0], "Leading", "Trailing" - fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" - useResync = bits, U08, 6,[7:7], "No", "Yes" - sparkDur = scalar, U08, 7, "ms", 0.1, 0, 0, 25.5, 1 ; Spark duration - unused4-8 = scalar, U08, 8, "ms", 0.1, 0.0, 0.0, 25.5, 1 - unused4-9 = scalar, U08, 9, "ms", 0.1, 0.0, 0.0, 25.5, 1 - unused4-10 = scalar, U08, 10, "ms", 0.1, 0.0, 0.0, 25.5, 1 - SkipCycles = scalar, U08, 11, "cycles", 1, 0, 0, 255, 0 - - ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits - ; name = scalar, type, offset, units, scale, translate, lo, hi, digits -;Dwell control - unused4-12a = bits, U08, 12, [0:0], "INVALID", "NOTHING" - useDwellLim = bits, U08, 12, [1:1], "Off", "On" - sparkMode = bits, U08, 12, [2:4], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential", "Rotary", "INVALID", "INVALID", "INVALID" - TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive" - ignCranklock = bits, U08, 12, [7:7], "Off", "On" - dwellcrank = scalar, U08, 13, "ms", 0.1, 0, 0, 25, 1 - dwellrun = scalar, U08, 14, "ms", 0.1, 0, 0, 8, 1 ;running dwell variable railed to 8 - who needs more than 8ms? - numTeeth = scalar, U08, 15, "teeth", 1.0, 0.0, 0.0, 255, 0 - missingTeeth = scalar, U08, 16, "teeth", 1.0, 0.0, 0.0, 255, 0 - - crankRPM = scalar, U08, 17, "rpm", 100, 0.0, 100, 1000, 0 - tpsflood = scalar, U08, 18, "%", 1.0, 0.0, 0.0, 255.0, 0 - -;Rev Limits - SoftRevLim = scalar, U08, 19, "rpm", 100, 0.0, 100, 25500, 0 - SoftLimRetard = scalar, U08, 20, "deg", 1.0, 0.0, 0.0, 80, 0 - SoftLimMax = scalar, U08, 21, "s", 0.1, 0.0, 0.0, 25.5, 1 - HardRevLim = scalar, U08, 22, "rpm", 100, 0.0, 100, 25500, 0 - -;TPS based acceleration enrichment - taeBins = array, U08, 23, [ 4], "%/s", 10.0, 0.0, 0.00, 2550.0, 0 - taeRates = array, U08, 27, [ 4], "%", 1.0, 0.0, 0.00, 255.0, 0 ; 4 bytes -;WUE Bins (Needed somewhere to put these - #if CELSIUS - wueBins = array, U08, 31, [10], "C", 1.0, -40, -40, 102.0, 0 - #else - wueBins = array, U08, 31, [10], "F", 1.8, -22.23, -40, 215.0, 0 - #endif -;Dwell config options - dwellLim = scalar, U08, 41, "ms", 1, 0, 0, 32, 0 - dwellRates = array, U08, 42, [6], "%", 1.0, 0.0, 0.00, 255.0, 0 - -;IAT (Inlet air temp) timing retard - #if CELSIUS - iatRetBins = array, U08, 48, [ 6], "C", 1.0, 0.0, 0.00, 255.0, 0 - #else - iatRetBins = array, U08, 48, [ 6], "F", 1.8, 17.77, 0.00, 255.0, 0 ; No -40 degree offset here - #endif - iatRetRates = array, U08, 54, [ 6], "deg", 1.0, 0.0, 0.00, 255.0, 0 -;Decelleration Fuel Cut Off (DFCO) - dfcoRPM = scalar, U08, 60, "RPM", 10.0, 0.0, 100, 2550, 0 - dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0 - dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0 -;Cranking ignition bypass - ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" - ignBypassPin = bits , U08, 63, [1:6], "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" - - unused4-64 = array, U08, 64, [63], "%", 1.0, 0.0, 0.0, 255, 0 -;-------------------------------------------------- -;Start AFR page -;-------------------------------------------------- -page = 5 -#if LAMBDA - afrTable = array, U08, 0,[16x16], "Lambda", { 0.1 / stoich }, 0.0000, 0.00, 2.00, 3 -#else - afrTable = array, U08, 0,[16x16], "AFR", 0.1, 0.0, 7, 25.5, 1 -#endif - - rpmBinsAFR = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 - #if SPEED_DENSITY - mapBinsAFR = array, U08, 272,[ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 - #elif ALPHA_N - tpsBinsAFR = array, U08, 272,[ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 - #endif - -;-------------------------------------------------- -;Start page 6 -; Page 6 is all settings associated with O2/AFR -;-------------------------------------------------- -page = 6 - egoAlgorithm= bits , U08, 0, [0:1], "Simple", "INVALID", "PID", "No correction" ; * ( 1 byte) - egoType = bits , U08, 0, [2:3], "Disabled", "Narrow Band", "Wide Band", "INVALID" ; egoOption - boostEnabled= bits, U08, 0, [4:4], "Off", "On" - vvtEnabled = bits, U08, 0, [5:5], "Off", "On" - boostCutType= bits, U08, 0, [6:7], "Off", "Spark Only", "Fuel Only","Both" - - egoKP = scalar, U08, 1, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - egoKI = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - egoKD = scalar, U08, 3, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - #if CELSIUS - egoTemp = scalar, U08, 4, "C", 1.0, -40, -40, 102.0, 0 - #else - egoTemp = scalar, U08, 4, "F", 1.8, -22.23, -40, 215.0, 0 - #endif - egoCount = scalar, U08, 5, "", 4.0, 0.0, 4.0, 255.0, 0 ; * ( 1 byte) - unused6-6 = scalar, U08, 6, "%", 1.0, 0.0, 0.0, 255.0, 0 - egoLimit = scalar, U08, 7, "", 1, 0, 0, 16, 0 - ego_min = scalar, U08, 8, "AFR", 0.1, 0.0, 7, 25, 1 - ego_max = scalar, U08, 9, "AFR", 0.1, 0.0, 7, 25, 1 - ego_sdelay = scalar, U08, 10, "sec", 1, 0, 0, 120, 0 - egoRPM = scalar, U08, 11, "rpm", 100, 0.0, 100, 25500, 0 - egoTPSMax = scalar, U08, 12, "%", 1, 0, 0, 120, 0 - vvtPin = bits , U08, 13, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - useExtBaro = bits, U08, 13, [6:6], "No", "Yes" - boostMode = bits, U08, 13, [7:7], "Simple", "Full" - boostPin = bits, U08, 14, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - VVTasOnOff = bits, U08, 14, [6:6], "No", "Yes" - unused6-14f = bits, U08, 14, [7:7], "ONE", "INVALID" - brvBins = array, U08, 15, [6], "V", 0.1, 0, 6, 24, 1 ; Bins for the battery reference voltage - injBatRates = array, U08, 21, [6], "%", 1, 0, 0, 255, 0 ;Values for injector pulsewidth vs voltage - #if CELSIUS - airDenBins = array, U08, 27, [9], "C", 1.0, -40, -40, 215, 0 ; Bins for the air density correction curve - #else - airDenBins = array, U08, 27, [9], "F", 1.8, -22.23, -40, 215, 0 ; Bins for the air density correction curve - #endif - airDenRates = array, U08, 36, [9], "%", 1.0, 0.0, 0, 255, 0 ; Values for the air density correction curve - -; PWM Frequencies - boostFreq = scalar, U08, 45, "Hz", 2.0, 0.0, 10, 511, 0 - vvtFreq = scalar, U08, 46, "Hz", 2.0, 0.0, 10, 511, 0 - idleFreq = scalar, U08, 47, "Hz", 2.0, 0.0, 10, 511, 0 - -; Launch Control - launchPin = bits , U08, 48, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - launchEnable= bits, U08, 48, [6:6], "No", "Yes" - launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" - - lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0 - lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0 - lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0 - lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0 - - idleKP = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - idleKI = scalar, U08, 54, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - idleKD = scalar, U08, 55, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0.0, 511.0, 0 - boostKP = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - boostKI = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - boostKD = scalar, U08, 59, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) - - lnchPullRes = bits, U08, 60, [0:1], "Float" , "Pullup", "INVALID", "INVALID" - fuelTrimEnabled= bits, U08, 60, [2:2], "No", "Yes" - flatSEnable = bits, U08, 60, [3:3], "No", "Yes" -; Baro Sensor pin - baroPin = bits, U08, 60, [4:7], "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" - -; Flat shift - flatSSoftWin = scalar, U08, 61, "rpm", 100, 0.0, 100, 25500, 0 - flatSRetard = scalar, U08, 62, "deg", 1.0, 0.0, 0.0, 80, 0 - flatSArm = scalar, U08, 63, "rpm", 100, 0.0, 100, 25500, 0 - - iacCLValues = array, U08, 64, [10], "RPM", 10.0, 0.0, 0, 2550, 0 - iacOLStepVal = array, U08, 74, [10], "Steps", 3, 0, 0, 765, 0 - iacOLPWMVal = array, U08, 84, [10], "Duty %", 1.0, 0, 0, 100, 0 - #if CELSIUS - iacBins = array, U08, 94, [10], "C", 1.0, -40, -40, 215, 0 - #else - iacBins = array, U08, 94, [10], "F", 1.8, -22.23, -40, 215, 0 - #endif - iacCrankSteps= array, U08, 104, [4], "Steps", 3, 0, 0, 765, 0 - iacCrankDuty = array, U08, 108, [4], "Duty %", 1.0, 0, 0, 100, 0 - #if CELSIUS - iacCrankBins = array, U08, 112, [4], "C", 1.0, -40, -40, 215, 0 - #else - iacCrankBins = array, U08, 112, [4], "F", 1.8, -22.23, -40, 215, 0 - #endif - - iacAlgorithm = bits , U08, 116, [0:2], "None", "On/Off", "PWM Open loop", "PWM Closed loop", "Stepper Open Loop", "Stepper Closed Loop", "INVALID", "INVALID" - iacStepTime = bits , U08, 116, [3:5], "INVALID","1", "2", "3", "4", "5", "6","INVALID" - iacChannels = bits, U08, 116, [6:6], "1", "2" - iacPWMdir = bits , U08, 116, [7:7], "Normal", "Reverse" - - #if CELSIUS - iacFastTemp = scalar, U08, 117, "C", 1.0, -40, -40, 215, 0 - #else - iacFastTemp = scalar, U08, 117, "F", 1.8, -22.23, -40, 215, 0 - #endif - - iacStepHome = scalar, U08, 118, "Steps", 3, 0, 0, 765, 0 - iacStepHyster= scalar, U08, 119, "Steps", 1, 0.0, 0.0, 10, 0 - - ; Begin fan control vairables - fanInv = bits, U08, 120, [0:0], "No", "Yes" - fanEnable = bits, U08, 120, [1:1], "Off", "On/Off" - fanPin = bits, U08, 120, [2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #if CELSIUS - fanSP = scalar, U08, 121, "C", 1.0, -40, -40, 215.0, 0 - fanHyster = scalar, U08, 122, "C", 1.0, 0.0, 0.0, 40, 0 - #else - fanSP = scalar, U08, 121, "F", 1.8, -22.23, -40, 215.0, 0 - fanHyster = scalar, U08, 122, "F", 1.0, 0.0, 0.0, 40, 0 - #endif - fanFreq = scalar, U08 , 123, "Hz", 2.0, 0.0, 10, 511, 0 - #if CELSIUS - fanPWMBins = array, U08, 124, [4], "C", 1.0, -40, -40, 215, 0 - #else - fanPWMBins = array, U08, 124, [4], "F", 1.8, -22.23, -40, 215, 0 - #endif - -;-------------------------------------------------- -;Boost and vvt maps (Page 7) -;-------------------------------------------------- -page = 7 -;notes for boostTable in PSI~~~There are 6.895 psis to a kPa then x 2 like the kPa ver~~~div atmos. pressure in kPa by 2 and make neg so to subtract instead of add -; #if BOOSTPSI -; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0 -; #else - boostTable = array, U08, 0,[8x8], "kPa", 2.0, 0.0, 0, 511, 0 -; #endif - rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 - tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 - vvtTable = array, U08, 80,[8x8], "%", 1.0, 0.0, 0, 100, 0 - rpmBinsVVT = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 - tpsBinsVVT = array, U08, 152,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 -;Fuel staging Table - stagingTable = array, U08, 160, [8x8], "%", 1.0, 0.0, 0.0, 100.0, 0 - rpmBinsStaging= array, U08, 224, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 - #if SPEED_DENSITY - mapBinsStaging= array, U08, 232, [ 8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 - #elif ALPHA_N - tpsBinsStaging= array, U08, 232, [ 8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 - #endif - -;-------------------------------------------------- -;Sequential fuel trim tables (Page 8) -;-------------------------------------------------- -page = 8 - fuelTrim1Table = array, U08, 0,[6x6], "%", 1.0, -128, -50, 50, 0 - fuelTrim1rpmBins = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 -#if SPEED_DENSITY - fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 -#elif ALPHA_N - fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 -#endif - - fuelTrim2Table = array, U08, 48,[6x6], "%", 1.0, -128, -50, 50, 0 - fuelTrim2rpmBins = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 -#if SPEED_DENSITY - fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 -#elif ALPHA_N - fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 -#endif - - fuelTrim3Table = array, U08, 96,[6x6], "%", 1.0, -128, -50, 50, 0 - fuelTrim3rpmBins = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 -#if SPEED_DENSITY - fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 -#elif ALPHA_N - fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 -#endif - - fuelTrim4Table = array, U08, 144,[6x6], "%", 1.0, -128, -50, 50, 0 - fuelTrim4rpmBins = array, U08, 180,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 -#if SPEED_DENSITY - fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 -#elif ALPHA_N - fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 -#endif - -;-------------------------------------------------- -;CANBUS control (Page 9) -;-------------------------------------------------- -page = 9 - #if CAN_COMMANDS - enable_canbus = bits, U08, 0, [0:1], "Disable", "On Via Secondary Serial", "ON via Internal CAN ", "INVALID" - #else - enable_canbus = bits, U08, 0, [0:1], "Disable", "On Via Secondary Serial", "INVALID", "INVALID" - #endif - enable_candata_in = bits, U08, 0, [2:2], "Off", "On" - - caninput_sel0 = bits, U16, 1, [0:0], "Off", "On" - caninput_sel1 = bits, U16, 1, [1:1], "Off", "On" - caninput_sel2 = bits, U16, 1, [2:2], "Off", "On" - caninput_sel3 = bits, U16, 1, [3:3], "Off", "On" - caninput_sel4 = bits, U16, 1, [4:4], "Off", "On" - caninput_sel5 = bits, U16, 1, [5:5], "Off", "On" - caninput_sel6 = bits, U16, 1, [6:6], "Off", "On" - caninput_sel7 = bits, U16, 1, [7:7], "Off", "On" - caninput_sel8 = bits, U16, 1, [8:8], "Off", "On" - caninput_sel9 = bits, U16, 1, [9:9], "Off", "On" - caninput_sel10 = bits, U16, 1, [10:10], "Off", "On" - caninput_sel11 = bits, U16, 1, [11:11], "Off", "On" - caninput_sel12 = bits, U16, 1, [12:12], "Off", "On" - caninput_sel13 = bits, U16, 1, [13:13], "Off", "On" - caninput_sel14 = bits, U16, 1, [14:14], "Off", "On" - caninput_sel15 = bits, U16, 1, [15:15], "Off", "On" - - ;caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 - caninput_source_can_address0 = bits, U16, 3, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address1 = bits, U16, 5, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address2 = bits, U16, 7, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address3 = bits, U16, 9, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address4 = bits, U16, 11, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address5 = bits, U16, 13, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address6 = bits, U16, 15, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address7 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address8 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address9 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address10 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address11 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address12 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address13 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address14 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address15 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX - - - - caninput_source_start_byte0 = bits, U08, 35, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte1 = bits, U08, 36, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte2 = bits, U08, 37, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte3 = bits, U08, 38, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte4 = bits, U08, 39, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte5 = bits, U08, 40, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte6 = bits, U08, 41, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte7 = bits, U08, 42, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte8 = bits, U08, 43, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte9 = bits, U08, 44, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte10 = bits, U08, 45, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte11 = bits, U08, 46, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte12 = bits, U08, 47, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte13 = bits, U08, 48, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte14 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte15 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - - caninput_source_num_bytes0 = bits, U16, 51, [0:0], "1", "2" - caninput_source_num_bytes1 = bits, U16, 51, [1:1], "1", "2" - caninput_source_num_bytes2 = bits, U16, 51, [2:2], "1", "2" - caninput_source_num_bytes3 = bits, U16, 51, [3:3], "1", "2" - caninput_source_num_bytes4 = bits, U16, 51, [4:4], "1", "2" - caninput_source_num_bytes5 = bits, U16, 51, [5:5], "1", "2" - caninput_source_num_bytes6 = bits, U16, 51, [6:6], "1", "2" - caninput_source_num_bytes7 = bits, U16, 51, [7:7], "1", "2" - caninput_source_num_bytes8 = bits, U16, 51, [8:8], "1", "2" - caninput_source_num_bytes9 = bits, U16, 51, [9:9], "1", "2" - caninput_source_num_bytes10 = bits, U16, 51, [10:10], "1", "2" - caninput_source_num_bytes11 = bits, U16, 51, [11:11], "1", "2" - caninput_source_num_bytes12 = bits, U16, 51, [12:12], "1", "2" - caninput_source_num_bytes13 = bits, U16, 51, [13:13], "1", "2" - caninput_source_num_bytes14 = bits, U16, 51, [14:14], "1", "2" - caninput_source_num_bytes15 = bits, U16, 51, [15:15], "1", "2" - - unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0 - unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0 - enable_candata_out = bits, U08, 55, [0:0], "Off", "On" - canoutput_sel0 = bits, U08, 56, [0:0], "Off", "On" - canoutput_sel1 = bits, U08, 57, [0:0], "Off", "On" - canoutput_sel2 = bits, U08, 58, [0:0], "Off", "On" - canoutput_sel3 = bits, U08, 59, [0:0], "Off", "On" - canoutput_sel4 = bits, U08, 60, [0:0], "Off", "On" - canoutput_sel5 = bits, U08, 61, [0:0], "Off", "On" - canoutput_sel6 = bits, U08, 62, [0:0], "Off", "On" - canoutput_sel7 = bits, U08, 63, [0:0], "Off", "On" - canoutput_param_group = array , U16, 64, [ 8], "", 1, 0, 0, 65535, 0 - canoutput_param_start_byte0 = bits, U08, 80, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte1 = bits, U08, 81, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte2 = bits, U08, 82, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte3 = bits, U08, 83, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte4 = bits, U08, 84, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte5 = bits, U08, 85, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte6 = bits, U08, 86, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte7 = bits, U08, 87, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_num_bytes0 = bits, U08, 88, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes1 = bits, U08, 89, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes2 = bits, U08, 90, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes3 = bits, U08, 91, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes4 = bits, U08, 92, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes5 = bits, U08, 93, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes6 = bits, U08, 94, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes7 = bits, U08, 95, [0:1], "INVALID", "1", "2", "INVALID" - - unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 - unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0 - unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0 - unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0 - - speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list - true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX - realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX - obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX - - - ;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 - ;unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0 - ;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0 - - ;AFR offset for WUE VeAnalyze - ;wueAFRRates = array, U08, 107, [10], "%", 1.0, 0.0, 0.0, 255, 0 - ;wueAFRBins = array, U08, 117, [10], "C", 1.0, -40, -40, 102.0, 0 - - unused10_107 = scalar, U08, 107, "", 1, 0, 0, 255, 0 - unused10_108 = scalar, U08, 108, "", 1, 0, 0, 255, 0 - unused10_109 = scalar, U08, 109, "", 1, 0, 0, 255, 0 - unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 - unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 - unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 - unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 - unused10_114 = scalar, U08, 114, "", 1, 0, 0, 255, 0 - unused10_115 = scalar, U08, 115, "", 1, 0, 0, 255, 0 - unused10_116 = scalar, U08, 116, "", 1, 0, 0, 255, 0 - unused10_117 = scalar, U08, 117, "", 1, 0, 0, 255, 0 - unused10_118 = scalar, U08, 118, "", 1, 0, 0, 255, 0 - unused10_119 = scalar, U08, 119, "", 1, 0, 0, 255, 0 - unused10_120 = scalar, U08, 120, "", 1, 0, 0, 255, 0 - unused10_121 = scalar, U08, 121, "", 1, 0, 0, 255, 0 - unused10_122 = scalar, U08, 122, "", 1, 0, 0, 255, 0 - unused10_123 = scalar, U08, 123, "", 1, 0, 0, 255, 0 - unused10_124 = scalar, U08, 124, "", 1, 0, 0, 255, 0 - unused10_125 = scalar, U08, 125, "", 1, 0, 0, 255, 0 - unused10_126 = scalar, U08, 126, "", 1, 0, 0, 255, 0 - unused10_127 = scalar, U08, 127, "", 1, 0, 0, 255, 0 - -page = 10 -#if CELSIUS - crankingEnrichBins = array, U08, 0, [4], "C", 1.0, -40, -40, 215, 0 -#else - crankingEnrichBins = array, U08, 0, [4], "F", 1.8, -22.23, -40, 215, 0 -#endif - crankingEnrichValues= array, U08, 4, [4], "%", 1.0, 0.0, 0, 255, 0 ; Values for the cranking enrichment curve - - rotaryType = bits , U08, 8, [0:1], "FC", "FD", "RX8", "INVALID" - stagingEnabled = bits , U08, 8, [2:2], "Off","On" - stagingMode = bits , U08, 8, [3:3], "Table","Automatic" - unused11-8e = bits , U08, 8, [4:4], "Off","On" - unused11-8f = bits , U08, 8, [5:5], "Off","On" - unused11-8g = bits , U08, 8, [6:6], "Off","On" - unused11-8h = bits , U08, 8, [7:7], "Off","On" - - rotarySplitValues = array, U08, 9, [8], "degrees", 1.0, 0.0, 0.0, 40, 0 -#if SPEED_DENSITY - rotarySplitBins = array, U08, 17, [8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 -#elif ALPHA_N - rotarySplitBins = array, U08, 17, [8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 -#endif - boostSens = scalar, U16, 25, "", 1, 0, 0, 5000, 0 - boostIntv = scalar, U08, 27, "ms", 1, 0, 0, 250, 0 - stagedInjSizePri = scalar, U16, 28, "cc/min", 1, 0, 0, 1500, 0 - stagedInjSizeSec = scalar, U16, 30, "cc/min", 1, 0, 0, 1500, 0 - - unused11_32_192 = array, U08, 32, [159], "RPM", 100.0, 0.0, 100, 25500, 0 - -;------------------------------------------------------------------------------- - -[ConstantsExtensions] - requiresPowerCycle = nCylinders - requiresPowerCycle = pinLayout - requiresPowerCycle = fanPin - requiresPowerCycle = reqFuel - requiresPowerCycle = numTeeth - requiresPowerCycle = missingTeeth - requiresPowerCycle = injOpen - requiresPowerCycle = IgInv - requiresPowerCycle = fanInv - requiresPowerCycle = boostEnabled - requiresPowerCycle = vvtEnabled -; requiresPowerCycle = vvtChannels - requiresPowerCycle = boostFreq - requiresPowerCycle = vvtFreq - requiresPowerCycle = idleFreq - requiresPowerCycle = sparkMode - requiresPowerCycle = launchPin - requiresPowerCycle = launchEnable - requiresPowerCycle = launchHiLo - requiresPowerCycle = flexEnabled - requiresPowerCycle = oddfire2 - requiresPowerCycle = oddfire3 - requiresPowerCycle = oddfire4 - requiresPowerCycle = iacCLminDuty - requiresPowerCycle = iacCLmaxDuty - requiresPowerCycle = useExtBaro - requiresPowerCycle = baroPin - requiresPowerCycle = rotaryType - requiresPowerCycle = stagedInjSizePri - requiresPowerCycle = stagedInjSizeSec - requiresPowerCycle = stagingEnabled - - defaultValue = pinLayout, 1 - defaultValue = TrigPattern, 0 - defaultValue = useResync, 1 - defaultValue = sparkMode, 0 - defaultValue = indInjAng, 0 - defaultValue = inj1Ang, 355 - defaultValue = inj2Ang, 355 - defaultValue = inj3Ang, 355 - defaultValue = inj4Ang, 355 - defaultValue = nInjectors, 4 - defaultValue = dutyLim, 100 - defaultValue = mapMin, 10 - defaultValue = mapMax, 260 - defaultValue = baroMin, 10 - defaultValue = baroMax, 260 - defaultValue = fpPrime, 3 - defaultValue = TrigFilter, 0 - defaultValue = ignCranklock,0 - defaultValue = multiplyMAP, 0 - defaultValue = includeAFR, 0 - defaultValue = stoich, 14.7 - defaultValue = flexEnabled, 0 - defaultValue = oddfire2, 0 - defaultValue = oddfire3, 0 - defaultValue = oddfire4, 0 - defaultValue = flexFreqLow, 50 - defaultValue = flexFreqHigh,150 - defaultValue = flexFuelLow, 100 - defaultValue = flexFuelHigh,163 - defaultValue = flexAdvLow, 0 - defaultValue = flexAdvHigh, 13 - defaultValue = flexBoostLow,0 - defaultValue = flexBoostHigh,0 - defaultValue = fuelPumpPin, 0 - defaultValue = fanPin, 0 - defaultValue = iacCLminDuty,0 - defaultValue = iacCLmaxDuty,100 - defaultValue = boostMinDuty,0 - defaultValue = boostMaxDuty,100 - defaultValue = boostSens, 2000 - defaultValue = boostIntv, 30 - defaultValue = sparkDur, 1.0 - defaultValue = speeduino_tsCanId, 0 - defaultValue = true_address, 256 - defaultValue = realtime_base_address, 336 - defaultValue = VVTasOnOff, 0 - defaultValue = stagingEnabled, 0 - ; defaultValue = obd_address, 0 - - ;Default pins - defaultValue = fanPin, 0 - defaultValue = vvtPin, 0 - defaultValue = launchPin, 0 - defaultValue = boostPin, 0 - defaultValue = fuelPumpPin, 0 - defaultValue = tachoPin, 0 - defaultValue = perToothIgn, 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. - ; - ; There are four special menu names, which when used append to the standard - ; menus of the same name instead of creating a new one. The menu names - ; are "File", "Communications", "Tools" and "Help". - ; - ;---------------------------------------------------------------------------- - -menuDialog = main - - menu = "Settings" - subMenu = engine_constants, "Engine Constants" - subMenu = injChars, "Injector Characteristics" - subMenu = triggerSettings, "Trigger Setup" - ;subMenu = OLED, "OLED Setup" - subMenu = airdensity_curve, "IAT Density" - - - menu = "&Tuning" - subMenu = std_realtime, "Realtime Display" - subMenu = accelEnrichments, "Acceleration Enrichment" - subMenu = egoControl, "AFR/O2", 3 - subMenu = RevLimiterS, "Limiters", 2 - subMenu = flexFueling, "Flex Fuel", 2 - subMenu = veTableDialog, "VE Table", 0 - subMenu = sparkTbl, "Spark Table", 2 - subMenu = afrTable1Tbl, "AFR Table", 5 - subMenu = std_separator - subMenu = inj_trimad, "Sequential fuel trim", 9 - subMenu = stagingTableDialog, "Staged Injection", 10 - - menu = "&Spark" - subMenu = sparkSettings, "Spark Settings" - subMenu = sparkTbl, "Spark Table", 2 - subMenu = dwellSettings, "Dwell settings" - subMenu = dwell_correction_curve, "Dwell Compensation" - subMenu = iat_retard_curve, "&IAT Retard" - subMenu = rotary_ignition, "Rotary Ignition", { sparkMode == 4 } - - menu = "&Starting/Idle" - subMenu = crankPW, "Cranking Settings" - subMenu = warmup, "Warmup Enrichment" - subMenu = std_separator - subMenu = idleSettings, "Idle Control" - subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { iacAlgorithm == 3 || iacAlgorithm == 5 } - subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 } - subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 } - subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 } - subMenu = iacStepCrank_curve, "Idle - Stepper Motor Cranking", 7, { iacAlgorithm == 4 } - - menu = "&Accessories" - subMenu = fanSettings, "Thermo Fan" - subMenu = LaunchControl, "Launch Control / Flat Shift" - subMenu = fuelpump, "Fuel Pump" - subMenu = std_separator - subMenu = boostSettings, "Boost Control" - subMenu = boostTbl, "Boost target", 8, { boostEnabled } - subMenu = std_separator - subMenu = vvtSettings, "VVT Control" - subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled } - subMenu = std_separator - subMenu = tacho, "Tacho Output" - - subMenu = std_separator - - #if CAN_COMMANDS - subMenu = can_serial3IO, "Canbus/Secondary Serial IO Interface" - subMenu = std_separator - subMenu = Canin_config, "External Data Input Configuration", {enable_canbus} - ;subMenu = std_separator - ;subMenu = Canout_config, "Canbus Output Configuration" - #else - subMenu = serial3IO, "Secondary Serial IO Interface" - #endif - - menuDialog = main - menu = "T&ools" - subMenu = mapCal, "Calibrate MAP" - subMenu = std_ms2gentherm, "Calibrate Temperature Sensors", 0 - subMenu = std_ms2geno2, "Calibrate AFR Sensor", 0 - - menuDialog = main - menu = "3D &Tuning Maps" - subMenu = veTable1Map, "Fuel Table" - subMenu = sparkMap, "Spark Table", 3 - subMenu = afrTable1Map, "AFR Target Table" - -#if enablehardware_test - menuDialog = main - menu = "Hardware Testing" - subMenu = outputtest1, "Test Output Hardware" -#endif - - menu = "Help" - subMenu = helpGeneral, "Speeduino Help" -;------------------------------------------------------------------------------- - -[SettingContextHelp] -; constantName = "Help Text" -; These provide the context help in the dialog when these variables are used - nCylinders = "Cylinder count" - alternate = "Whether or not the injectors should be fired at the same time. This setting is ignored when Sequential is selected below, however it will still affect the req_fuel value." - engineType = "Engines with an equal number of degrees between all firings (This is most engines) should select Even fire. Some 2 and 6 cylinder engines are Odd fire however." - twoStroke = "Four-Stroke (most engines), Two-stroke." - nInjectors = "Number of primary injectors." - mapSample = "The method used for calculating the MAP reading\nFor 1-2 Cylinder engines, Cycle Minimum is recommended.\nFor more than 2 cylinders Cycle Average is recommended" - stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" - injLayout = "The injector layout and timing to be used. Options are: \n 1. Paired - 2 injectors per output. Outputs active is equal to half the number of cylinders. Outputs are timed over 1 crank revolution. \n 2. Semi-sequential: Same as paired except that injector channels are mirrored (1&4, 2&3) meaning the number of outputs used are equal to the number of cylinders. Only valid for 4 cylinders or less. \n 3. Banked: 2 outputs only used. \n 4. Sequential: 1 injector per output and outputs used equals the number of cylinders. Injection is timed over full cycle. " - - TrigPattern = "The type of input trigger decoder to be used." - useResync = "If enabled, sync will be rechecked once every full cycle from the cam input. This is good for accuracy, however if your cam input is noisy then this can cause issues." - numTeeth = "Number of teeth on Primary Wheel." - TrigSpeed = "Primary trigger speed." - missingTeeth= "Number of Missing teeth on Primary Wheel." - TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor." - TrigAngMul = "A multiplier used by non-360 degree tooth wheels (i.e. Wheels where the tooth count doesn't divide evenly into 360. Usage: (360 * ) / tooth_count = Whole number" - SkipCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." - TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing." - TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing." - TrigFilter = "Tuning of the trigger filter algorithm. The more aggressive the setting, the more noise will be removed, however this increases the chance of some true readings being filtered out (False positive). Medium is safe for most setups. Only select 'Aggressive' if no other options are working" - - sparkMode = "Wasted Spark: Ignition outputs are on the channels <= half the number of cylinders. Eg 4 cylinder outputs on IGN1 and IGN2.\nSingle Channel: All ignition pulses are output on IGN1.\nWasted COP: Ignition pulses are output on all ignition channels up to the number of cylinders. Eg 4 cylinder outputs on all ignition channels. No valid for >4 cylinders" - IgInv = "Whether the spark fires when the ignition signal goes high or goes low. Nearly all ignition systems use 'Going Low' but please verify this as damage to coils can result from the incorrect selection. (NOTE: THIS IS NOT MEGASQUIRT. THIS SETTING IS USUALLY THE OPPOSITE OF WHAT THEY USE!)" - sparkDur = "The duration of the spark at full dwell. Typically around 1ms" - - fanInv = "" - fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5" - - taeTime = "The duration of the acceleration enrichment" - - iacChannels = "The number of output channels used for PWM valves. Select 1 for 2-wire valves or 2 for 3-wire valves." - iacStepTime = "Pause time between each step. Values that are too low can cause the motor to behave erratically or not at all" - iacStepHome = "Homing steps to perform on startup. Must be greater than the fully open steps value" - iacStepHyster = "The minimum number of steps to move in any one go." - iacAlgorithm = "Selects method of idle control.\nNone = no idle control valve.\nOn/Off valve.\nPWM valve (2,3 wire).\nStepper Valve (4,6,8 wire)." - iacPWMdir = "Normal PWM valves increase RPM with higher duty. If RPM decreases with higher duty then select Reverse" - iacCLminDuty= "When using closed loop idle control, this is the minimum duty cycle that the PID loop will allow. Combined with the maximum value, this specifies the working range of your idle valve" - iacCLmaxDuty= "When using closed loop idle control, this is the maximum duty cycle that the PID loop will allow. Combined with the minimum value, this specifies the working range of your idle valve" - iacFastTemp = "Below this temperature, the idle output will be high (On). Above this temperature, it will turn off." - - oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1" - oddfire3 = "The ATDC angle of channel 3 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 2)" - oddfire4 = "The ATDC angle of channel 4 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 3)" - - dfcoRPM = "The RPM above which DFCO will be active. Typically set a few hundred RPM above maximum idle speed" - dfcoHyster = "Hysteresis for DFCO RPM. 200-300 RPM is typical for this, however a higher value may be needed if the RPM is fluctuating around the cutout speed" - dfcoTPSThresh= "The TPS value below which DFCO will be active. Typical value is 5%-10%, but higher may be needed if TPS signal is noisy" - - launchPin = "The ARDUINO pin that the clutch switch is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" - ignBypassPin = "The ARDUINO pin that the ignition bypass is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" - ignBypassEnable = "If turned on, a ground signal will be output during cranking on the specified pin. This is used to bypass the Speeduino ignition control during cranking." - ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved." - - multiplyMAP = "If enabled, the MAP reading is included directly into the pulsewidth calculation by multiplying the VE lookup value by the MAP:Baro ratio. This results in a flatter VE table that can be easier to tune in some instances. VE table must be retuned when this value is changed." - includeAFR = "When enabled, the current AFR reading is incorporated directly in the pulsewidth calculation as a percentage of the current target ratio. VE table must be retuned when this value is changed. " - useExtBaro = "By Default, Speeduino will measure barometric pressure upon startup. Optionally however, a 2nd pressure sensor can be used to perform live barometric readings whilst the system is on." - - flexEnabled = "Turns on readings from the Flex sensor and enables the below adjustments" - flexFreqLow = "The frequency of the sensor at 0% ethanol (50Hz for standard GM/Continental sensor)" - flexFreqHigh = "The frequency of the sensor at 100% ethanol (150Hz for standard GM/Continental sensor)" - flexFuelLow = "Fuel % to be used for the lowest ethanol reading (Typically 100%. ie No adjustment)" - flexFuelHigh = "Fuel % to be used for the highest ethanol reading (Typically 163% for 100% ethanol)" - flexAdvLow = "Additional advance (in degrees) at lowest ethanol reading (Typically 0)" - flexAdvHigh = "Additional advance (in degrees) at highest ethanol reading (Typically 10-20 degrees)" - flexBoostHigh = "This amount that will be added to the boost target at E100. Between E0 and E100, the amount added to the boost target will be scaled from 0 to this value" - flexBoostLow = "Typically should be set to 0, but can be used to lower boost at E0 if the bast tune is setup with some ethanol" - - flatSArm = "The RPM switch point that determines whether an eganged clutch is for launch control or flat shift. Below this figure, an engaged clutch is considered to be for launch, above this figure an active clutch input will be considered a flat shift. This should be set at least several hundred RPM above idle" - flatSSoftWin= "The number of RPM below the flat shift point where the softlimit will be applied (aka Soft limit window). Recommended values are 200-1000" - flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window" - hardCutType = "How hard cuts should be performed for rev/launch limits. Full cut will stop all ignition events, Rolling cut will step through all ignition outputs, only cutting 1 per revolution" - - #if CAN_COMMANDS - enable_canbus = "This Enables either the secondary serial port or output via internal Can module. Secondary serial is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " - #else - enable_canbus = "This Enables the IO on the secondary serial port. This is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " - #endif - ;speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" - true_address = "This is the 11bit Can address of the Speeduino ECU " - realtime_base_address = "This is the 11bit CAN address of the realtime data broadcast from the Speeduino ECU. This MUST be at least 0x16 greater than the true address" - ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" - caninput_sel0 = "This Enables CAN data input channel 0 " - caninput_sel1 = "This Enables CAN data input channel 1 " - caninput_sel2 = "This Enables CAN data input channel 2 " - caninput_sel3 = "This Enables CAN data input channel 3 " - caninput_sel4 = "This Enables CAN data input channel 4 " - caninput_sel5 = "This Enables CAN data input channel 5 " - caninput_sel6 = "This Enables CAN data input channel 6 " - caninput_sel7 = "This Enables CAN data input channel 7 " - caninput_sel8 = "This Enables CAN data input channel 8 " - caninput_sel9 = "This Enables CAN data input channel 9 " - caninput_sel10 = "This Enables CAN data input channel 10 " - caninput_sel11 = "This Enables CAN data input channel 11 " - caninput_sel12 = "This Enables CAN data input channel 12 " - caninput_sel13 = "This Enables CAN data input channel 13 " - caninput_sel14 = "This Enables CAN data input channel 14 " - caninput_sel15 = "This Enables CAN data input channel 15 " - caninput_source_can_address0 = "The source 11bit CAN address of the data for channel 0" - caninput_source_can_address1 = "The source 11bit CAN address of the data for channel 1" - caninput_source_can_address2 = "The source 11bit CAN address of the data for channel 2" - caninput_source_can_address3 = "The source 11bit CAN address of the data for channel 3" - caninput_source_can_address4 = "The source 11bit CAN address of the data for channel 4" - caninput_source_can_address5 = "The source 11bit CAN address of the data for channel 5" - caninput_source_can_address6 = "The source 11bit CAN address of the data for channel 6" - caninput_source_can_address7 = "The source 11bit CAN address of the data for channel 7" - caninput_source_can_address8 = "The source 11bit CAN address of the data for channel 8 " - caninput_source_can_address9 = "The source 11bit CAN address of the data for channel 9" - caninput_source_can_address10 = "The source 11bit CAN address of the data for channel 10" - caninput_source_can_address11 = "The source 11bit CAN address of the data for channel 11" - caninput_source_can_address12 = "The source 11bit CAN address of the data for channel 12" - caninput_source_can_address13 = "The source 11bit CAN address of the data for channel 13" - caninput_source_can_address14 = "The source 11bit CAN address of the data for channel 14" - caninput_source_can_address15 = "The source 11bit CAN address of the data for channel 15" - caninput_source_start_byte0 = "The Starting byte the data begins at for channel 0" - caninput_source_start_byte1 = "The Starting byte the data begins at for channel 1" - caninput_source_start_byte2 = "The Starting byte the data begins at for channel 2" - caninput_source_start_byte3 = "The Starting byte the data begins at for channel 3" - caninput_source_start_byte4 = "The Starting byte the data begins at for channel 4" - caninput_source_start_byte5 = "The Starting byte the data begins at for channel 5" - caninput_source_start_byte6 = "The Starting byte the data begins at for channel 6" - caninput_source_start_byte7 = "The Starting byte the data begins at for channel 7" - caninput_source_start_byte8 = "The Starting byte the data begins at for channel 8" - caninput_source_start_byte9 = "The Starting byte the data begins at for channel 9" - caninput_source_start_byte10 = "The Starting byte the data begins at for channel 10" - caninput_source_start_byte11 = "The Starting byte the data begins at for channel 11" - caninput_source_start_byte12 = "The Starting byte the data begins at for channel 12" - caninput_source_start_byte13 = "The Starting byte the data begins at for channel 13" - caninput_source_start_byte14 = "The Starting byte the data begins at for channel 14" - caninput_source_start_byte15 = "The Starting byte the data begins at for channel 15" - caninput_source_num_bytes0 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes1 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes2 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes3 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes4 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes5 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes6 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes7 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes8 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes9 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes10 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes11 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes12 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes13 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes14 = "The number of bytes the data is made from starting at selected start byte number" - caninput_source_num_bytes15 = "The number of bytes the data is made from starting at selected start byte number" - - cmdEnableTestMode = "Click this to enable test mode. This will not be available if the engine is running" - cmdStopTestMode = "Click this to disable test mode" - cmdtestinj150dc = "this will cycle the output at 50% Duty cycle" - cmdtestinj250dc = "this will cycle the output at 50% Duty cycle" - cmdtestinj350dc = "this will cycle the output at 50% Duty cycle" - cmdtestinj450dc = "this will cycle the output at 50% Duty cycle" - cmdtestspk150dc = "this will cycle the output at 50% Duty cycle" - cmdtestspk250dc = "this will cycle the output at 50% Duty cycle" - cmdtestspk350dc = "this will cycle the output at 50% Duty cycle" - cmdtestspk450dc = "this will cycle the output at 50% Duty cycle" - - boostIntv = "The closed loop control interval will run every this many ms. Generally values between 50% and 100% of the valve frequency work best" - VVTasOnOff = "Whether or not the VVT table should be treated as on and off control only. If you are using the VVT map to control a switch, this should be Yes. If you are using the VVT control to drive a PWM signal, this should be No" - - stagedInjSizePri= "Size of the primary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" - stagedInjSizeSec= "Size of the secondary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" - -[UserDefined] - -; Enhanced TunerStudio dialogs can be defined here -; MegaTune will over look this section -; These dialogs will over-ride those in the UserDefined Section -; User defined ar loaded first, then if one by the same name is defiend here, -; it will replace the MegaTune definition - -; dialog = name, Title, Layout -; -; valid options for layout are xAxis, yAxis, border -; for an xAxis, each field added will be added from right to left -; A yAxis layout will add fields from top to bottom -; A border layout will expect an additional constraint to determine placement -; valid border constraints are north, South, East, West, Center -; all 5 do not need to be filled. - -; The field name can be either a constant reference, or a reference to another -; dialog which will be added. -; dialogs can be nested and can be mixed with fields - - dialog = engine_constants_southwest, "Speeduino Board" - field = "Stoichiometric ratio", stoich - field = "Injector Layout", injLayout, { nCylinders <= 4 } - field = "Board Layout", pinLayout - field = "MAP Sample method", mapSample - - dialog = engine_constants_west, "" - panel = std_injection, North - panel = engine_constants_southwest - - dialog = engine_constants_northeast, "Oddfire Angles" - field = "Channel 2 angle", oddfire2, { engineType == 1 } - field = "Channel 3 angle", oddfire3, { engineType == 1 && nCylinders >= 3 } - field = "Channel 4 angle", oddfire4, { engineType == 1 && nCylinders >= 4 } - - dialog = engine_constants_east, "" - panel = engine_constants_northeast, North - field = "" - - dialog = engine_constants, "", border - panel = engine_constants_west, West - panel = engine_constants_east, East - -# Flex fuel stuff - dialog = flexFueling, "Flex Fuel" - field = "Flex sensor", flexEnabled - - dialog = flexLeft, "" - field = "Component" - field = "Sensor Frequency" - field = "Fuel Adjustment" - field = "Additional advance" - field = "Additional boost", { boostEnabled } - - dialog = flexMiddle, "" - field = "Low (E0)" - field = "", flexFreqLow, { flexEnabled } - field = "", flexFuelLow, { flexEnabled } - field = "", flexAdvLow, { flexEnabled } - field = "", flexBoostLow, { boostEnabled } - - dialog = flexRight, "" - field = "High (E100)" - field = "", flexFreqHigh, { flexEnabled } - field = "", flexFuelHigh, { flexEnabled } - field = "", flexAdvHigh, { flexEnabled } - field = "", flexBoostHigh, { flexEnabled && boostEnabled } - - dialog = flexMain, "Flex Fuel Calibration", xAxis - panel = flexLeft - panel = flexMiddle - panel = flexRight - - dialog = flexFuelTop, "" - field = "Flex Fuel Sensor", flexEnabled - - dialog = flexFueling, "Fuel Sensor Settings", yAxis - topicHelp = "http://speeduino.com/wiki/index.php/Flex_Fuel" - panel = flexFuelTop - panel = flexMain - - dialog = tacho, "Tacho" - field = "Output pin", tachoPin - field = "Output speed", tachoDiv - - dialog = accelEnrichments_center, "" - field = "TPSdot Threshold", tpsThresh - field = "Accel Time", taeTime - - dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)" - field = "Enabled", dfcoEnabled - field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled } - field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } - field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled } - - dialog = accelEnrichments_north_south, "" - liveGraph = pump_ae_Graph, "AE Graph" - graphLine = afr - graphLine = TPSdot, "%", -2000, 2000, auto, auto - - dialog = accelEnrichments_north, "", xAxis - panel = time_accel_tpsdot_curve - - dialog = accelEnrichments, "Acceleration Enrichment" - topicHelp = "http://speeduino.com/wiki/index.php/Acceleration_Wizard" - panel = accelEnrichments_north, North - panel = accelEnrichments_north_south, Center - panel = accelEnrichments_center, Center - panel = accelEnrichments_south, South - - dialog = veTableDialog_north, "" - panel = veTable1Tbl - - dialog = veTableDialog_south, "" - field = "Multiply VE value by MAP:Baro ratio", multiplyMAP - field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } - - dialog = veTableDialog, "VE Table" - panel = veTableDialog_north, North - panel = veTableDialog_south, South - - dialog = injChars, "Injector Characteristics" - field = "Injector Open Time", injOpen - field = "Injector close angle" - field = "", inj1Ang, { indInjAng == 0 } - field = "Individual channel setting", indInjAng - field = "Channel 1", inj1Ang, { indInjAng } - field = "Channel 2", inj2Ang, { nCylinders > 1 && indInjAng } - field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3))) } - field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3))) } - field = "Injector Duty Limit", dutyLim - panel = injector_voltage_curve - - dialog = egoControl, "" - topicHelp = "http://speeduino.com/wiki/index.php/AFR/O2" - field = "Sensor Type", egoType - field = "Algorithm", egoAlgorithm, { egoType } - field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } - field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } - field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } - field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } - - field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } - field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } - field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } - field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } - field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } - field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } - field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } - - dialog = fanSettings,"Fan Settings",7 - field = "Fan Mode", fanEnable - field = "Fan output pin", fanPin, { fanEnable } - field = "Fan Output Inverted", fanInv , { fanEnable } - field = "Fan temperature SP", fanSP, { fanEnable } - field = "Fan hysteresis", fanHyster, { fanEnable } - - dialog = stepper_idle, "Stepper Idle" - field = "Step time (ms)", iacStepTime, { iacAlgorithm == 4 || iacAlgorithm == 5 } - field = "Home steps", iacStepHome, { iacAlgorithm == 4 || iacAlgorithm == 5 } - field = "Minimum Steps", iacStepHyster, { iacAlgorithm == 4 || iacAlgorithm == 5 } - - dialog = pwm_idle, "PWM Idle" - field = "Number of outputs", iacChannels, { iacAlgorithm == 2 || iacAlgorithm == 3 } - field = "Idle valve frequency", idleFreq, { iacAlgorithm == 2 || iacAlgorithm == 3 } - field = "Idle valve direction", iacPWMdir, { iacAlgorithm == 2 || iacAlgorithm == 3 } - - dialog = closedloop_idle, "Closed loop Idle" - field = "P", idleKP, { iacAlgorithm == 3 || iacAlgorithm == 5 } - field = "I", idleKI, { iacAlgorithm == 3 || iacAlgorithm == 5 } - field = "D", idleKD, { iacAlgorithm == 3 || iacAlgorithm == 5 } - field = "Minimum valve duty", iacCLminDuty, { iacAlgorithm == 3 } - field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 } - - dialog = idleSettings, "Idle Settings" - topicHelp = "http://speeduino.com/wiki/index.php/Idle" - field = "Idle control type", iacAlgorithm - field = "#Fast Idle" - field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 } - panel = pwm_idle - panel = stepper_idle - panel = closedloop_idle - - dialog = fuelpump, "Fuel pump" - field = "Fuel pump pin", fuelPumpPin - field = "Fuel pump prime duration", fpPrime - - dialog = crankingEnrichDialog, "Cranking Enrichment", yAxis - panel = cranking_enrich_curve - - dialog = crankingIgnOptions, "Cranking Timing", yAxis - field = "Cranking advance Angle", CrankAng - field = "Cranking bypass", ignBypassEnable - field = "Bypass output pin", ignBypassPin { ignBypassEnable } - field = "Fix cranking timing with trigger", ignCranklock, { TrigPattern == 1 || TrigPattern == 4 || TrigPattern == 10 || TrigPattern == 9 } - - dialog = crankingOptions, "", yAxis - field = "Cranking RPM (Max)", crankRPM - field = "Flood Clear level", tpsflood - field = "" - field = "Fuel pump prime duration", fpPrime - field = "Priming Pulsewidth", primePulse - - dialog = crankPW, "Cranking Settings", yAxis - topicHelp = "http://speeduino.com/wiki/index.php/Cranking" - panel = crankingOptions, North - panel = crankingEnrichDialog, Center - panel = crankingIgnOptions, South - - - dialog = aseSettings, "Afterstart Enrichment" - field = "Enrichment %", asePct - field = "Number of Sec to run", aseCount - - - dialog = triggerSettings,"Trigger Settings",4 - topicHelp = "http://speeduino.com/wiki/index.php/Decoders" - field = "Trigger Pattern", TrigPattern - field = "Primary base teeth", numTeeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 } - field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 } - field = "Missing teeth", missingTeeth, { TrigPattern == 0 } - field = "Secondary teeth", missingTeeth, { TrigPattern == 2 } - field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 } - field = "Trigger Angle ", TrigAng - field = "This number represents the angle ATDC when " - field = "tooth #1 passes the primary sensor." - field = "" - field = "Skip Revolutions", SkipCycles - field = "Note: This is the number of revolutions that will be skipped during" - field = "cranking before the injectors and coils are fired" - field = "Trigger edge", TrigEdge - field = "Secondary trigger edge", TrigEdgeSec, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 9 || TrigPattern == 12 } ;Missing tooth, dual wheel and Miata 9905 - field = "Trigger Filter", TrigFilter - field = "Re-sync every cycle", useResync, { TrigPattern == 2 || TrigPattern == 4 || TrigPattern == 7 || TrigPattern == 12 || TrigPattern == 9 } ;Dual wheel, 4G63, Audi 135, Nissan 360, Miata 99-05 - field = "" - field = "#The below option is EXPERIMENTAL! If unsure what this is, please set to No" - field = "User per tooth ignition calculation", perToothIgn, {TrigPattern == 0 || TrigPattern == 1 || TrigPattern == 2 || TrigPattern == 4 || TrigPattern == 12 || TrigPattern == 16 } ;Only works for missing tooth, distributor, dual wheel, nissan 360, 36-2-2-2 - - dialog = sparkSettings,"Spark Settings",4 - field = "Spark output mode", sparkMode - field = "Cranking advance Angle", CrankAng - field = "Spark Outputs triggers", IgInv - field = "" - field = "Fixed Angle (0 = use map)", FixAng - - dialog = dwellSettings, "Dwell Settings", 4 - topicHelp = "http://speeduino.com/wiki/index.php/Dwell" - field = " Cranking dwell", dwellcrank - field = " Running dwell", dwellrun - field = " Spark duration", sparkDur - field = "" - field = "#Note" - field = "The above times are for 12V. Voltage correction" - field = "is applied. At higher voltages the time is reduced" - field = "and when low it is increased" - field = "" - field = "Overdwell protection" - field = "Use Overdwell protection", useDwellLim - field = "Max dwell time", dwellLim, { useDwellLim } - field = "Note: Set the maximum dwell time at least 3ms above" - field = "your desired dwell time (Including cranking)" - - dialog = rotary_ignition, "Rotary Ignition", 4 - field = "Ignition Configuration", rotaryType - panel = rotaryTrailing_curve - - dialog = boostCut, "Boost Cut" - field = "Boost Cut", boostCutType - field = "Boost Limit", boostLimit, { boostCutType } - - dialog = RevLimiterS, "Rev Limiter", 4 - topicHelp = "http://speeduino.com/wiki/index.php/Rev_Limits" - field = "Rev Limiter" - field = "Soft rev limit", SoftRevLim - field = "Soft limit absolute timing", SoftLimRetard - field = "Soft limit max time", SoftLimMax - field = "Hard Rev limit", HardRevLim - field = "Hard limiter method", hardCutType - panel = boostCut - - dialog = clutchInput, "Clutch input" - field = "Clutch Input Pin", launchPin, { launchEnable || flatSEnable } - field = "Clutch enabled when signal is",launchHiLo, { launchEnable || flatSEnable } - field = "Clutch Pullup Resistor", lnchPullRes, { launchEnable || flatSEnable } - field = "Launch / Flat Shift switch RPM",flatSArm, { launchEnable || flatSEnable } - - dialog = LaunchControl, "Launch Control / Flat shift", 6 - topicHelp = "http://speeduino.com/wiki/index.php/Launch_Flatshift" - panel = clutchInput - ; Launch control - field = "Launch Control" - field = "Enable Launch", launchEnable - field = "Soft rev limit", lnchSoftLim, { launchEnable } - field = "Soft limit absolute timing", lnchRetard, { launchEnable } - field = "Hard rev limit", lnchHardLim, { launchEnable } - field = "Fuel adder during launch", lnchFuelAdd, { launchEnable } - - ; Flat shift - field = "Flat Shift" - field = "Enable flat shift", flatSEnable - field = "Soft rev window", flatSSoftWin, { flatSEnable } - field = "Soft limit absolute timing", flatSRetard, { flatSEnable } - - - dialog = OLED, "OLED Display", 2 - field = "Display Type", display - field = "#Note" - field = "ECU must be rebooted after changing above value" - field = "Field 1", display1, { display } - field = "Field 2", display2, { display } - field = "Field 3", display3, { display } - field = "Field 4", display4, { display } - ;field = "Bar 1", displayB1, { display } - ;field = "Bar 2", displayB2, { display > 2 } - - dialog = mapCal, "Calibrate MAP" - field = "#MAP Sensor" - settingSelector = "Common Pressure Sensors" - settingOption = "MPX4115", mapMin=10, mapMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf - settingOption = "MPX4250", mapMin=10, mapMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) - settingOption = "GM 1-BAR", mapMin=10, mapMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif - settingOption = "GM 2-BAR", mapMin=9, mapMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif - settingOption = "GM 3-BAR", mapMin=1, mapMax=315 ; VOUT = VS*(.00318*P-.00353) - settingOption = "MPXH6300", mapMin=1, mapMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) - settingOption = "MPX5700", mapMin=-31, mapMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) - settingOption = "MPX6400", mapMin=3, mapMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) - settingOption = "Denso 079800", mapMin=0, mapMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 - settingOption = "VW/Audi/Porsche 250kPa", mapMin=26, mapMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 - - field = "kPa At 0.0 Volts", mapMin - field = "kPa At 5.0 Volts", mapMax - - field = "#Baro Sensor" - field = "Use external Baro sensor", useExtBaro - field = "Analog pin to use for ext. Baro sensor", baroPin, { useExtBaro } - - settingSelector = "Common Pressure Sensors", { useExtBaro } - settingOption = "MPX4115", baroMin=10, baroMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf - settingOption = "MPX4250", baroMin=10, baroMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) - settingOption = "GM 1-BAR", baroMin=10, baroMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif - settingOption = "GM 2-BAR", baroMin=9, baroMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif - settingOption = "GM 3-BAR", baroMin=1, baroMax=315 ; VOUT = VS*(.00318*P-.00353) - settingOption = "MPXH6300", baroMin=1, baroMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) - settingOption = "MPX5700", baroMin=-31, baroMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) - settingOption = "MPX6400", baroMin=3, baroMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) - settingOption = "Denso 079800", baroMin=0, baroMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 - settingOption = "VW/Audi/Porsche 250kPa", baroMin=26, baroMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 - - field = "kPa At 0.0 Volts", baroMin, { useExtBaro } - field = "kPa At 5.0 Volts", baroMax, { useExtBaro } - - dialog = boostSettings, "Boost Control" - topicHelp = "http://speeduino.com/wiki/index.php/Boost_Control" - field = "Boost Control Enabled", boostEnabled - field = "Boost output pin", boostPin, { boostEnabled } - field = "Boost solenoid freq.", boostFreq, { boostEnabled } - - field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled } - field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled } - panel = boostCut - field = "Closed Loop settings" - field = "Control mode", boostMode, { boostEnabled } - slider = "Sensitivity", boostSens, horizontal, { boostEnabled } - field = "Control interval", boostIntv, { boostEnabled } - field = "P", boostKP, { boostEnabled && boostMode } - field = "I", boostKI, { boostEnabled && boostMode} - field = "D", boostKD, { boostEnabled && boostMode} - - - dialog = vvtSettings, "VVT Control" - field = "VVT Control Enabled", vvtEnabled - field = "Use VVT map as On / Off only", VVTasOnOff, { vvtEnabled } - field = "VVT output pin", vvtPin, { vvtEnabled } - field = "VVT solenoid freq.", vvtFreq, { vvtEnabled } - - - dialog = warmup, "Warmup Enrichment (WUE) - Percent Multiplier" - panel = warmup_curve - field = "Final enrichment value must be 100%." - field = "" - panel = aseSettings - - ;Fuel trim composite dialog - dialog = inj_trim1TblTitle, "Channel #1" - panel = fuelTrimTable1Tbl, { fuelTrimEnabled } - dialog = inj_trim2TblTitle, "Channel #2" - panel = fuelTrimTable2Tbl, { fuelTrimEnabled } - dialog = inj_trim3TblTitle, "Channel #3" - panel = fuelTrimTable3Tbl, { fuelTrimEnabled } - dialog = inj_trim4TblTitle, "Channel #4" - panel = fuelTrimTable4Tbl, { fuelTrimEnabled } - - dialog = inj_trimadt, "", xAxis - panel = inj_trim1TblTitle - panel = inj_trim2TblTitle - dialog = inj_trimadb, "", xAxis - panel = inj_trim3TblTitle - panel = inj_trim4TblTitle - - dialog = inj_trim_enable, "" - field = "Individual fuel trim enabled", fuelTrimEnabled, { injLayout == 3 } - - dialog = inj_trimad,"Injector Cyl 1-4 Trims", yAxis - panel = inj_trim_enable, North - panel = inj_trimadt, Center - panel = inj_trimadb, South - - ;;Injector staging - dialog = stagingTableDialog_north, "" - field = "Staging enabled", stagingEnabled - field = "Staging mode", stagingMode - field = "Size of primary injectors", stagedInjSizePri, { stagingEnabled } - field = "Size of secondary injectors", stagedInjSizeSec, { stagingEnabled } - - dialog = stagingTableDialog_south, "" - panel = stagingTbl, { stagingMode == 0 } - - dialog = stagingTableDialog, "Staged injection" - topicHelp = "https://speeduino.com/wiki/index.php/Staged_Injection" - panel = stagingTableDialog_north, North - panel = stagingTableDialog_south, South - - dialog = outputtest_warningmessage, "" - field = "WARNING! USE AT YOUR OWN RISK. INCORRECT USE WILL DAMAGE YOUR HARDWARE!" - field = "Do not attempt to use this page whilst your engine is running!" - field = "Forcing the Injector or Spark outputs could cause flooding of your engine or permanent damage to ignition coils!" - - - dialog = enableoutputtestbuttons, "Enable Test Controls", xAxis - ;commandButton = "Label Text", command, { Enabled Condition }, optionalFlags - - ; The rem > 0 expression is just for testing.. It works when the arduino is on the Stim with rpm. - ; a status bit there would be the expected real expression - commandButton = "Enable Test Mode", cmdEnableTestMode,{!testenabled & !testactive } - - ; if clickOnCloseIfEnabled is set, then the command assigned to this button will be run on the - ; dialog close, but only if the enable condition is true - ; valid click flags are: - ; clickOnCloseIfEnabled - the command will be sent on dialog close if active condition is true - ; clickOnCloseIfDisabled - the command will be sent on dialog close if active condition is false - ; clickOnClose - the command will be sent on dialog close always - commandButton = "Stop Test Mode", cmdStopTestMode,{testactive}, clickOnCloseIfEnabled - - dialog = outputtestinj1, "Injector CH1", yAxis - commandButton = "Off", cmdtestinj1off,{testactive} - commandButton = "50% DC", cmdtestinj150dc,{!testenabled & testactive} - commandButton = "On", cmdtestinj1on,{!testenabled & testactive} - dialog = outputtestinj2, "Injector CH2", yAxis - commandButton = "Off", cmdtestinj2off,{testactive} - commandButton = "50% DC", cmdtestinj250dc,{!testenabled &testactive} - commandButton = "On", cmdtestinj2on,{!testenabled & testactive} - dialog = outputtestinj3, "Injector CH3", yAxis - commandButton = "Off", cmdtestinj3off,{testactive} - commandButton = "50% DC", cmdtestinj350dc,{!testenabled & testactive} - commandButton = "On", cmdtestinj3on,{!testenabled & testactive} - dialog = outputtestinj4, "Injector CH4", yAxis - commandButton = "Off", cmdtestinj4off,{testactive} - commandButton = "50% DC", cmdtestinj450dc,{!testenabled & testactive} - commandButton = "On", cmdtestinj4on ,{!testenabled & testactive} - - dialog = outputtest_injectors, "Injector Driver Output Test", xAxis - panel = outputtestinj1 - panel = outputtestinj2 - panel = outputtestinj3 - panel = outputtestinj4 - - dialog = outputtestspk1, "Spark CH1 ", yAxis - commandButton = "Off", cmdtestspk1off,{testactive} - commandButton = "50% DC", cmdtestspk150dc,{!testenabled & testactive} - commandButton = "On", cmdtestspk1on,{!testenabled & testactive} - dialog = outputtestspk2, "Spark CH2", yAxis - commandButton = "Off", cmdtestspk2off,{testactive} - commandButton = "50% DC", cmdtestspk250dc,{!testenabled & testactive} - commandButton = "On", cmdtestspk2on,{!testenabled & testactive} - dialog = outputtestspk3, "Spark CH3", yAxis - commandButton = "Off", cmdtestspk3off,{testactive} - commandButton = "50% DC", cmdtestspk350dc,{!testenabled & testactive} - commandButton = "On", cmdtestspk3on,{!testenabled & testactive} - dialog = outputtestspk4, "Spark CH4", yAxis - commandButton = "Off", cmdtestspk4off,{testactive} - commandButton = "50% DC", cmdtestspk450dc,{!testenabled & testactive} - commandButton = "On", cmdtestspk4on,{!testenabled & testactive} - - dialog = outputtest_spark, "Spark Driver Output Test", xAxis - panel = outputtestspk1 - panel = outputtestspk2 - panel = outputtestspk3 - panel = outputtestspk4 - - dialog = outputtest1,"Test Output Hardware" - topicHelp = "http://speeduino.com/wiki/index.php/Hardware_testing_page" - panel = enableoutputtestbuttons - panel = outputtest_injectors - panel = outputtest_spark - ;panel = outputtest_io2 - panel = outputtest_warningmessage - - dialog = caninput_sel, "" - ;CAN inputs - field = " CAN Input Channel on/off" - field = "CAN Input 0", caninput_sel0, { enable_candata_in } - field = "CAN Input 1", caninput_sel1, { enable_candata_in } - field = "CAN Input 2", caninput_sel2, { enable_candata_in } - field = "CAN Input 3", caninput_sel3, { enable_candata_in } - field = "CAN Input 4", caninput_sel4, { enable_candata_in } - field = "CAN Input 5", caninput_sel5, { enable_candata_in } - field = "CAN Input 6", caninput_sel6, { enable_candata_in } - field = "CAN Input 7", caninput_sel7, { enable_candata_in } - field = "CAN Input 8", caninput_sel8, { enable_candata_in } - field = "CAN Input 9", caninput_sel9, { enable_candata_in } - field = "CAN Input 10", caninput_sel10, { enable_candata_in } - field = "CAN Input 11", caninput_sel11, { enable_candata_in } - field = "CAN Input 12", caninput_sel12, { enable_candata_in } - field = "CAN Input 13", caninput_sel13, { enable_candata_in } - field = "CAN Input 14", caninput_sel14, { enable_candata_in } - field = "CAN Input 15", caninput_sel15, { enable_candata_in } - - dialog = caninput_parameter_group, "", yAxis - field = " Source CAN Address" - field = "", caninput_source_can_address0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_can_address1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_can_address2, { caninput_sel2 && enable_candata_in } - field = "", caninput_source_can_address3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_can_address4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_can_address5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_can_address6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_can_address7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_can_address8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_can_address9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_can_address10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_can_address11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_can_address12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_can_address13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_can_address14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_can_address15, { caninput_sel15 && enable_candata_in } - - dialog = caninput_parameter_start_byte, "", yAxis - field = " source data start byte" - field = "", caninput_source_start_byte0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_start_byte1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_start_byte2, { caninput_sel2 && enable_candata_in } - field = "", caninput_source_start_byte3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_start_byte4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_start_byte5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_start_byte6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_start_byte7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_start_byte8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_start_byte9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_start_byte10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_start_byte11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_start_byte12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_start_byte13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_start_byte14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_start_byte15, { caninput_sel15 && enable_candata_in } - - dialog = caninput_parameter_num_byte, "", yAxis - field = "Input Parameter Number of Bytes" - field = "", caninput_source_num_bytes0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_num_bytes1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_num_bytes2, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_num_bytes3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_num_bytes4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_num_bytes5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_num_bytes6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_num_bytes7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_num_bytes8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_num_bytes9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_num_bytes10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_num_bytes11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_num_bytes12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_num_bytes13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_num_bytes14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_num_bytes15, { caninput_sel15 && enable_candata_in } - - dialog = caninconfig_blank1,"" - field = "" - - dialog = Canin_config1, "", xAxis - panel = caninput_sel - panel = caninconfig_blank1 - panel = caninput_parameter_group - panel = caninconfig_blank1 - panel = caninput_parameter_start_byte - panel = caninconfig_blank1 - panel = caninput_parameter_num_byte - - dialog = Canin_config2, "External Data Input" - field = "Enable External data input", enable_candata_in - - dialog = Canin_config, "", border - topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface#Read_external_analog_data" - panel = Canin_config2, North - panel = Canin_config1, South - - dialog = canoutput_sel, "" - ;CAN outputs - field = "CAN Output Channel on/off" - field = "CAN Output 0", canoutput_sel0, { enable_candata_out} - field = "CAN Output 1", canoutput_sel1, { enable_candata_out } - field = "CAN Output 2", canoutput_sel2, { enable_candata_out } - field = "CAN Output 3", canoutput_sel3, { enable_candata_out } - field = "CAN Output 4", canoutput_sel4, { enable_candata_out } - field = "CAN Output 5", canoutput_sel5, { enable_candata_out } - field = "CAN Output 6", canoutput_sel6, { enable_candata_out } - field = "CAN Output 7", canoutput_sel7, { enable_candata_out } - ; field = "CAN Output 8", canoutput_sel8, { enable_candata_out} - ; field = "CAN Output 9", canoutput_sel9, { enable_candata_out } - ; field = "CAN Output 10", canoutput_sel10, { enable_candata_out } - ; field = "CAN Output 11", canoutput_sel11, { enable_candata_out } - ; field = "CAN Output 12", canoutput_sel12, { enable_candata_out } - ; field = "CAN Output 13", canoutput_sel13, { enable_candata_out } - ; field = "CAN Output 14", canoutput_sel14, { enable_candata_out } - ; field = "CAN Output 15", canoutput_sel15, { enable_candata_out } - - dialog = canoutput_parameter_group, "", yAxis - field = "Output Parameter Group" - field = "", canoutput_param_group[0], { canoutput_sel0 && enable_candata_out } - field = "", canoutput_param_group[1], { canoutput_sel1 && enable_candata_out } - field = "", canoutput_param_group[2], { canoutput_sel3 && enable_candata_out } - field = "", canoutput_param_group[3], { canoutput_sel3 && enable_candata_out } - field = "", canoutput_param_group[4], { canoutput_sel4 && enable_candata_out } - field = "", canoutput_param_group[5], { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_group[6], { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_group[7], { canoutput_sel7 && enable_candata_out } - ; field = "", canoutput_param_group[8], { canoutput_sel9 && enable_candata_out } - ; field = "", canoutput_param_group[9], { canoutput_sel10 && enable_candata_out } - ; field = "", canoutput_param_group[10], { canoutput_sel1 && enable_candata_out } - ; field = "", canoutput_param_group[11], { canoutput_sel2 && enable_candata_out } - ; field = "", canoutput_param_group[12], { canoutput_sel3 && enable_candata_out } - ; field = "", canoutput_param_group[13], { canoutput_sel4 && enable_candata_out } - ; field = "", canoutput_param_group[14], { canoutput_sel5 && enable_candata_out } - ; field = "", canoutput_param_group[15], { canoutput_sel6 && enable_candata_out } - - dialog = canoutput_parameter_start_byte, "", yAxis - field = "Output Parameter Start Byte" - field = "", canoutput_param_start_byte0, { canoutput_sel0 && enable_candata_out } - field = "", canoutput_param_start_byte1, { canoutput_sel1 && enable_candata_out } - field = "", canoutput_param_start_byte2, { canoutput_sel2 && enable_candata_out } - field = "", canoutput_param_start_byte3, { canoutput_sel3 && enable_candata_out } - field = "", canoutput_param_start_byte4, { canoutput_sel4 && enable_candata_out } - field = "", canoutput_param_start_byte5, { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_start_byte6, { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_start_byte7, { canoutput_sel7 && enable_candata_out } - ; field = "", canoutput_param_start_byte8, { canoutput_sel8 && enable_candata_out } - ; field = "", canoutput_param_start_byte9, { canoutput_sel9 && enable_candata_out } - ; field = "", canoutput_param_start_byte10, { canoutput_sel10 && enable_candata_out } - ; field = "", canoutput_param_start_byte11, { canoutput_sel11 && enable_candata_out } - ; field = "", canoutput_param_start_byte12, { canoutput_sel12 && enable_candata_out } - ; field = "", canoutput_param_start_byte13, { canoutput_sel13 && enable_candata_out } -; field = "", canoutput_param_start_byte14, { canoutput_sel14 && enable_candata_out } - ; field = "", canoutput_param_start_byte15, { canoutput_sel15 && enable_candata_out } - - dialog = canoutput_parameter_num_byte, "", yAxis - field = "Output Parameter Number of Bytes" - field = "", canoutput_param_num_bytes0, { canoutput_sel0 && enable_candata_out } - field = "", canoutput_param_num_bytes1, { canoutput_sel1 && enable_candata_out } - field = "", canoutput_param_num_bytes2, { canoutput_sel2 && enable_candata_out } - field = "", canoutput_param_num_bytes3, { canoutput_sel3 && enable_candata_out } - field = "", canoutput_param_num_bytes4, { canoutput_sel4 && enable_candata_out } - field = "", canoutput_param_num_bytes5, { canoutput_sel5 && enable_candata_out } - field = "", canoutput_param_num_bytes6, { canoutput_sel6 && enable_candata_out } - field = "", canoutput_param_num_bytes7, { canoutput_sel7 && enable_candata_out } - ; field = "", canoutput_param_num_bytes8, { canoutput_sel8 && enable_candata_out } - ; field = "", canoutput_param_num_bytes9, { canoutput_sel9 && enable_candata_out } - ; field = "", canoutput_param_num_bytes10, { canoutput_sel10 && enable_candata_out } - ; field = "", canoutput_param_num_bytes11, { canoutput_sel11 && enable_candata_out } - ; field = "", canoutput_param_num_bytes12, { canoutput_sel12 && enable_candata_out } - ; field = "", canoutput_param_num_bytes13, { canoutput_sel13 && enable_candata_out } -; field = "", canoutput_param_num_bytes14, { canoutput_sel14 && enable_candata_out } - ; field = "", canoutput_param_num_bytes15, { canoutput_sel15 && enable_candata_out } - - dialog = canoutconfig_blank1,"" - field = "" - - dialog = Canout_config1, "", xAxis - panel = canoutput_sel - panel = canoutconfig_blank1 - panel = canoutput_parameter_group - panel = canoutconfig_blank1 - panel = canoutput_parameter_start_byte - panel = canoutconfig_blank1 - panel = canoutput_parameter_num_byte - - dialog = Canout_config2, "CAN Data Out" - field = "Enable CanBus data Output", enable_candata_out - - dialog = Canout_config, "", border - topicHelp = "" - panel = Canout_config2, North - panel = Canout_config1, South - - dialog = can_serial3IO, "CanBus/Serial3 IO interface" - topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" - field = "Enable CanBus/Second Serial", enable_canbus - ; field = "Speeduino TsCanId", speeduino_tsCanId - field = "True Canbus Address", true_address {enable_canbus} - field = "NOTE! Realtime Datat Base Address MUST be at least 0x16 GREATER than the True Address as they are reserved for future expansion" - field = "Realtime Data Base Can Address", realtime_base_address {enable_canbus} - ; field = "Speeduino OBD address", obd_address - - dialog = serial3IO, "Serial3 IO interface" - topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" - field = "Enable Second Serial", enable_canbus - -;------------------------------------------------------------------------------- -; General help text - - help = helpGeneral, "Speeduino General Help" - webHelp = "http://speeduino.com/wiki/index.php/Speeduino" - text = "For current WIKI documentation, click the Web Help button," - text = "or visit http://www.speeduino.com/." - text = "
" - text = "
why not visit our forum http://speeduino.com/forum/" -;------------------------------------------------------------------------------ -[ControllerCommands] -; commandName = command1, command2, commandn... -; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order. -; This does not include any resultant protocol envelope data, only the response data itself. - -; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands -; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition -; and may create error messages. -; It is expected that these commands would not typically alter any ram mapped to a Constant. - -cmdStopTestMode = "E\x01\x00" -cmdEnableTestMode = "E\x01\x01" - -cmdtestinj1on = "E\x02\x01" -cmdtestinj1off = "E\x02\x02" -cmdtestinj150dc = "E\x02\x03" -cmdtestinj2on = "E\x02\x04" -cmdtestinj2off = "E\x02\x05" -cmdtestinj250dc = "E\x02\x06" -cmdtestinj3on = "E\x02\x07" -cmdtestinj3off = "E\x02\x08" -cmdtestinj350dc = "E\x02\x09" -cmdtestinj4on = "E\x02\x0A" -cmdtestinj4off = "E\x02\x0B" -cmdtestinj450dc = "E\x02\x0C" - -cmdtestspk1on = "E\x03\x01" -cmdtestspk1off = "E\x03\x02" -cmdtestspk150dc = "E\x03\x03" -cmdtestspk2on = "E\x03\x04" -cmdtestspk2off = "E\x03\x05" -cmdtestspk250dc = "E\x03\x06" -cmdtestspk3on = "E\x03\x07" -cmdtestspk3off = "E\x03\x08" -cmdtestspk350dc = "E\x03\x09" -cmdtestspk4on = "E\x03\x0A" -cmdtestspk4off = "E\x03\x0B" -cmdtestspk450dc = "E\x03\x0C" - -; ------------------------------------------------------------- -; Help down here -[SettingContextHelp] - - -[CurveEditor] - -;time-based accel enrichment - curve = time_accel_tpsdot_curve, "TPS based AE" - columnLabel = "TPSdot", "Added" - xAxis = 0, 1200, 6 - yAxis = 0, 250, 4 - xBins = taeBins, TPSdot - yBins = taeRates - ;gauge = cltGauge - -; Correction curve for dwell vs battery voltage - curve = dwell_correction_curve, "Dwell voltage correction" - columnLabel = "Voltage", "Dwell" - xAxis = 6, 22, 6 - yAxis = 0, 255, 6 - xBins = brvBins, batteryVoltage - yBins = dwellRates - -; Correction curve for injectors vs battery voltage - curve = injector_voltage_curve, "Injector voltage correction" - columnLabel = "Voltage", "Injector" - xAxis = 6, 22, 6 - yAxis = 0, 255, 6 - xBins = brvBins, batteryVoltage - yBins = injBatRates - -; Correction curve for Air Density vs temperature - curve = airdensity_curve, "IAT density correction" - columnLabel = "Air Temperature", "Fuel Amount" - xAxis = -40, 160, 6 - yAxis = 0, 255, 6 - xBins = airDenBins, iat - yBins = airDenRates - -; IAT based ignition timing retard - curve = iat_retard_curve, "IAT timing retard" - columnLabel = "Inlet Air Temp", "Retard" - xAxis = -40, 200, 5 - yAxis = 0, 30, 5 - xBins = iatRetBins, iat - yBins = iatRetRates - -; Curves for idle control - ; Standard duty table for PWM valves - curve = iacPwm_curve, "IAC PWM Duty" - columnLabel = "Coolant Temperature", "Valve" - #if CELSIUS - xAxis = -40, 215, 6 - #else - xAxis = -40, 315, 6 - #endif - yAxis = 0, 100, 4 - xBins = iacBins, coolant - yBins = iacOLPWMVal - - ; Cranking duty table for PWM valves - curve = iacPwmCrank_curve, "IAC PWM Cranking Duty" - columnLabel = "Coolant Temperature", "Valve" - xAxis = -40, 215, 6 - yAxis = 0, 100, 4 - xBins = iacCrankBins, coolant - yBins = iacCrankDuty - - curve = iacStep_curve, "IAC Stepper Motor" - columnLabel = "Coolant Temperature", "Motor" - #if CELSIUS - xAxis = -40, 215, 6 - #else - xAxis = -40, 315, 6 - #endif - yAxis = 0, 850, 4 - xBins = iacBins, coolant - yBins = iacOLStepVal - - curve = iacStepCrank_curve, "IAC Stepper Motor Cranking" - columnLabel = "Coolant Temperature", "Motor" - xAxis = -40, 120, 6 - yAxis = 0, 850, 4 - xBins = iacCrankBins, coolant - yBins = iacCrankSteps - - curve = iacClosedLoop_curve, "IAC Closed Loop Targets" - columnLabel = "Coolant Temperature", "Motor" - xAxis = -40, 120, 6 - yAxis = 0, 2000, 4 - xBins = iacBins, coolant - yBins = iacCLValues - - curve = rotaryTrailing_curve, "Rotary Trailing Split" - columnLabel = "Engine load", "Split" - yAxis = 0, 40, 4 -#if SPEED_DENSITY - xBins = rotarySplitBins, map - xAxis = 0, 250, 5 -#else - xBins = rotarySplitBins, throttle - xAxis = 0, 100, 5 -#endif - yBins = rotarySplitValues - -; Warmup enrichment curve - curve = warmup_curve, "Warmup Enrichment (WUE) Curve" - columnLabel = "Coolant", "WUE %" - xAxis = -40, 210, 9 - yAxis = 0, 240, 6 - xBins = wueBins, coolant - yBins = wueRates - gauge = cltGauge - -; Cranking enrichment curve - curve = cranking_enrich_curve, "Cranking Enrichment Curve" - columnLabel = "Coolant", "Enrich %" - xAxis = -40, 110, 9 - yAxis = 0, 200, 6 - xBins = crankingEnrichBins, coolant - yBins = crankingEnrichValues - ;gauge = cltGau25 - -; Warmup enrichment VEAL AFR adjustment curve (Not currently working) - ;curve = warmup_afr_curve, "AFR Target Temperature Adustment" - ; columnLabel = "Coolant Temp", "AFR Offset %" - ; xAxis = -40, 210, 9 - ; yAxis = 0, 240, 6 - ; xBins = wueAFRBins, coolant - ; yBins = wueAFRRates - - -[TableEditor] - ; table_id, map3d_id, "title", page - table = veTable1Tbl, veTable1Map, "VE Table", 1 - topicHelp = "http://speeduino.com/wiki/index.php/Tuning" - ; constant, variable - xBins = rpmBins, rpm - #if SPEED_DENSITY - yBins = mapBins, map - #else - yBins = tpsBins, throttle - #endif - zBins = veTable - - gridHeight = 2.0 - gridOrient = 250, 0, 340 - upDownLabel = "(RICHER)", "(LEANER)" - - table = sparkTbl, sparkMap, "Ignition Advance Table", 3 - xBins = rpmBins2, rpm - #if SPEED_DENSITY - yBins = mapBins2, map - #else ALPHA_N - yBins = tpsBins2, throttle - #endif - zBins = advTable1 - gridHeight = 3.0 - upDownLabel = "ADVANCED", "RETARDED" - - ;table = afrTbl, afrTableMap, "AFR Table", 5 - table = afrTable1Tbl, afrTable1Map, "AFR Table", 5 - xBins = rpmBinsAFR, rpm - #if SPEED_DENSITY - yBins = mapBinsAFR, map - #else ALPHA_N - yBins = tpsBinsAFR, throttle - #endif - zBins = afrTable - gridHeight = 1.0 - upDownLabel = "RICHER", "LEANER" - gridOrient = 250, 0, 340 - - #if BOOSTPSI - table = boostTbl, boostMap, "Boost targets (PSI)", 8 - #else - table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 - #endif - xBins = rpmBinsBoost, rpm - yBins = tpsBinsBoost, throttle - zBins = boostTable - gridHeight = 3.0 - upDownLabel = "HIGHER", "LOWER" - - table = vvtTbl, vvtMap, "VVT control Table", 8 - xBins = rpmBinsVVT, rpm - yBins = tpsBinsVVT, throttle - zBins = vvtTable - gridHeight = 3.0 - upDownLabel = "HIGHER", "LOWER" - - table = stagingTbl, stagingMap, "Fuel Staging Table", 10 - xBins = rpmBinsStaging, rpm - #if SPEED_DENSITY - yBins = mapBinsStaging, map - #else ALPHA_N - yBins = tpsBinsStaging, throttle - #endif - zBins = stagingTable - gridHeight = 3.0 - upDownLabel = "HIGHER", "LOWER" - -;--------- Sequential fuel trim maps ----------- - table = fuelTrimTable1Tbl, fuelTrimTable1Map, "Fuel trim Table 1", 9 - topicHelp = "http://speeduino.com/wiki/index.php/Tuning" - xBins = fuelTrim1rpmBins, rpm - #if SPEED_DENSITY - yBins = fuelTrim1loadBins, map - #else - yBins = fuelTrim1loadBins, throttle - #endif - zBins = fuelTrim1Table - - gridHeight = 2.0 - gridOrient = 250, 0, 340 - upDownLabel = "(RICHER)", "(LEANER)" - - table = fuelTrimTable2Tbl, fuelTrimTable2Map, "Fuel trim Table 2", 9 - topicHelp = "http://speeduino.com/wiki/index.php/Tuning" - xBins = fuelTrim2rpmBins, rpm - #if SPEED_DENSITY - yBins = fuelTrim2loadBins, map - #else - yBins = fuelTrim2loadBins, throttle - #endif - zBins = fuelTrim2Table - - gridHeight = 2.0 - gridOrient = 250, 0, 340 - upDownLabel = "(RICHER)", "(LEANER)" - - table = fuelTrimTable3Tbl, fuelTrimTable3Map, "Fuel trim Table 3", 9 - topicHelp = "http://speeduino.com/wiki/index.php/Tuning" - xBins = fuelTrim3rpmBins, rpm - #if SPEED_DENSITY - yBins = fuelTrim3loadBins, map - #else - yBins = fuelTrim3loadBins, throttle - #endif - zBins = fuelTrim3Table - - gridHeight = 2.0 - gridOrient = 250, 0, 340 - upDownLabel = "(RICHER)", "(LEANER)" - - table = fuelTrimTable4Tbl, fuelTrimTable4Map, "Fuel trim Table 4", 9 - topicHelp = "http://speeduino.com/wiki/index.php/Tuning" - xBins = fuelTrim4rpmBins, rpm - #if SPEED_DENSITY - yBins = fuelTrim4loadBins, map - #else - yBins = fuelTrim4loadBins, throttle - #endif - zBins = fuelTrim4Table - - gridHeight = 2.0 - gridOrient = 250, 0, 340 - upDownLabel = "(RICHER)", "(LEANER)" - - -;------------------------------------------------------------------------------- - -[GaugeConfigurations] - - ;------------------------------------------------------------------------------- - ; 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. - - gaugeCategory = "Main" - ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld - accelEnrichGauge = accelEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 - dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 70, 80, 1, 1 - egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0 - - gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 - pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 - tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0 - veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 - warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 200, 130, 140, 140, 150, 0, 0 - advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0, 0 - dwellGauge = dwell, "Ign Dwell", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 - - gaugeCategory = "Sensor inputs" - mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0 - mapGauge_psi = map_psi, "Engine MAP (PSI)", "PSI", -15, 100, 0, 20, 200, 245, 0, 0 - mapGauge_bar = map_bar, "Engine MAP (BAR)", "Bar", -1, 3, -1, -1, 5, 5, 2, 2 - mapGauge_vacBoost = map_vacboost, "Engine MAP (in-Hg/PSI)", "in-Hg/PSI", -30, 30, -30, -30, 30, 30, 1, 1 - batteryVoltage = batteryVoltage,"Battery Voltage", "volts", 0, 25, 8, 9, 15, 16, 2, 2 - - tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 - throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0 - - afrGauge = afr, "Air:Fuel Ratio", "", 7, 25, 12, 13, 15, 16, 2, 2 - afrGauge2 = afr2, "Air:Fuel Ratio 2", "", 7, 25, 12, 13, 15, 16, 2, 2 - lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 - - #if CELSIUS - cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, -15, 0, 95, 105, 0, 0 - iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, -15, 0, 95, 100, 0, 0 - #else - cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, 0, 30, 200, 220, 0, 0 - iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, 0, 30, 200, 210, 0, 0 - #endif - flexGauge = flex, "Flex sensor", "%", 0, 100, -1, -1, 999, 999, 0, 0 - - #if CAN_COMMANDS - gaugeCategory = "CanBus Inputs" - CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge4 = canin_gauge4, "Can In4" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge5 = canin_gauge5, "Can In5" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - #endif - - gaugeCategory = "System Data" - clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 - loopGauge = loopsPerSecond,"Main loop speed", "Loops/S" , 0, 70000, -1, 500,1800, 4000, 0, 0 - memoryGauge = freeRAM, "Free memory", "bytes" , 0, 8000, -1, 1000,8000, 1000, 0, 0 -;------------------------------------------------------------------------------- - -[FrontPage] - - - ; Gauges are numbered left to right, top to bottom. - ; - ; 1 2 3 4 - ; 5 6 7 8 - - gauge1 = tachometer - gauge2 = throttleGauge - gauge3 = pulseWidthGauge - gauge4 = dutyCycleGauge - gauge5 = mapGauge - gauge6 = iatGauge - gauge7 = cltGauge - gauge8 = gammaEnrichGauge - - ;---------------------------------------------------------------------------- - ; Indicators - ; expr off-label on-label, off-bg, off-fg, on-bg, on-fg - indicator = { running }, "Not Running", "Running" white, black, green, black - indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black - indicator = { ase }, "ASE OFF", "ASE ON", white, black, green, black - indicator = { warmup }, "WUE OFF", "WUE ON", white, black, green, black - indicator = { tpsaccaen }, "Accel", "Accel", white, black, green, black - indicator = { tpsaccden }, "Decel", "Decel", white, black, green, black - indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black - indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black - indicator = { error }, "No Errors", "ERROR", white, black, green, black - indicator = { (tps > tpsflood) && (rpm < crankRPM) }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black - indicator = { DFCOOn }, "DFCO OFF", "DFCO On", white, black, red, black - indicator = { launchHard }, "Launch Hard", "Launch Hard", white, black, green, black - indicator = { launchSoft }, "Launch Soft", "Launch Soft", white, black, green, black - indicator = { softlimitOn }, "Soft Limit OFF","Soft Limiter", white, black, red, black - indicator = { hardLimitOn }, "Hard Limit OFF","Hard Limiter", white, black, red, black - indicator = { boostCutOut }, "Ign Cut OFF", "Ign Cut (Boost)", white, black, red, black - indicator = { sync }, "No Sync", "Sync", white, black, green, black - -;------------------------------------------------------------------------------- - -[OutputChannels] - ; The number of bytes MegaTune or TunerStudio should expect as a result - ; of sending the "A" command to Speeduino is determined - ; by the value of ochBlockSize, so be very careful when - ; you change it. - - ochGetCommand = "r\$tsCanId\x30%2o%2c" - ochBlockSize = 81 - - secl = scalar, U08, 0, "sec", 1.000, 0.000 - status1 = scalar, U08, 1, "bits", 1.000, 0.000 - inj1Status = bits, U08, 1, [0:0] - inj2Status = bits, U08, 1, [1:1] - inj3Status = bits, U08, 1, [2:2] - inj4Status = bits, U08, 1, [3:3] - DFCOOn = bits, U08, 1, [4:4] - boostCutFuel = bits, U08, 1, [5:5] - toothLog1Ready = bits, U08, 1, [6:6] - toothLog2Ready = bits, U08, 1, [7:7] - engine = scalar, U08, 2, "bits", 1.000, 0.000 - running = bits, U08, 2, [0:0] - crank = bits, U08, 2, [1:1] - ase = bits, U08, 2, [2:2] - warmup = bits, U08, 2, [3:3] - tpsaccaen = bits, U08, 2, [4:4] - tpsaccden = bits, U08, 2, [5:5] - mapaccaen = bits, U08, 2, [6:6] - mapaccden = bits, U08, 2, [7:7] - dwell = scalar, U08, 3, "ms", 0.100, 0.000 - map = scalar, U16, 4, "kpa", 1.000, 0.000 - iatRaw = scalar, U08, 6, "°C", 1.000, 0.000 - coolantRaw = scalar, U08, 7, "°C", 1.000, 0.000 - batCorrection = scalar, U08, 8, "%", 1.000, 0.000 - batteryVoltage = scalar, U08, 9, "V", 0.100, 0.000 - afr = scalar, U08, 10, "O2", 0.100, 0.000 - egoCorrection = scalar, U08, 11, "%", 1.000, 0.000 - airCorrection = scalar, U08, 12, "%", 1.000, 0.000 - warmupEnrich = scalar, U08, 13, "%", 1.000, 0.000 - rpm = scalar, U16, 14, "rpm", 1.000, 0.000 - accelEnrich = scalar, U08, 16, "%", 2.000, 0.000 - gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000 - veCurr = scalar, U08, 18, "%", 1.000, 0.000 - afrTarget = scalar, U08, 19, "O2", 0.100, 0.000 - pulseWidth = scalar, U16, 20, "ms", 0.001, 0.000 - TPSdot = scalar, U08, 22, "%/s", 10.00, 0.000 - advance = scalar, S08, 23, "deg", 1.000, 0.000 - tps = scalar, U08, 24, "%", 1.000, 0.000 - loopsPerSecond = scalar, U16, 25, "loops", 1.000, 0.000 - freeRAM = scalar, U16, 27, "bytes", 1.000, 0.000 - boostTarget = scalar, U08, 29, "kPa", 2.000, 0.000 - boostDuty = scalar, U08, 30, "%", 1.000, 0.000 - status2 = scalar, U08, 31, "bits", 1.000, 0.000 - launchHard = bits, U08, 31, [0:0] - launchSoft = bits, U08, 31, [1:1] - hardLimitOn = bits, U08, 31, [2:2] - softlimitOn = bits, U08, 31, [3:3] - boostCutSpark = bits, U08, 31, [4:4] - error = bits, U08, 31, [5:5] - idle = bits, U08, 31, [6:6] - sync = bits, U08, 31, [7:7] - rpmDOT = scalar, S16, 32, "rpm/s", 1.000, 0.000 - flex = scalar, U08, 34, "%", 1.000, 0.000 - flexFuelCor = scalar, U08, 35, "%", 1.000, 0.000 - flexIgnCor = scalar, U08, 36, "deg", 1.000, 0.000 - - idleLoad = scalar, U08, 37, { bitStringValue( idleUnits , iacAlgorithm ) }, 2.000, 0.000 ; This is a combined variable covering both PWM and stepper IACs. The units used depend on which idle algorithm is chosen - testoutputs = scalar, U08, 38, "bits", 1.000, 0.000 - testenabled = bits, U08, 38, [0:0] - testactive = bits, U08, 38, [1:1] - afr2 = scalar, U08, 39, "O2", 0.100, 0.000 - baro = scalar, U08, 40, "kpa", 1.000, 0.000 - canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 - canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 - canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 - canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 - canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 - canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 - canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 - canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 - canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 - canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 - canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 - canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 - canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 - canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 - canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 - canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 - tpsADC = scalar, U08, 73, "ADC",1.000, 0.000 - errors = scalar, U08, 74, "bits", 1.000, 0.000 - errorNum = bits, U08, 74, [0:1] - currentError = bits, U08, 74, [2:7] - pulseWidth2 = scalar, U16, 75, "ms", 0.001, 0.000 - pulseWidth3 = scalar, U16, 77, "ms", 0.001, 0.000 - pulseWidth4 = scalar, U16, 79, "ms", 0.001, 0.000 - -#if CELSIUS - coolant = { coolantRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives - iat = { iatRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives -#else - coolant = { (coolantRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) - iat = { (iatRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) -#endif - time = { timeNow } - seconds = { secl } - - throttle = { tps }, "%" - - cycleTime = { rpm ? ( 60000.0 / rpm ) : 0 } - cycleMultiplier = { injLayout == 3 ? 2 : 1 } - dutyCycle = { rpm ? ( 100.0*pulseWidth/(cycleTime * cycleMultiplier) ) : 0 } - - boostCutOut = { boostCutFuel || boostCutSpark } - lambda = { afr / stoich } - MAPxRPM = { rpm * map } - - ;Manifold pressure in weirdo units - map_bar = { (map - baro) / 101.33 } - map_psi = { (map - baro) * 0.145038 } - map_inhg = { (baro - map) * 0.2953007 } ;in-Hg - map_vacboost = { map < baro ? -map_inhg : map_psi } - -;------------------------------------------------------------------------------- - -[Datalog] - ; Full datalog. - ; - ; Default user-defined log emulates the full datalog. - ; - ; The entries are saved in the datalog file in the order in - ; which they appear in the list below. - ; - ; Channel - Case sensitive name of output channel to be logged. - ; Label - String written to header line of log. Be careful - ; about changing these, as programs like MSLVV and - ; MSTweak key off specific column names. - ; Type - Data type of output, converted before writing. - ; Format - C-style output format of data. - ; - ; Channel Label Type Format - ; -------------- ---------- ----- ------ - entry = time, "Time", float, "%.3f" - entry = secl, "SecL", int, "%d" - entry = rpm, "RPM", int, "%d" - entry = map, "MAP", int, "%d" - entry = MAPxRPM, "MAPxRPM", int, "%d" - entry = tps, "TPS", int, "%d" - entry = afr, "O2", float, "%.3f" - entry = lambda, "Lambda", float, "%.3f" - entry = iat, "IAT", int, "%d" - entry = coolant, "CLT", int, "%d" - entry = engine, "Engine", int, "%d" - entry = DFCOOn, "DFCO", int, "%d" - entry = egoCorrection, "Gego", int, "%d" - entry = airCorrection, "Gair", int, "%d" - entry = batCorrection, "Gbattery", int, "%d" - entry = warmupEnrich, "Gwarm", int, "%d" - ;entry = baroCorrection, "Gbaro", int, "%d" - entry = gammaEnrich, "Gammae", int, "%d" - entry = accelEnrich, "Accel Enrich",int, "%d" - entry = veCurr, "VE", int, "%d" - entry = pulseWidth, "PW", float, "%.1f" - entry = afrTarget, "AFR Target", float, "%.3f" - entry = pulseWidth, "PW2", float, "%.1f" - entry = dutyCycle, "DutyCycle1", float, "%.1f" - entry = dutyCycle, "DutyCycle2", float, "%.1f" - entry = TPSdot, "TPS DOT", int, "%d" - entry = advance, "Advance", int, "%d" - entry = dwell, "Dwell", float, "%.1f" - entry = batteryVoltage, "Battery V", float, "%.1f" - entry = rpmDOT, "rpm/s", int, "%d" - entry = flex, "Eth %", int, "%d", { flexEnabled } - entry = errorNum, "Error #", int, "%d" - entry = currentError, "Error ID", int, "%d" - entry = map_psi, "Boost PSI", float, "%.1f" - entry = boostTarget, "Boost Target",int, "%d", { boostEnabled } - entry = boostDuty, "Boost Duty", int, "%d", { boostEnabled } - entry = boostCutOut , "Boost cut", int, "%d" - entry = launchHard , "Launch Hard", int, "%d" - entry = hardLimitOn , "Hard Limiter",int, "%d" - entry = idleLoad, "IAC value", int, "%d" - entry = baro, "Baro Pressure",int, "%d" - -#if CAN_COMMANDS - entry = canin_gauge0, "CanIn CH0", int, "%d" - entry = canin_gauge1, "CanIn CH1", int, "%d" - entry = canin_gauge2, "CanIn CH2", int, "%d" - entry = canin_gauge3, "CanIn CH3", int, "%d" - entry = canin_gauge4, "CanIn CH4", int, "%d" - entry = canin_gauge5, "CanIn CH5", int, "%d" - entry = canin_gauge6, "CanIn CH6", int, "%d" - entry = canin_gauge7, "CanIn CH7", int, "%d" -#endif - - -[LoggerDefinition] - ; valid logger types: composite, tooth, trigger, csv - - ;loggerDef = uniqueName, Display Name, type - loggerDef = tooth, "Tooth Logger", tooth - ;dataReadCommand = "r\\x00\\xf4\\x00\\x00\\x04\\x00" ; standard TS command format - dataReadCommand = "T" ; Basic TS command format - dataReadTimeout = 15000 ; time in ms - dataReadyCondition = { toothLog1Ready } - dataLength = 256 ; in bytes, including headers, footers and data (not used) - - ;recordDef = headerLen. footerLen, recordLen - recordDef = 0, 0, 2; in bytes, the recordLen is for each record, currently limited to 4 bytes - - ;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition - recordField = toothGap, "ToothTime", 0, 16, 1.0, "uS" - - -[Tools] - ;addTool = toolName, PanelName - addTool = veTableGenerator, "VE Table Generator", veTable1Tbl - addTool = afrTableGenerator, "AFR Table Generator", afrTable1Tbl - - -[VeAnalyze] - ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition - veAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection - lambdaTargetTables = afrTable1Tbl, afrTSCustom, - filter = std_xAxisMin ; Auto build with appropriate axis channels - ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true - filter = std_xAxisMax ; Auto build with appropriate axis channels - filter = std_yAxisMin ; Auto build with appropriate axis channels - filter = std_yAxisMax ; Auto build with appropriate axis channels - filter = std_DeadLambda ; Auto build - -#if CELSIUS - filter = minCltFilter, "Minimum CLT", coolant, < , 71, , true -#else - filter = minCltFilter, "Minimum CLT", coolant, < , 160, , true -#endif - filter = accelFilter, "Accel Flag" , engine, & , 16, , false - filter = aseFilter, "ASE Flag" , engine, & , 4, , false - filter = overrunFilter, "Overrun" , pulseWidth, = , 0, , false - filter = std_Custom ; Standard Custom Expression Filter. - -;------------- WUE VEAL not currently working ---------------- -;[WueAnalyze] - ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition - ; wueAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection -; wueAnalyzeMap = afrTable1Tbl, warmup_afr_curve, warmup_curve, afr, coolant, warmupEnrich ;warmup_afr_curve, -; lambdaTargetTables = afrTable1Tbl, afrTSCustom, - ;filter = std_xAxisMin ; Auto build with appropriate axis channels - ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true - ;filter = std_xAxisMax ; Auto build with appropriate axis channels - ;filter = std_yAxisMin ; Auto build with appropriate axis channels - ;filter = std_yAxisMax ; Auto build with appropriate axis channels - ;filter = std_DeadLambda ; Auto build - -; filter = maxTPSFilter, "High Throttle", tps, < , 15, , true -;------------- WUE VEAL not currently working ---------------- +;------------------------------------------------------------------------------- +#unset CAN_COMMANDS +#unset enablehardware_test + +[MegaTune] + MTversion = 2.25 + + queryCommand = "Q" + signature = "speeduino 201801-dev" + versionInfo = "S" ;This info is what is displayed to user + +[TunerStudio] + iniSpecVersion = 3.46 + +;------------------------------------------------------------------------------- + +[SettingGroups] + ; the referenceName will over-ride previous, so if you are creating a + ; settingGroup with a reference name of lambdaSensor, it will replace the + ; setting group defined in the settingGroups.xml of the TunerStudio config + ; folder. If is is an undefined referenceName, it will be added. + ; keyword = referenceName, DisplayName + + ;settingGroup = boostUnits, "Boost table units" + ;settingOption = DEFAULT, "kPa" + ;settingOption = BOOSTPSI, "PSI" + settingGroup = enablehardware_test, "Enable Hardware Test Page" + + +[PcVariables] + ; valid types: boolean, double, int, list + ; + ; no offset as they are local variables. + ; entry format the same as Constants, except there is no offset. + ; arrays are not yet supported. + ; name = class, type, shape, units, scale, translate, lo, hi, digits + ; name = type, min, max; + ; + ; type List: value will be index. + tsCanId = bits, U08, [0:3], "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" + rpmhigh = scalar, U16, "rpm", 1, 0, 0, 30000, 0 + rpmwarn = scalar, U16, "rpm", 1, 0, 0, 30000, 0 + rpmdang = scalar, U16, "rpm", 1, 0, 0, 30000, 0 + + idleUnits = bits, U08, [0:2], "None", "On/Off", "Duty Cycle", "Duty Cycle", "Steps", "Steps" + +[Constants] + + ;---------------------------------------------------------------------------- + ; Constants Definition + ; -------------------- + ; + ; Scalar Values + ; ------------- + ; The scaling and translation values are used as follows: + ; msValue = userValue / scale - translate + ; userValue = (msValue + translate) * scale + ; + ; + ; Temperatures are fine, check out the Fielding IAC example (fastIdleT). + ; + ; Array Values + ; ------------ + ; Arrays are specified just like scalars, except that they have a "shape" + ; entry in the fourth parameter. The shape allows you to define lists or + ; tables, for example [8] defines a list with eight values and [2x4] defines + ; a table with eight values (two rows and four columns). Tables may be + ; stored in either "X-" or "Y-order." X-order means that memory is layed + ; out like. + ; + ; [x1,y1] [x2,y1]...[xn,y1] [x1,y2]... + ; + ; Y-order would be + ; + ; [x1,y1] [x1,y2]...[x1,yn] [x2,y1]... + ; + ; To use the TableEditor, you must define two lists and a table, and + ; the lengths of the lists must correspond to the shape of the table. + ; + ; Bit Fields + ; ---------- + ; Bits are numbered 0-7, the rightmost being bit zero. The basic + ; data word that stores bit fields must be unsigned. + ; + ; You need NOT supply the correct number of labels matching the + ; number of bits you've specified (one bit requires 2 values, two + ; bits requires 4 values and so on). If you neglect to supply enough + ; labels, they will be synthesized using the sequence "1", "2" and so + ; on based upon their position in the sequence (the cltType and matType + ; will end up with identical lists). + ; + ; If you specify a label as "INVALID" (all upper case), then it will + ; not be displayed in the combo box, so you can leave out values that + ; make no sense. + ; + ;---------------------------------------------------------------------------- + + endianness = little + nPages = 10 + pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192 + + ;burnCommand = "B" + ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" + ;pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" + ;pageValueWrite = "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" + + ; New commands + ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 128, 192 + pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A" + burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" + pageReadCommand = "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v" + pageValueWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" + pageChunkWrite = "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v", "w%2i%2o%2c%v" + + blockingFactor = 2048 + tableBlockingFactor = 2048 + delayAfterPortOpen=1000 + ;validateArrayBounds = true + blockReadTimeout = 2000 + ;tsWriteBlocks = on + interWriteDelay = 5 ;Ignored when tsWriteBlocks is on + pageActivationDelay = 10 + +;New for TS 3.0.08ish upwards, define lists of standard I/O options + + #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + + #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" + #define CAN_ADDRESS_HEX_inv255 = $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT10inv, "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define CAN_ADDRESS_HEX_00XX = "INVALID", "0x001", "0x002", "0x003", "0x004", "0x005", "0x006", "0x007", "0x008", "0x009", "0x00A", "0x00B", "0x00C", "0x00D", "0x00E", "0x00F", "0x010", "0x011", "0x012", "0x013", "0x014", "0x015", "0x016", "0x017", "0x018", "0x019", "0x01A", "0x01B", "0x01C", "0x01D", "0x01E", "0x01F", "0x020", "0x021", "0x022", "0x023", "0x024", "0x025", "0x026", "0x027", "0x028", "0x029", "0x02A", "0x02B", "0x02C", "0x02D", "0x02E", "0x02F", "0x030", "0x031", "0x032", "0x033", "0x034", "0x035", "0x036", "0x037", "0x038", "0x039", "0x03A", "0x03B", "0x03C", "0x03D", "0x03E", "0x03F", "0x040", "0x041", "0x042", "0x043", "0x044", "0x045", "0x046", "0x047", "0x048", "0x049", "0x04A", "0x04B", "0x04C", "0x04D", "0x04E", "0x04F", "0x050", "0x051", "0x052", "0x053", "0x054", "0x055", "0x056", "0x057", "0x058", "0x059", "0x05A", "0x05B", "0x05C", "0x05D", "0x05E", "0x05F" ,"0x060", "0x061", "0x062", "0x063", "0x064", "0x065", "0x066", "0x067", "0x068", "0x069", "0x06A", "0x06B", "0x06C", "0x06D", "0x06E", "0x06F", "0x070", "0x071", "0x072", "0x073", "0x074", "0x075", "0x076", "0x077", "0x078", "0x079", "0x07A", "0x07B", "0x07C", "0x07D", "0x07E", "0x07F", "0x080", "0x081", "0x082", "0x083", "0x084", "0x085", "0x086", "0x087", "0x088", "0x089", "0x08A", "0x08B", "0x08C", "0x08D", "0x08E", "0x08F" ,"0x090", "0x091", "0x092", "0x093", "0x094", "0x095", "0x096", "0x097", "0x098", "0x099", "0x09A", "0x09B", "0x09C", "0x09D", "0x09E", "0x09F", "0x0A0", "0x0A1", "0x0A2", "0x0A3", "0x0A4", "0x0A5", "0x0A6", "0x0A7", "0x0A8", "0x0A9", "0x0AA", "0x0AB", "0x0AC", "0x0AD", "0x0AE", "0x0AF", "0x0B0", "0x0B1", "0x0B2", "0x0B3", "0x0B4", "0x0B5", "0x0B6", "0x0B7", "0x0B8", "0x0B9", "0x0BA", "0x0BB", "0x0BC", "0x0BD", "0x0BE", "0x0BF" ,"0x0C0", "0x0C1", "0x0C2", "0x0C3", "0x0C4", "0x0C5", "0x0C6", "0x0C7", "0x0C8", "0x0C9", "0x0CA", "0x0CB", "0x0CC", "0x0CD", "0x0CE", "0x0CF", "0x0D0", "0x0D1", "0x0D2", "0x0D3", "0x0D4", "0x0D5", "0x0D6", "0x0D7", "0x0D8", "0x0D9", "0x0DA", "0x0DB", "0x0DC", "0x0DD", "0x0DE", "0x0DF", "0x0E0", "0x0E1", "0x0E2", "0x0E3", "0x0E4", "0x0E5", "0x0E6", "0x0E7", "0x0E8", "0x0E9", "0x0EA", "0x0EB", "0x0EC", "0x0ED", "0x0EE", "0x0EF" ,"0x0F0", "0x0F1", "0x0F2", "0x0F3", "0x0F4", "0x0F5", "0x0F6", "0x0F7", "0x0F8", "0x0F9", "0x0FA", "0x0FB", "0x0FC", "0x0FD", "0x0FE", "0x0FF" + #define CAN_ADDRESS_HEX_01XX = "0x100", "0x101", "0x102", "0x103", "0x104", "0x105", "0x106", "0x107", "0x108", "0x109", "0x10A", "0x10B", "0x10C", "0x10D", "0x10E", "0x10F", "0x110", "0x111", "0x112", "0x113", "0x114", "0x115", "0x116", "0x117", "0x118", "0x119", "0x11A", "0x11B", "0x11C", "0x11D", "0x11E", "0x11F", "0x120", "0x121", "0x122", "0x123", "0x124", "0x125", "0x126", "0x127", "0x128", "0x129", "0x12A", "0x12B", "0x12C", "0x12D", "0x12E", "0x12F", "0x130", "0x131", "0x132", "0x133", "0x134", "0x135", "0x136", "0x137", "0x138", "0x139", "0x13A", "0x13B", "0x13C", "0x13D", "0x13E", "0x13F", "0x140", "0x141", "0x142", "0x143", "0x144", "0x145", "0x146", "0x147", "0x148", "0x149", "0x14A", "0x14B", "0x14C", "0x14D", "0x14E", "0x14F", "0x150", "0x151", "0x152", "0x153", "0x154", "0x155", "0x156", "0x157", "0x158", "0x159", "0x15A", "0x15B", "0x15C", "0x15D", "0x15E", "0x15F" ,"0x160", "0x161", "0x162", "0x163", "0x164", "0x165", "0x166", "0x167", "0x168", "0x169", "0x16A", "0x16B", "0x16C", "0x16D", "0x16E", "0x16F", "0x170", "0x171", "0x172", "0x173", "0x174", "0x175", "0x176", "0x177", "0x178", "0x179", "0x17A", "0x17B", "0x17C", "0x17D", "0x17E", "0x17F", "0x180", "0x181", "0x182", "0x183", "0x184", "0x185", "0x186", "0x187", "0x188", "0x189", "0x18A", "0x18B", "0x18C", "0x18D", "0x18E", "0x18F" ,"0x190", "0x191", "0x192", "0x193", "0x194", "0x195", "0x196", "0x197", "0x198", "0x199", "0x19A", "0x19B", "0x19C", "0x19D", "0x19E", "0x19F", "0x1A0", "0x1A1", "0x1A2", "0x1A3", "0x1A4", "0x1A5", "0x1A6", "0x1A7", "0x1A8", "0x1A9", "0x1AA", "0x1AB", "0x1AC", "0x1AD", "0x1AE", "0x1AF", "0x1B0", "0x1B1", "0x1B2", "0x1B3", "0x1B4", "0x1B5", "0x1B6", "0x1B7", "0x1B8", "0x1B9", "0x1BA", "0x1BB", "0x1BC", "0x1BD", "0x1BE", "0x1BF" ,"0x1C0", "0x1C1", "0x1C2", "0x1C3", "0x1C4", "0x1C5", "0x1C6", "0x1C7", "0x1C8", "0x1C9", "0x1CA", "0x1CB", "0x1CC", "0x1CD", "0x1CE", "0x1CF", "0x1D0", "0x1D1", "0x1D2", "0x1D3", "0x1D4", "0x1D5", "0x1D6", "0x1D7", "0x1D8", "0x1D9", "0x1DA", "0x1DB", "0x1DC", "0x1DD", "0x1DE", "0x1DF", "0x1E0", "0x1E1", "0x1E2", "0x1E3", "0x1E4", "0x1E5", "0x1E6", "0x1E7", "0x1E8", "0x1E9", "0x1EA", "0x1EB", "0x1EC", "0x1ED", "0x1EE", "0x1EF" ,"0x1F0", "0x1F1", "0x1F2", "0x1F3", "0x1F4", "0x1F5", "0x1F6", "0x1F7", "0x1F8", "0x1F9", "0x1FA", "0x1FB", "0x1FC", "0x1FD", "0x1FE", "0x1FF" + #define CAN_ADDRESS_HEX_02XX = "0x200", "0x201", "0x202", "0x203", "0x204", "0x205", "0x206", "0x207", "0x208", "0x209", "0x20A", "0x20B", "0x20C", "0x20D", "0x20E", "0x20F", "0x210", "0x211", "0x212", "0x213", "0x214", "0x215", "0x216", "0x217", "0x218", "0x219", "0x21A", "0x21B", "0x21C", "0x21D", "0x21E", "0x21F", "0x220", "0x221", "0x222", "0x223", "0x224", "0x225", "0x226", "0x227", "0x228", "0x229", "0x22A", "0x22B", "0x22C", "0x22D", "0x22E", "0x22F", "0x230", "0x231", "0x232", "0x233", "0x234", "0x235", "0x236", "0x237", "0x238", "0x239", "0x23A", "0x23B", "0x23C", "0x23D", "0x23E", "0x23F", "0x240", "0x241", "0x242", "0x243", "0x244", "0x245", "0x246", "0x247", "0x248", "0x249", "0x24A", "0x24B", "0x24C", "0x24D", "0x24E", "0x24F", "0x250", "0x251", "0x252", "0x253", "0x254", "0x255", "0x256", "0x257", "0x258", "0x259", "0x25A", "0x25B", "0x25C", "0x25D", "0x25E", "0x25F" ,"0x260", "0x261", "0x262", "0x263", "0x264", "0x265", "0x266", "0x267", "0x268", "0x269", "0x26A", "0x26B", "0x26C", "0x26D", "0x26E", "0x26F", "0x270", "0x271", "0x272", "0x273", "0x274", "0x275", "0x276", "0x277", "0x278", "0x279", "0x27A", "0x27B", "0x27C", "0x27D", "0x27E", "0x27F", "0x280", "0x281", "0x282", "0x283", "0x284", "0x285", "0x286", "0x287", "0x288", "0x289", "0x28A", "0x28B", "0x28C", "0x28D", "0x28E", "0x28F" ,"0x290", "0x291", "0x292", "0x293", "0x294", "0x295", "0x296", "0x297", "0x298", "0x299", "0x29A", "0x29B", "0x29C", "0x29D", "0x29E", "0x29F", "0x2A0", "0x2A1", "0x2A2", "0x2A3", "0x2A4", "0x2A5", "0x2A6", "0x2A7", "0x2A8", "0x2A9", "0x2AA", "0x2AB", "0x2AC", "0x2AD", "0x2AE", "0x2AF", "0x2B0", "0x2B1", "0x2B2", "0x2B3", "0x2B4", "0x2B5", "0x2B6", "0x2B7", "0x2B8", "0x2B9", "0x2BA", "0x2BB", "0x2BC", "0x2BD", "0x2BE", "0x2BF" ,"0x2C0", "0x2C1", "0x2C2", "0x2C3", "0x2C4", "0x2C5", "0x2C6", "0x2C7", "0x2C8", "0x2C9", "0x2CA", "0x2CB", "0x2CC", "0x2CD", "0x2CE", "0x2CF", "0x2D0", "0x2D1", "0x2D2", "0x2D3", "0x2D4", "0x2D5", "0x2D6", "0x2D7", "0x2D8", "0x2D9", "0x2DA", "0x2DB", "0x2DC", "0x2DD", "0x2DE", "0x2DF", "0x2E0", "0x2E1", "0x2E2", "0x2E3", "0x2E4", "0x2E5", "0x2E6", "0x2E7", "0x2E8", "0x2E9", "0x2EA", "0x2EB", "0x2EC", "0x2ED", "0x2EE", "0x2EF" ,"0x2F0", "0x2F1", "0x2F2", "0x2F3", "0x2F4", "0x2F5", "0x2F6", "0x2F7", "0x2F8", "0x2F9", "0x2FA", "0x2FB", "0x2FC", "0x2FD", "0x2FE", "0x2FF" + #define CAN_ADDRESS_HEX_03XX = "0x300", "0x301", "0x302", "0x303", "0x304", "0x305", "0x306", "0x307", "0x308", "0x309", "0x30A", "0x30B", "0x30C", "0x30D", "0x30E", "0x30F", "0x310", "0x311", "0x312", "0x313", "0x314", "0x315", "0x316", "0x317", "0x318", "0x319", "0x31A", "0x31B", "0x31C", "0x31D", "0x31E", "0x31F", "0x320", "0x321", "0x322", "0x323", "0x324", "0x325", "0x326", "0x327", "0x328", "0x329", "0x32A", "0x32B", "0x32C", "0x32D", "0x32E", "0x32F", "0x330", "0x331", "0x332", "0x333", "0x334", "0x335", "0x336", "0x337", "0x338", "0x339", "0x33A", "0x33B", "0x33C", "0x33D", "0x33E", "0x33F", "0x340", "0x341", "0x342", "0x343", "0x344", "0x345", "0x346", "0x347", "0x348", "0x349", "0x34A", "0x34B", "0x34C", "0x34D", "0x34E", "0x34F", "0x350", "0x351", "0x352", "0x353", "0x354", "0x355", "0x356", "0x357", "0x358", "0x359", "0x35A", "0x35B", "0x35C", "0x35D", "0x35E", "0x35F" ,"0x360", "0x361", "0x362", "0x363", "0x364", "0x365", "0x366", "0x367", "0x368", "0x369", "0x36A", "0x36B", "0x36C", "0x36D", "0x36E", "0x36F", "0x370", "0x371", "0x372", "0x373", "0x374", "0x375", "0x376", "0x377", "0x378", "0x379", "0x37A", "0x37B", "0x37C", "0x37D", "0x37E", "0x37F", "0x380", "0x381", "0x382", "0x383", "0x384", "0x385", "0x386", "0x387", "0x388", "0x389", "0x38A", "0x38B", "0x38C", "0x38D", "0x38E", "0x38F" ,"0x390", "0x391", "0x392", "0x393", "0x394", "0x395", "0x396", "0x397", "0x398", "0x399", "0x39A", "0x39B", "0x39C", "0x39D", "0x39E", "0x39F", "0x3A0", "0x3A1", "0x3A2", "0x3A3", "0x3A4", "0x3A5", "0x3A6", "0x3A7", "0x3A8", "0x3A9", "0x3AA", "0x3AB", "0x3AC", "0x3AD", "0x3AE", "0x3AF", "0x3B0", "0x3B1", "0x3B2", "0x3B3", "0x3B4", "0x3B5", "0x3B6", "0x3B7", "0x3B8", "0x3B9", "0x3BA", "0x3BB", "0x3BC", "0x3BD", "0x3BE", "0x3BF" ,"0x3C0", "0x3C1", "0x3C2", "0x3C3", "0x3C4", "0x3C5", "0x3C6", "0x3C7", "0x3C8", "0x3C9", "0x3CA", "0x3CB", "0x3CC", "0x3CD", "0x3CE", "0x3CF", "0x3D0", "0x3D1", "0x3D2", "0x3D3", "0x3D4", "0x3D5", "0x3D6", "0x3D7", "0x3D8", "0x3D9", "0x3DA", "0x3DB", "0x3DC", "0x3DD", "0x3DE", "0x3DF", "0x3E0", "0x3E1", "0x3E2", "0x3E3", "0x3E4", "0x3E5", "0x3E6", "0x3E7", "0x3E8", "0x3E9", "0x3EA", "0x3EB", "0x3EC", "0x3ED", "0x3EE", "0x3EF" ,"0x3F0", "0x3F1", "0x3F2", "0x3F3", "0x3F4", "0x3F5", "0x3F6", "0x3F7", "0x3F8", "0x3F9", "0x3FA", "0x3FB", "0x3FC", "0x3FD", "0x3FE", "0x3FF" + #define CAN_ADDRESS_HEX_04XX = "0x400", "0x401", "0x402", "0x403", "0x404", "0x405", "0x406", "0x407", "0x408", "0x409", "0x40A", "0x40B", "0x40C", "0x40D", "0x40E", "0x40F", "0x410", "0x411", "0x412", "0x413", "0x414", "0x415", "0x416", "0x417", "0x418", "0x419", "0x41A", "0x41B", "0x41C", "0x41D", "0x41E", "0x41F", "0x420", "0x421", "0x422", "0x423", "0x424", "0x425", "0x426", "0x427", "0x428", "0x429", "0x42A", "0x42B", "0x42C", "0x42D", "0x42E", "0x42F", "0x430", "0x431", "0x432", "0x433", "0x434", "0x435", "0x436", "0x437", "0x438", "0x439", "0x43A", "0x43B", "0x43C", "0x43D", "0x43E", "0x43F", "0x440", "0x441", "0x442", "0x443", "0x444", "0x445", "0x446", "0x447", "0x448", "0x449", "0x44A", "0x44B", "0x44C", "0x44D", "0x44E", "0x44F", "0x450", "0x451", "0x452", "0x453", "0x454", "0x455", "0x456", "0x457", "0x458", "0x459", "0x45A", "0x45B", "0x45C", "0x45D", "0x45E", "0x45F" ,"0x460", "0x461", "0x462", "0x463", "0x464", "0x465", "0x466", "0x467", "0x468", "0x469", "0x46A", "0x46B", "0x46C", "0x46D", "0x46E", "0x46F", "0x470", "0x471", "0x472", "0x473", "0x474", "0x475", "0x476", "0x477", "0x478", "0x479", "0x47A", "0x47B", "0x47C", "0x47D", "0x47E", "0x47F", "0x480", "0x481", "0x482", "0x483", "0x484", "0x485", "0x486", "0x487", "0x488", "0x489", "0x48A", "0x48B", "0x48C", "0x48D", "0x48E", "0x48F" ,"0x490", "0x491", "0x492", "0x493", "0x494", "0x495", "0x496", "0x497", "0x498", "0x499", "0x49A", "0x49B", "0x49C", "0x49D", "0x49E", "0x49F", "0x4A0", "0x4A1", "0x4A2", "0x4A3", "0x4A4", "0x4A5", "0x4A6", "0x4A7", "0x4A8", "0x4A9", "0x4AA", "0x4AB", "0x4AC", "0x4AD", "0x4AE", "0x4AF", "0x4B0", "0x4B1", "0x4B2", "0x4B3", "0x4B4", "0x4B5", "0x4B6", "0x4B7", "0x4B8", "0x4B9", "0x4BA", "0x4BB", "0x4BC", "0x4BD", "0x4BE", "0x4BF" ,"0x4C0", "0x4C1", "0x4C2", "0x4C3", "0x4C4", "0x4C5", "0x4C6", "0x4C7", "0x4C8", "0x4C9", "0x4CA", "0x4CB", "0x4CC", "0x4CD", "0x4CE", "0x4CF", "0x4D0", "0x4D1", "0x4D2", "0x4D3", "0x4D4", "0x4D5", "0x4D6", "0x4D7", "0x4D8", "0x4D9", "0x4DA", "0x4DB", "0x4DC", "0x4DD", "0x4DE", "0x4DF", "0x4E0", "0x4E1", "0x4E2", "0x4E3", "0x4E4", "0x4E5", "0x4E6", "0x4E7", "0x4E8", "0x4E9", "0x4EA", "0x4EB", "0x4EC", "0x4ED", "0x4EE", "0x4EF" ,"0x4F0", "0x4F1", "0x4F2", "0x4F3", "0x4F4", "0x4F5", "0x4F6", "0x4F7", "0x4F8", "0x4F9", "0x4FA", "0x4FB", "0x4FC", "0x4FD", "0x4FE", "0x4FF" + #define CAN_ADDRESS_HEX_05XX = "0x500", "0x501", "0x502", "0x503", "0x504", "0x505", "0x506", "0x507", "0x508", "0x509", "0x50A", "0x50B", "0x50C", "0x50D", "0x50E", "0x50F", "0x510", "0x511", "0x512", "0x513", "0x514", "0x515", "0x516", "0x517", "0x518", "0x519", "0x51A", "0x51B", "0x51C", "0x51D", "0x51E", "0x51F", "0x520", "0x521", "0x522", "0x523", "0x524", "0x525", "0x526", "0x527", "0x528", "0x529", "0x52A", "0x52B", "0x52C", "0x52D", "0x52E", "0x52F", "0x530", "0x531", "0x532", "0x533", "0x534", "0x535", "0x536", "0x537", "0x538", "0x539", "0x53A", "0x53B", "0x53C", "0x53D", "0x53E", "0x53F", "0x540", "0x541", "0x542", "0x543", "0x544", "0x545", "0x546", "0x547", "0x548", "0x549", "0x54A", "0x54B", "0x54C", "0x54D", "0x54E", "0x54F", "0x550", "0x551", "0x552", "0x553", "0x554", "0x555", "0x556", "0x557", "0x558", "0x559", "0x55A", "0x55B", "0x55C", "0x55D", "0x55E", "0x55F" ,"0x560", "0x561", "0x562", "0x563", "0x564", "0x565", "0x566", "0x567", "0x568", "0x569", "0x56A", "0x56B", "0x56C", "0x56D", "0x56E", "0x56F", "0x570", "0x571", "0x572", "0x573", "0x574", "0x575", "0x576", "0x577", "0x578", "0x579", "0x57A", "0x57B", "0x57C", "0x57D", "0x57E", "0x57F", "0x580", "0x581", "0x582", "0x583", "0x584", "0x585", "0x586", "0x587", "0x588", "0x589", "0x58A", "0x58B", "0x58C", "0x58D", "0x58E", "0x58F" ,"0x590", "0x591", "0x592", "0x593", "0x594", "0x595", "0x596", "0x597", "0x598", "0x599", "0x59A", "0x59B", "0x59C", "0x59D", "0x59E", "0x59F", "0x5A0", "0x5A1", "0x5A2", "0x5A3", "0x5A4", "0x5A5", "0x5A6", "0x5A7", "0x5A8", "0x5A9", "0x5AA", "0x5AB", "0x5AC", "0x5AD", "0x5AE", "0x5AF", "0x5B0", "0x5B1", "0x5B2", "0x5B3", "0x5B4", "0x5B5", "0x5B6", "0x5B7", "0x5B8", "0x5B9", "0x5BA", "0x5BB", "0x5BC", "0x5BD", "0x5BE", "0x5BF" ,"0x5C0", "0x5C1", "0x5C2", "0x5C3", "0x5C4", "0x5C5", "0x5C6", "0x5C7", "0x5C8", "0x5C9", "0x5CA", "0x5CB", "0x5CC", "0x5CD", "0x5CE", "0x5CF", "0x5D0", "0x5D1", "0x5D2", "0x5D3", "0x5D4", "0x5D5", "0x5D6", "0x5D7", "0x5D8", "0x5D9", "0x5DA", "0x5DB", "0x5DC", "0x5DD", "0x5DE", "0x5DF", "0x5E0", "0x5E1", "0x5E2", "0x5E3", "0x5E4", "0x5E5", "0x5E6", "0x5E7", "0x5E8", "0x5E9", "0x5EA", "0x5EB", "0x5EC", "0x5ED", "0x5EE", "0x5EF" ,"0x5F0", "0x5F1", "0x5F2", "0x5F3", "0x5F4", "0x5F5", "0x5F6", "0x5F7", "0x5F8", "0x5F9", "0x5FA", "0x5FB", "0x5FC", "0x5FD", "0x5FE", "0x5FF" + #define CAN_ADDRESS_HEX_06XX = "0x600", "0x601", "0x602", "0x603", "0x604", "0x605", "0x606", "0x607", "0x608", "0x609", "0x60A", "0x60B", "0x60C", "0x60D", "0x60E", "0x60F", "0x610", "0x611", "0x612", "0x613", "0x614", "0x615", "0x616", "0x617", "0x618", "0x619", "0x61A", "0x61B", "0x61C", "0x61D", "0x61E", "0x61F", "0x620", "0x621", "0x622", "0x623", "0x624", "0x625", "0x626", "0x627", "0x628", "0x629", "0x62A", "0x62B", "0x62C", "0x62D", "0x62E", "0x62F", "0x630", "0x631", "0x632", "0x633", "0x634", "0x635", "0x636", "0x637", "0x638", "0x639", "0x63A", "0x63B", "0x63C", "0x63D", "0x63E", "0x63F", "0x640", "0x641", "0x642", "0x643", "0x644", "0x645", "0x646", "0x647", "0x648", "0x649", "0x64A", "0x64B", "0x64C", "0x64D", "0x64E", "0x64F", "0x650", "0x651", "0x652", "0x653", "0x654", "0x655", "0x656", "0x657", "0x658", "0x659", "0x65A", "0x65B", "0x65C", "0x65D", "0x65E", "0x65F" ,"0x660", "0x661", "0x662", "0x663", "0x664", "0x665", "0x666", "0x667", "0x668", "0x669", "0x66A", "0x66B", "0x66C", "0x66D", "0x66E", "0x66F", "0x670", "0x671", "0x672", "0x673", "0x674", "0x675", "0x676", "0x677", "0x678", "0x679", "0x67A", "0x67B", "0x67C", "0x67D", "0x67E", "0x67F", "0x680", "0x681", "0x682", "0x683", "0x684", "0x685", "0x686", "0x687", "0x688", "0x689", "0x68A", "0x68B", "0x68C", "0x68D", "0x68E", "0x68F" ,"0x690", "0x691", "0x692", "0x693", "0x694", "0x695", "0x696", "0x697", "0x698", "0x699", "0x69A", "0x69B", "0x69C", "0x69D", "0x69E", "0x69F", "0x6A0", "0x6A1", "0x6A2", "0x6A3", "0x6A4", "0x6A5", "0x6A6", "0x6A7", "0x6A8", "0x6A9", "0x6AA", "0x6AB", "0x6AC", "0x6AD", "0x6AE", "0x6AF", "0x6B0", "0x6B1", "0x6B2", "0x6B3", "0x6B4", "0x6B5", "0x6B6", "0x6B7", "0x6B8", "0x6B9", "0x6BA", "0x6BB", "0x6BC", "0x6BD", "0x6BE", "0x6BF" ,"0x6C0", "0x6C1", "0x6C2", "0x6C3", "0x6C4", "0x6C5", "0x6C6", "0x6C7", "0x6C8", "0x6C9", "0x6CA", "0x6CB", "0x6CC", "0x6CD", "0x6CE", "0x6CF", "0x6D0", "0x6D1", "0x6D2", "0x6D3", "0x6D4", "0x6D5", "0x6D6", "0x6D7", "0x6D8", "0x6D9", "0x6DA", "0x6DB", "0x6DC", "0x6DD", "0x6DE", "0x6DF", "0x6E0", "0x6E1", "0x6E2", "0x6E3", "0x6E4", "0x6E5", "0x6E6", "0x6E7", "0x6E8", "0x6E9", "0x6EA", "0x6EB", "0x6EC", "0x6ED", "0x6EE", "0x6EF" ,"0x6F0", "0x6F1", "0x6F2", "0x6F3", "0x6F4", "0x6F5", "0x6F6", "0x6F7", "0x6F8", "0x6F9", "0x6FA", "0x6FB", "0x6FC", "0x6FD", "0x6FE", "0x6FF" + #define CAN_ADDRESS_HEX_07XX = "0x700", "0x701", "0x702", "0x703", "0x704", "0x705", "0x706", "0x707", "0x708", "0x709", "0x70A", "0x70B", "0x70C", "0x70D", "0x70E", "0x70F", "0x710", "0x711", "0x712", "0x713", "0x714", "0x715", "0x716", "0x717", "0x718", "0x719", "0x71A", "0x71B", "0x71C", "0x71D", "0x71E", "0x71F", "0x720", "0x721", "0x722", "0x723", "0x724", "0x725", "0x726", "0x727", "0x728", "0x729", "0x72A", "0x72B", "0x72C", "0x72D", "0x72E", "0x72F", "0x730", "0x731", "0x732", "0x733", "0x734", "0x735", "0x736", "0x737", "0x738", "0x739", "0x73A", "0x73B", "0x73C", "0x73D", "0x73E", "0x73F", "0x740", "0x741", "0x742", "0x743", "0x744", "0x745", "0x746", "0x747", "0x748", "0x749", "0x74A", "0x74B", "0x74C", "0x74D", "0x74E", "0x74F", "0x750", "0x751", "0x752", "0x753", "0x754", "0x755", "0x756", "0x757", "0x758", "0x759", "0x75A", "0x75B", "0x75C", "0x75D", "0x75E", "0x75F" ,"0x760", "0x761", "0x762", "0x763", "0x764", "0x765", "0x766", "0x767", "0x768", "0x769", "0x76A", "0x76B", "0x76C", "0x76D", "0x76E", "0x76F", "0x770", "0x771", "0x772", "0x773", "0x774", "0x775", "0x776", "0x777", "0x778", "0x779", "0x77A", "0x77B", "0x77C", "0x77D", "0x77E", "0x77F", "0x780", "0x781", "0x782", "0x783", "0x784", "0x785", "0x786", "0x787", "0x788", "0x789", "0x78A", "0x78B", "0x78C", "0x78D", "0x78E", "0x78F" ,"0x790", "0x791", "0x792", "0x793", "0x794", "0x795", "0x796", "0x797", "0x798", "0x799", "0x79A", "0x79B", "0x79C", "0x79D", "0x79E", "0x79F", "0x7A0", "0x7A1", "0x7A2", "0x7A3", "0x7A4", "0x7A5", "0x7A6", "0x7A7", "0x7A8", "0x7A9", "0x7AA", "0x7AB", "0x7AC", "0x7AD", "0x7AE", "0x7AF", "0x7B0", "0x7B1", "0x7B2", "0x7B3", "0x7B4", "0x7B5", "0x7B6", "0x7B7", "0x7B8", "0x7B9", "0x7BA", "0x7BB", "0x7BC", "0x7BD", "0x7BE", "0x7BF" ,"0x7C0", "0x7C1", "0x7C2", "0x7C3", "0x7C4", "0x7C5", "0x7C6", "0x7C7", "0x7C8", "0x7C9", "0x7CA", "0x7CB", "0x7CC", "0x7CD", "0x7CE", "0x7CF", "0x7D0", "0x7D1", "0x7D2", "0x7D3", "0x7D4", "0x7D5", "0x7D6", "0x7D7", "0x7D8", "0x7D9", "0x7DA", "0x7DB", "0x7DC", "0x7DD", "0x7DE", "0x7DF", "0x7E0", "0x7E1", "0x7E2", "0x7E3", "0x7E4", "0x7E5", "0x7E6", "0x7E7", "0x7E8", "0x7E9", "0x7EA", "0x7EB", "0x7EC", "0x7ED", "0x7EE", "0x7EF" ,"0x7F0", "0x7F1", "0x7F2", "0x7F3", "0x7F4", "0x7F5", "0x7F6", "0x7F7", "0x7F8", "0x7F9", "0x7FA", "0x7FB", "0x7FC", "0x7FD", "0x7FE", "0x7FF" + #define CAN_ADDRESS_HEX = $CAN_ADDRESS_HEX_01XX, $CAN_ADDRESS_HEX_02XX, $CAN_ADDRESS_HEX_03XX, $CAN_ADDRESS_HEX_04XX, $CAN_ADDRESS_HEX_05XX, $CAN_ADDRESS_HEX_06XX, $CAN_ADDRESS_HEX_07XX, $CAN_ADDRESS_HEX_inv255 + +;Page 1 is the fuel map and axis bins only +page = 1 + ; name = bits, type, offset, bits + ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits + ; name = scalar, type, offset, units, scale, translate, lo, hi, digits + veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 + rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 + #if SPEED_DENSITY + ;mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0 + mapBins = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 + #elif ALPHA_N + tpsBins = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 + #endif + + +;-------------------------------------------------- +;Start Page 2 +;Page 2 is all general settings (Previously part of page 1) +;-------------------------------------------------- +page = 2 + flexBoostLow = scalar, S08, 0, "kPa", 1.0, 0.0, -127, 127, 0 + flexBoostHigh = scalar, U08, 1, "kPa", 1.0, 0.0, 0.0, 255, 0 + asePct = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0 + aseCount = scalar, U08, 3, "s", 1.0, 0.0, 0.0, 255, 0 + wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 + crankingPct = scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0 + pinLayout = bits, U08, 15, [0:7], "Speeduino v0.1", "Speeduino v0.2", "Speeduino v0.3", "Speeduino v0.4", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NA6 MX5 PNP", "Turtana PCB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Plazomat I/O 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "Daz V6 Shield 0.1", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "NO2C", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + tachoPin = bits, U08, 16, [0:5], "Board Default", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + tachoDiv = bits, U08, 16, [6:7], "Normal", "Half", "INVALID", "INVALID" + unused2-17 = scalar, U08, 17, "ms", 0.1, 0.0, 0.0, 25.5, 1 + unused2-18 = scalar, U08, 18, "ms", 0.1, 0.0, 0.0, 25.5, 1 + tpsThresh = scalar, U08, 19, "%/s", 1.0, 0.0, 0.0, 255, 0 + taeTime = scalar, U08, 20, "ms", 10, 0.0, 0.0, 2550, 0 + + ; Display (Options for what the display is showing) + display = bits, U08, 21, [0:2], "Unused", "Adafruit 128x32", "Generic 128x32", "Adafruit 128x64", "Generic 128x64", "INVALID", "INVALID", "INVALID" + display1 = bits U08, 21, [3:5], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" + display2 = bits U08, 21, [6:7], "O2", "Voltage", "CPU", "Mem" + + display3 = bits U08, 22, [0:2], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" + display4 = bits U08, 22, [3:4], "O2", "Voltage", "CPU", "Mem" + display5 = bits U08, 22, [5:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" + + displayB1 = bits U08, 23, [0:3], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" + displayB2 = bits U08, 23, [4:7], "RPM", "PW", "Advance", "VE", "GammaE", "TPS", "IAT", "CLT" + + reqFuel = scalar, U08, 24, "ms", 0.1, 0.0, 0.0, 25.5, 1 + divider = scalar, U08, 25, "", 1.0, 0.0 + alternate = bits, U08, 26, [0:0], "Simultaneous", "Alternating" + multiplyMAP = bits, U08, 26, [1:1], "No", "Yes" + includeAFR = bits, U08, 26, [2:2], "No", "Yes" + hardCutType = bits, U08, 26, [3:3], "Full", "Rolling" + unused2-26e = bits, U08, 26, [4:4], "No", "Yes" + unused2-26f = bits, U08, 26, [5:5], "No", "Yes" + unused2-26g = bits, U08, 26, [6:6], "No", "Yes" + indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled" + injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1 + inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0 + inj2Ang = scalar, U16, 30, "deg", 1.0, 0.0, 0.0, 360, 0 + inj3Ang = scalar, U16, 32, "deg", 1.0, 0.0, 0.0, 360, 0 + inj4Ang = scalar, U16, 34, "deg", 1.0, 0.0, 0.0, 360, 0 + + ; Config1 + mapSample = bits, U08, 36, [0:1], "Instantaneous", "Cycle Average", "Cycle Minimum", "INVALID" + twoStroke = bits, U08, 36, [2:2], "Four-stroke", "Two-stroke" + injType = bits, U08, 36, [3:3], "Port", "Throttle Body" + nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" + + ; Config2 + unused2-37a = bits, U08, 37, [0:1], "INVALID", "None", "None", "None" + unused2-37b = bits, U08, 37, [2:3], "INVALID", "None", "None", "None" + nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" + + ; Config3 + engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire" + flexEnabled = bits, U08, 38, [1:1], "Off", "On" + algorithm = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" + baroCorr = bits, U08, 38, [3:3], "Off", "On" + injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential" + perToothIgn = bits, U08, 38, [6:6], "No", "Yes" + dfcoEnabled = bits, U08, 38, [7:7], "Off", "On" + + primePulse = scalar, U08, 39, "ms", 0.1, 0.0, 0.0, 25.5, 1 + dutyLim = scalar, U08, 40, "%", 1.0, 0.0, 0.0, 100.0, 0 + flexFreqLow = scalar, U08, 41, "Hz", 1.0, 0.0, 0.0, 250.0, 0 + flexFreqHigh = scalar, U08, 42, "Hz", 1.0, 0.0, 0.0, 250.0, 0 + + boostMaxDuty = scalar, U08, 43, "%", 1.0, 0.0, 0.0, 100.0, 0 + tpsMin = scalar, U08, 44, "ADC", 1.0, 0.0, 0.0, 255.0, 0 + tpsMax = scalar, U08, 45, "ADC", 1.0, 0.0, 0.0, 255.0, 0 + mapMin = scalar, S08, 46, "kpa", 1.0, 0.0, -100, 127.0, 0 + mapMax = scalar, U16, 47, "kpa", 1.0, 0.0, 0.0, 25500, 0 + fpPrime = scalar, U08, 49, "s", 1.0, 0.0, 0.0, 255.0, 0 + stoich = scalar, U08, 50, ":1", 0.1, 0.0, 0.0, 25.5, 1 + oddfire2 = scalar, U16, 51, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) + oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) + oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) + + flexFuelLow = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 250.0, 0 + flexFuelHigh = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 250.0, 0 + flexAdvLow = scalar, U08, 59, "Deg", 1.0, 0.0, 0.0, 250.0, 0 + flexAdvHigh = scalar, U08, 60, "Deg", 1.0, 0.0, 0.0, 250.0, 0 + + iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle + iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 + boostMinDuty = scalar, U08, 63, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles for boost control + + baroMin = scalar, S08, 64, "kpa", 1.0, 0.0, -100, 127.0, 0 + baroMax = scalar, U16, 65, "kpa", 1.0, 0.0, 0.0, 25500, 0 + unused2-67 = array, U08, 67, [60], "%", 1.0, 0.0, 0.0, 255, 0 + + +;-------------------------------------------------- +;Start Ignition table (Page 3) +;-------------------------------------------------- +page = 3 + advTable1 = array, U08, 0,[16x16], "deg", 1.0, -40, -40, 215.0, 0 + rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 + + #if SPEED_DENSITY + mapBins2 = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 + #elif ALPHA_N + tpsBins2 = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 + #endif + +;-------------------------------------------------- +;Start Page 4 +;These are primarily ignition related settings (Previously part of page 2) +;-------------------------------------------------- +page = 4 + TrigAng = scalar, S16, 0, "Deg", 1, 0, -360, 360, 0 + FixAng = scalar, U08, 2, "Deg", 1, 0, 0, 80, 0 + CrankAng = scalar, U08, 3, "Deg", 1, 0, -10, 80, 0 + TrigAngMul = scalar, U08, 4, "", 1, 0, 0, 88, 0 ; Multiplier for tooth counts that don't evenly divide into 360 + TrigEdge = bits, U08, 5,[0:0], "Leading", "Trailing" + TrigSpeed = bits, U08, 5,[1:1], "Crank Speed", "Cam Speed" + IgInv = bits, U08, 5,[2:2], "Going Low", "Going High" + TrigPattern= bits, U08, 5,[3:7], "Missing Tooth", "Basic Distributor", "Dual Wheel", "GM 7X", "4G63 / Miata / 3000GT", "GM 24X", "Jeep 2000", "Audi 135", "Honda D17", "Miata 99-05", "Mazda AU", "Non-360 Dual", "Nissan 360", "Subaru 6/7", "Daihatsu +1", "Harley EVO", "36-2-2-2", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + TrigEdgeSec= bits, U08, 6,[0:0], "Leading", "Trailing" + fuelPumpPin= bits , U08, 6,[1:6], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" + useResync = bits, U08, 6,[7:7], "No", "Yes" + sparkDur = scalar, U08, 7, "ms", 0.1, 0, 0, 25.5, 1 ; Spark duration + unused4-8 = scalar, U08, 8, "ms", 0.1, 0.0, 0.0, 25.5, 1 + unused4-9 = scalar, U08, 9, "ms", 0.1, 0.0, 0.0, 25.5, 1 + unused4-10 = scalar, U08, 10, "ms", 0.1, 0.0, 0.0, 25.5, 1 + SkipCycles = scalar, U08, 11, "cycles", 1, 0, 0, 255, 0 + + ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits + ; name = scalar, type, offset, units, scale, translate, lo, hi, digits +;Dwell control + unused4-12a = bits, U08, 12, [0:0], "INVALID", "NOTHING" + useDwellLim = bits, U08, 12, [1:1], "Off", "On" + sparkMode = bits, U08, 12, [2:4], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential", "Rotary", "INVALID", "INVALID", "INVALID" + TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive" + ignCranklock = bits, U08, 12, [7:7], "Off", "On" + dwellcrank = scalar, U08, 13, "ms", 0.1, 0, 0, 25, 1 + dwellrun = scalar, U08, 14, "ms", 0.1, 0, 0, 8, 1 ;running dwell variable railed to 8 - who needs more than 8ms? + numTeeth = scalar, U08, 15, "teeth", 1.0, 0.0, 0.0, 255, 0 + missingTeeth = scalar, U08, 16, "teeth", 1.0, 0.0, 0.0, 255, 0 + + crankRPM = scalar, U08, 17, "rpm", 100, 0.0, 100, 1000, 0 + tpsflood = scalar, U08, 18, "%", 1.0, 0.0, 0.0, 255.0, 0 + +;Rev Limits + SoftRevLim = scalar, U08, 19, "rpm", 100, 0.0, 100, 25500, 0 + SoftLimRetard = scalar, U08, 20, "deg", 1.0, 0.0, 0.0, 80, 0 + SoftLimMax = scalar, U08, 21, "s", 0.1, 0.0, 0.0, 25.5, 1 + HardRevLim = scalar, U08, 22, "rpm", 100, 0.0, 100, 25500, 0 + +;TPS based acceleration enrichment + taeBins = array, U08, 23, [ 4], "%/s", 10.0, 0.0, 0.00, 2550.0, 0 + taeRates = array, U08, 27, [ 4], "%", 1.0, 0.0, 0.00, 255.0, 0 ; 4 bytes +;WUE Bins (Needed somewhere to put these + #if CELSIUS + wueBins = array, U08, 31, [10], "C", 1.0, -40, -40, 102.0, 0 + #else + wueBins = array, U08, 31, [10], "F", 1.8, -22.23, -40, 215.0, 0 + #endif +;Dwell config options + dwellLim = scalar, U08, 41, "ms", 1, 0, 0, 32, 0 + dwellRates = array, U08, 42, [6], "%", 1.0, 0.0, 0.00, 255.0, 0 + +;IAT (Inlet air temp) timing retard + #if CELSIUS + iatRetBins = array, U08, 48, [ 6], "C", 1.0, 0.0, 0.00, 255.0, 0 + #else + iatRetBins = array, U08, 48, [ 6], "F", 1.8, 17.77, 0.00, 255.0, 0 ; No -40 degree offset here + #endif + iatRetRates = array, U08, 54, [ 6], "deg", 1.0, 0.0, 0.00, 255.0, 0 +;Decelleration Fuel Cut Off (DFCO) + dfcoRPM = scalar, U08, 60, "RPM", 10.0, 0.0, 100, 2550, 0 + dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0 + dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0 +;Cranking ignition bypass + ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" + ignBypassPin = bits , U08, 63, [1:6], "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" + + unused4-64 = array, U08, 64, [63], "%", 1.0, 0.0, 0.0, 255, 0 +;-------------------------------------------------- +;Start AFR page +;-------------------------------------------------- +page = 5 +#if LAMBDA + afrTable = array, U08, 0,[16x16], "Lambda", { 0.1 / stoich }, 0.0000, 0.00, 2.00, 3 +#else + afrTable = array, U08, 0,[16x16], "AFR", 0.1, 0.0, 7, 25.5, 1 +#endif + + rpmBinsAFR = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 + #if SPEED_DENSITY + mapBinsAFR = array, U08, 272,[ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 + #elif ALPHA_N + tpsBinsAFR = array, U08, 272,[ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 + #endif + +;-------------------------------------------------- +;Start page 6 +; Page 6 is all settings associated with O2/AFR +;-------------------------------------------------- +page = 6 + egoAlgorithm= bits , U08, 0, [0:1], "Simple", "INVALID", "PID", "No correction" ; * ( 1 byte) + egoType = bits , U08, 0, [2:3], "Disabled", "Narrow Band", "Wide Band", "INVALID" ; egoOption + boostEnabled= bits, U08, 0, [4:4], "Off", "On" + vvtEnabled = bits, U08, 0, [5:5], "Off", "On" + boostCutType= bits, U08, 0, [6:7], "Off", "Spark Only", "Fuel Only","Both" + + egoKP = scalar, U08, 1, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + egoKI = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + egoKD = scalar, U08, 3, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + #if CELSIUS + egoTemp = scalar, U08, 4, "C", 1.0, -40, -40, 102.0, 0 + #else + egoTemp = scalar, U08, 4, "F", 1.8, -22.23, -40, 215.0, 0 + #endif + egoCount = scalar, U08, 5, "", 4.0, 0.0, 4.0, 255.0, 0 ; * ( 1 byte) + unused6-6 = scalar, U08, 6, "%", 1.0, 0.0, 0.0, 255.0, 0 + egoLimit = scalar, U08, 7, "", 1, 0, 0, 16, 0 + ego_min = scalar, U08, 8, "AFR", 0.1, 0.0, 7, 25, 1 + ego_max = scalar, U08, 9, "AFR", 0.1, 0.0, 7, 25, 1 + ego_sdelay = scalar, U08, 10, "sec", 1, 0, 0, 120, 0 + egoRPM = scalar, U08, 11, "rpm", 100, 0.0, 100, 25500, 0 + egoTPSMax = scalar, U08, 12, "%", 1, 0, 0, 120, 0 + vvtPin = bits , U08, 13, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + useExtBaro = bits, U08, 13, [6:6], "No", "Yes" + boostMode = bits, U08, 13, [7:7], "Simple", "Full" + boostPin = bits, U08, 14, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + VVTasOnOff = bits, U08, 14, [6:6], "No", "Yes" + unused6-14f = bits, U08, 14, [7:7], "ONE", "INVALID" + brvBins = array, U08, 15, [6], "V", 0.1, 0, 6, 24, 1 ; Bins for the battery reference voltage + injBatRates = array, U08, 21, [6], "%", 1, 0, 0, 255, 0 ;Values for injector pulsewidth vs voltage + #if CELSIUS + airDenBins = array, U08, 27, [9], "C", 1.0, -40, -40, 215, 0 ; Bins for the air density correction curve + #else + airDenBins = array, U08, 27, [9], "F", 1.8, -22.23, -40, 215, 0 ; Bins for the air density correction curve + #endif + airDenRates = array, U08, 36, [9], "%", 1.0, 0.0, 0, 255, 0 ; Values for the air density correction curve + +; PWM Frequencies + boostFreq = scalar, U08, 45, "Hz", 2.0, 0.0, 10, 511, 0 + vvtFreq = scalar, U08, 46, "Hz", 2.0, 0.0, 10, 511, 0 + idleFreq = scalar, U08, 47, "Hz", 2.0, 0.0, 10, 511, 0 + +; Launch Control + launchPin = bits , U08, 48, [0:5], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + launchEnable= bits, U08, 48, [6:6], "No", "Yes" + launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" + + lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0 + lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0 + lnchHardLim = scalar, U08, 51, "rpm", 100, 0.0, 100, 25500, 0 + lnchFuelAdd = scalar, U08, 52, "%", 1.0, 0.0, 0.0, 80, 0 + + idleKP = scalar, U08, 53, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + idleKI = scalar, U08, 54, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + idleKD = scalar, U08, 55, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + boostLimit = scalar, U08, 56, "kPa", 2.0, 0.0, 0.0, 511.0, 0 + boostKP = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + boostKI = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + boostKD = scalar, U08, 59, "%", 1.0, 0.0, 0.0, 200.0, 0 ; * ( 1 byte) + + lnchPullRes = bits, U08, 60, [0:1], "Float" , "Pullup", "INVALID", "INVALID" + fuelTrimEnabled= bits, U08, 60, [2:2], "No", "Yes" + flatSEnable = bits, U08, 60, [3:3], "No", "Yes" +; Baro Sensor pin + baroPin = bits, U08, 60, [4:7], "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" + +; Flat shift + flatSSoftWin = scalar, U08, 61, "rpm", 100, 0.0, 100, 25500, 0 + flatSRetard = scalar, U08, 62, "deg", 1.0, 0.0, 0.0, 80, 0 + flatSArm = scalar, U08, 63, "rpm", 100, 0.0, 100, 25500, 0 + + iacCLValues = array, U08, 64, [10], "RPM", 10.0, 0.0, 0, 2550, 0 + iacOLStepVal = array, U08, 74, [10], "Steps", 3, 0, 0, 765, 0 + iacOLPWMVal = array, U08, 84, [10], "Duty %", 1.0, 0, 0, 100, 0 + #if CELSIUS + iacBins = array, U08, 94, [10], "C", 1.0, -40, -40, 215, 0 + #else + iacBins = array, U08, 94, [10], "F", 1.8, -22.23, -40, 215, 0 + #endif + iacCrankSteps= array, U08, 104, [4], "Steps", 3, 0, 0, 765, 0 + iacCrankDuty = array, U08, 108, [4], "Duty %", 1.0, 0, 0, 100, 0 + #if CELSIUS + iacCrankBins = array, U08, 112, [4], "C", 1.0, -40, -40, 215, 0 + #else + iacCrankBins = array, U08, 112, [4], "F", 1.8, -22.23, -40, 215, 0 + #endif + + iacAlgorithm = bits , U08, 116, [0:2], "None", "On/Off", "PWM Open loop", "PWM Closed loop", "Stepper Open Loop", "Stepper Closed Loop", "INVALID", "INVALID" + iacStepTime = bits , U08, 116, [3:5], "INVALID","1", "2", "3", "4", "5", "6","INVALID" + iacChannels = bits, U08, 116, [6:6], "1", "2" + iacPWMdir = bits , U08, 116, [7:7], "Normal", "Reverse" + + #if CELSIUS + iacFastTemp = scalar, U08, 117, "C", 1.0, -40, -40, 215, 0 + #else + iacFastTemp = scalar, U08, 117, "F", 1.8, -22.23, -40, 215, 0 + #endif + + iacStepHome = scalar, U08, 118, "Steps", 3, 0, 0, 765, 0 + iacStepHyster= scalar, U08, 119, "Steps", 1, 0.0, 0.0, 10, 0 + + ; Begin fan control vairables + fanInv = bits, U08, 120, [0:0], "No", "Yes" + fanEnable = bits, U08, 120, [1:1], "Off", "On/Off" + fanPin = bits, U08, 120, [2:7], "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #if CELSIUS + fanSP = scalar, U08, 121, "C", 1.0, -40, -40, 215.0, 0 + fanHyster = scalar, U08, 122, "C", 1.0, 0.0, 0.0, 40, 0 + #else + fanSP = scalar, U08, 121, "F", 1.8, -22.23, -40, 215.0, 0 + fanHyster = scalar, U08, 122, "F", 1.0, 0.0, 0.0, 40, 0 + #endif + fanFreq = scalar, U08 , 123, "Hz", 2.0, 0.0, 10, 511, 0 + #if CELSIUS + fanPWMBins = array, U08, 124, [4], "C", 1.0, -40, -40, 215, 0 + #else + fanPWMBins = array, U08, 124, [4], "F", 1.8, -22.23, -40, 215, 0 + #endif + +;-------------------------------------------------- +;Boost and vvt maps (Page 7) +;-------------------------------------------------- +page = 7 +;notes for boostTable in PSI~~~There are 6.895 psis to a kPa then x 2 like the kPa ver~~~div atmos. pressure in kPa by 2 and make neg so to subtract instead of add +; #if BOOSTPSI +; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0 +; #else + boostTable = array, U08, 0,[8x8], "kPa", 2.0, 0.0, 0, 511, 0 +; #endif + rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 + tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 + vvtTable = array, U08, 80,[8x8], "%", 1.0, 0.0, 0, 100, 0 + rpmBinsVVT = array, U08, 144,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 + tpsBinsVVT = array, U08, 152,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 +;Fuel staging Table + stagingTable = array, U08, 160, [8x8], "%", 1.0, 0.0, 0.0, 100.0, 0 + rpmBinsStaging= array, U08, 224, [ 8], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 + #if SPEED_DENSITY + mapBinsStaging= array, U08, 232, [ 8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 + #elif ALPHA_N + tpsBinsStaging= array, U08, 232, [ 8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 + #endif + +;-------------------------------------------------- +;Sequential fuel trim tables (Page 8) +;-------------------------------------------------- +page = 8 + fuelTrim1Table = array, U08, 0,[6x6], "%", 1.0, -128, -50, 50, 0 + fuelTrim1rpmBins = array, U08, 36,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 +#if SPEED_DENSITY + fuelTrim1loadBins = array, U08, 42,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 +#elif ALPHA_N + fuelTrim1loadBins = array, U08, 42,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 +#endif + + fuelTrim2Table = array, U08, 48,[6x6], "%", 1.0, -128, -50, 50, 0 + fuelTrim2rpmBins = array, U08, 84,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 +#if SPEED_DENSITY + fuelTrim2loadBins = array, U08, 90,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 +#elif ALPHA_N + fuelTrim2loadBins = array, U08, 90,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 +#endif + + fuelTrim3Table = array, U08, 96,[6x6], "%", 1.0, -128, -50, 50, 0 + fuelTrim3rpmBins = array, U08, 132,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 +#if SPEED_DENSITY + fuelTrim3loadBins = array, U08, 138,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 +#elif ALPHA_N + fuelTrim3loadBins = array, U08, 138,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 +#endif + + fuelTrim4Table = array, U08, 144,[6x6], "%", 1.0, -128, -50, 50, 0 + fuelTrim4rpmBins = array, U08, 180,[ 6], "RPM", 100.0, 0.0, 0, 25500, 0 +#if SPEED_DENSITY + fuelTrim4loadBins = array, U08, 186,[ 6], "kPa", 2.0, 0.0, 0.0, 511.0, 0 +#elif ALPHA_N + fuelTrim4loadBins = array, U08, 186,[ 6], "TPS", 2.0, 0.0, 0.0, 100.0, 0 +#endif + +;-------------------------------------------------- +;CANBUS control (Page 9) +;-------------------------------------------------- +page = 9 + #if CAN_COMMANDS + enable_canbus = bits, U08, 0, [0:1], "Disable", "On Via Secondary Serial", "ON via Internal CAN ", "INVALID" + #else + enable_canbus = bits, U08, 0, [0:1], "Disable", "On Via Secondary Serial", "INVALID", "INVALID" + #endif + enable_candata_in = bits, U08, 0, [2:2], "Off", "On" + + caninput_sel0 = bits, U16, 1, [0:0], "Off", "On" + caninput_sel1 = bits, U16, 1, [1:1], "Off", "On" + caninput_sel2 = bits, U16, 1, [2:2], "Off", "On" + caninput_sel3 = bits, U16, 1, [3:3], "Off", "On" + caninput_sel4 = bits, U16, 1, [4:4], "Off", "On" + caninput_sel5 = bits, U16, 1, [5:5], "Off", "On" + caninput_sel6 = bits, U16, 1, [6:6], "Off", "On" + caninput_sel7 = bits, U16, 1, [7:7], "Off", "On" + caninput_sel8 = bits, U16, 1, [8:8], "Off", "On" + caninput_sel9 = bits, U16, 1, [9:9], "Off", "On" + caninput_sel10 = bits, U16, 1, [10:10], "Off", "On" + caninput_sel11 = bits, U16, 1, [11:11], "Off", "On" + caninput_sel12 = bits, U16, 1, [12:12], "Off", "On" + caninput_sel13 = bits, U16, 1, [13:13], "Off", "On" + caninput_sel14 = bits, U16, 1, [14:14], "Off", "On" + caninput_sel15 = bits, U16, 1, [15:15], "Off", "On" + + ;caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 + caninput_source_can_address0 = bits, U16, 3, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address1 = bits, U16, 5, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address2 = bits, U16, 7, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address3 = bits, U16, 9, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address4 = bits, U16, 11, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address5 = bits, U16, 13, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address6 = bits, U16, 15, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address7 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address8 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address9 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address10 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address11 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address12 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address13 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address14 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address15 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX + + + + caninput_source_start_byte0 = bits, U08, 35, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte1 = bits, U08, 36, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte2 = bits, U08, 37, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte3 = bits, U08, 38, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte4 = bits, U08, 39, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte5 = bits, U08, 40, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte6 = bits, U08, 41, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte7 = bits, U08, 42, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte8 = bits, U08, 43, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte9 = bits, U08, 44, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte10 = bits, U08, 45, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte11 = bits, U08, 46, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte12 = bits, U08, 47, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte13 = bits, U08, 48, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte14 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte15 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + + caninput_source_num_bytes0 = bits, U16, 51, [0:0], "1", "2" + caninput_source_num_bytes1 = bits, U16, 51, [1:1], "1", "2" + caninput_source_num_bytes2 = bits, U16, 51, [2:2], "1", "2" + caninput_source_num_bytes3 = bits, U16, 51, [3:3], "1", "2" + caninput_source_num_bytes4 = bits, U16, 51, [4:4], "1", "2" + caninput_source_num_bytes5 = bits, U16, 51, [5:5], "1", "2" + caninput_source_num_bytes6 = bits, U16, 51, [6:6], "1", "2" + caninput_source_num_bytes7 = bits, U16, 51, [7:7], "1", "2" + caninput_source_num_bytes8 = bits, U16, 51, [8:8], "1", "2" + caninput_source_num_bytes9 = bits, U16, 51, [9:9], "1", "2" + caninput_source_num_bytes10 = bits, U16, 51, [10:10], "1", "2" + caninput_source_num_bytes11 = bits, U16, 51, [11:11], "1", "2" + caninput_source_num_bytes12 = bits, U16, 51, [12:12], "1", "2" + caninput_source_num_bytes13 = bits, U16, 51, [13:13], "1", "2" + caninput_source_num_bytes14 = bits, U16, 51, [14:14], "1", "2" + caninput_source_num_bytes15 = bits, U16, 51, [15:15], "1", "2" + + unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0 + unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0 + enable_candata_out = bits, U08, 55, [0:0], "Off", "On" + canoutput_sel0 = bits, U08, 56, [0:0], "Off", "On" + canoutput_sel1 = bits, U08, 57, [0:0], "Off", "On" + canoutput_sel2 = bits, U08, 58, [0:0], "Off", "On" + canoutput_sel3 = bits, U08, 59, [0:0], "Off", "On" + canoutput_sel4 = bits, U08, 60, [0:0], "Off", "On" + canoutput_sel5 = bits, U08, 61, [0:0], "Off", "On" + canoutput_sel6 = bits, U08, 62, [0:0], "Off", "On" + canoutput_sel7 = bits, U08, 63, [0:0], "Off", "On" + canoutput_param_group = array , U16, 64, [ 8], "", 1, 0, 0, 65535, 0 + canoutput_param_start_byte0 = bits, U08, 80, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte1 = bits, U08, 81, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte2 = bits, U08, 82, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte3 = bits, U08, 83, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte4 = bits, U08, 84, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte5 = bits, U08, 85, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte6 = bits, U08, 86, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte7 = bits, U08, 87, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_num_bytes0 = bits, U08, 88, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes1 = bits, U08, 89, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes2 = bits, U08, 90, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes3 = bits, U08, 91, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes4 = bits, U08, 92, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes5 = bits, U08, 93, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes6 = bits, U08, 94, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes7 = bits, U08, 95, [0:1], "INVALID", "1", "2", "INVALID" + + unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 + unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0 + unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0 + unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0 + + speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list + true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX + realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX + obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX + + + ;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 + ;unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0 + ;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0 + + ;AFR offset for WUE VeAnalyze + ;wueAFRRates = array, U08, 107, [10], "%", 1.0, 0.0, 0.0, 255, 0 + ;wueAFRBins = array, U08, 117, [10], "C", 1.0, -40, -40, 102.0, 0 + + unused10_107 = scalar, U08, 107, "", 1, 0, 0, 255, 0 + unused10_108 = scalar, U08, 108, "", 1, 0, 0, 255, 0 + unused10_109 = scalar, U08, 109, "", 1, 0, 0, 255, 0 + unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 + unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 + unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 + unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 + unused10_114 = scalar, U08, 114, "", 1, 0, 0, 255, 0 + unused10_115 = scalar, U08, 115, "", 1, 0, 0, 255, 0 + unused10_116 = scalar, U08, 116, "", 1, 0, 0, 255, 0 + unused10_117 = scalar, U08, 117, "", 1, 0, 0, 255, 0 + unused10_118 = scalar, U08, 118, "", 1, 0, 0, 255, 0 + unused10_119 = scalar, U08, 119, "", 1, 0, 0, 255, 0 + unused10_120 = scalar, U08, 120, "", 1, 0, 0, 255, 0 + unused10_121 = scalar, U08, 121, "", 1, 0, 0, 255, 0 + unused10_122 = scalar, U08, 122, "", 1, 0, 0, 255, 0 + unused10_123 = scalar, U08, 123, "", 1, 0, 0, 255, 0 + unused10_124 = scalar, U08, 124, "", 1, 0, 0, 255, 0 + unused10_125 = scalar, U08, 125, "", 1, 0, 0, 255, 0 + unused10_126 = scalar, U08, 126, "", 1, 0, 0, 255, 0 + unused10_127 = scalar, U08, 127, "", 1, 0, 0, 255, 0 + +page = 10 +#if CELSIUS + crankingEnrichBins = array, U08, 0, [4], "C", 1.0, -40, -40, 215, 0 +#else + crankingEnrichBins = array, U08, 0, [4], "F", 1.8, -22.23, -40, 215, 0 +#endif + crankingEnrichValues= array, U08, 4, [4], "%", 1.0, 0.0, 0, 255, 0 ; Values for the cranking enrichment curve + + rotaryType = bits , U08, 8, [0:1], "FC", "FD", "RX8", "INVALID" + stagingEnabled = bits , U08, 8, [2:2], "Off","On" + stagingMode = bits , U08, 8, [3:3], "Table","Automatic" + unused11-8e = bits , U08, 8, [4:4], "Off","On" + unused11-8f = bits , U08, 8, [5:5], "Off","On" + unused11-8g = bits , U08, 8, [6:6], "Off","On" + unused11-8h = bits , U08, 8, [7:7], "Off","On" + + rotarySplitValues = array, U08, 9, [8], "degrees", 1.0, 0.0, 0.0, 40, 0 +#if SPEED_DENSITY + rotarySplitBins = array, U08, 17, [8], "kPa", 2.0, 0.0, 0.0, 511.0, 0 +#elif ALPHA_N + rotarySplitBins = array, U08, 17, [8], "TPS", 2.0, 0.0, 0.0, 100.0, 0 +#endif + boostSens = scalar, U16, 25, "", 1, 0, 0, 5000, 0 + boostIntv = scalar, U08, 27, "ms", 1, 0, 0, 250, 0 + stagedInjSizePri = scalar, U16, 28, "cc/min", 1, 0, 0, 1500, 0 + stagedInjSizeSec = scalar, U16, 30, "cc/min", 1, 0, 0, 1500, 0 + + unused11_32_192 = array, U08, 32, [159], "RPM", 100.0, 0.0, 100, 25500, 0 + +;------------------------------------------------------------------------------- + +[ConstantsExtensions] + requiresPowerCycle = nCylinders + requiresPowerCycle = pinLayout + requiresPowerCycle = fanPin + requiresPowerCycle = reqFuel + requiresPowerCycle = numTeeth + requiresPowerCycle = missingTeeth + requiresPowerCycle = injOpen + requiresPowerCycle = IgInv + requiresPowerCycle = fanInv + requiresPowerCycle = boostEnabled + requiresPowerCycle = vvtEnabled +; requiresPowerCycle = vvtChannels + requiresPowerCycle = boostFreq + requiresPowerCycle = vvtFreq + requiresPowerCycle = idleFreq + requiresPowerCycle = sparkMode + requiresPowerCycle = launchPin + requiresPowerCycle = launchEnable + requiresPowerCycle = launchHiLo + requiresPowerCycle = flexEnabled + requiresPowerCycle = oddfire2 + requiresPowerCycle = oddfire3 + requiresPowerCycle = oddfire4 + requiresPowerCycle = iacCLminDuty + requiresPowerCycle = iacCLmaxDuty + requiresPowerCycle = useExtBaro + requiresPowerCycle = baroPin + requiresPowerCycle = rotaryType + requiresPowerCycle = stagedInjSizePri + requiresPowerCycle = stagedInjSizeSec + requiresPowerCycle = stagingEnabled + + defaultValue = pinLayout, 1 + defaultValue = TrigPattern, 0 + defaultValue = useResync, 1 + defaultValue = sparkMode, 0 + defaultValue = indInjAng, 0 + defaultValue = inj1Ang, 355 + defaultValue = inj2Ang, 355 + defaultValue = inj3Ang, 355 + defaultValue = inj4Ang, 355 + defaultValue = nInjectors, 4 + defaultValue = dutyLim, 100 + defaultValue = mapMin, 10 + defaultValue = mapMax, 260 + defaultValue = baroMin, 10 + defaultValue = baroMax, 260 + defaultValue = fpPrime, 3 + defaultValue = TrigFilter, 0 + defaultValue = ignCranklock,0 + defaultValue = multiplyMAP, 0 + defaultValue = includeAFR, 0 + defaultValue = stoich, 14.7 + defaultValue = flexEnabled, 0 + defaultValue = oddfire2, 0 + defaultValue = oddfire3, 0 + defaultValue = oddfire4, 0 + defaultValue = flexFreqLow, 50 + defaultValue = flexFreqHigh,150 + defaultValue = flexFuelLow, 100 + defaultValue = flexFuelHigh,163 + defaultValue = flexAdvLow, 0 + defaultValue = flexAdvHigh, 13 + defaultValue = flexBoostLow,0 + defaultValue = flexBoostHigh,0 + defaultValue = fuelPumpPin, 0 + defaultValue = fanPin, 0 + defaultValue = iacCLminDuty,0 + defaultValue = iacCLmaxDuty,100 + defaultValue = boostMinDuty,0 + defaultValue = boostMaxDuty,100 + defaultValue = boostSens, 2000 + defaultValue = boostIntv, 30 + defaultValue = sparkDur, 1.0 + defaultValue = speeduino_tsCanId, 0 + defaultValue = true_address, 256 + defaultValue = realtime_base_address, 336 + defaultValue = VVTasOnOff, 0 + defaultValue = stagingEnabled, 0 + ; defaultValue = obd_address, 0 + + ;Default pins + defaultValue = fanPin, 0 + defaultValue = vvtPin, 0 + defaultValue = launchPin, 0 + defaultValue = boostPin, 0 + defaultValue = fuelPumpPin, 0 + defaultValue = tachoPin, 0 + defaultValue = perToothIgn, 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. + ; + ; There are four special menu names, which when used append to the standard + ; menus of the same name instead of creating a new one. The menu names + ; are "File", "Communications", "Tools" and "Help". + ; + ;---------------------------------------------------------------------------- + +menuDialog = main + + menu = "Settings" + subMenu = engine_constants, "Engine Constants" + subMenu = injChars, "Injector Characteristics" + subMenu = triggerSettings, "Trigger Setup" + ;subMenu = OLED, "OLED Setup" + subMenu = airdensity_curve, "IAT Density" + + + menu = "&Tuning" + subMenu = std_realtime, "Realtime Display" + subMenu = accelEnrichments, "Acceleration Enrichment" + subMenu = egoControl, "AFR/O2", 3 + subMenu = RevLimiterS, "Limiters", 2 + subMenu = flexFueling, "Flex Fuel", 2 + subMenu = veTableDialog, "VE Table", 0 + subMenu = sparkTbl, "Spark Table", 2 + subMenu = afrTable1Tbl, "AFR Table", 5 + subMenu = std_separator + subMenu = inj_trimad, "Sequential fuel trim", 9 + subMenu = stagingTableDialog, "Staged Injection", 10 + + menu = "&Spark" + subMenu = sparkSettings, "Spark Settings" + subMenu = sparkTbl, "Spark Table", 2 + subMenu = dwellSettings, "Dwell settings" + subMenu = dwell_correction_curve, "Dwell Compensation" + subMenu = iat_retard_curve, "&IAT Retard" + subMenu = rotary_ignition, "Rotary Ignition", { sparkMode == 4 } + + menu = "&Starting/Idle" + subMenu = crankPW, "Cranking Settings" + subMenu = warmup, "Warmup Enrichment" + subMenu = std_separator + subMenu = idleSettings, "Idle Control" + subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { iacAlgorithm == 3 || iacAlgorithm == 5 } + subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 } + subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 } + subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 } + subMenu = iacStepCrank_curve, "Idle - Stepper Motor Cranking", 7, { iacAlgorithm == 4 } + + menu = "&Accessories" + subMenu = fanSettings, "Thermo Fan" + subMenu = LaunchControl, "Launch Control / Flat Shift" + subMenu = fuelpump, "Fuel Pump" + subMenu = std_separator + subMenu = boostSettings, "Boost Control" + subMenu = boostTbl, "Boost target", 8, { boostEnabled } + subMenu = std_separator + subMenu = vvtSettings, "VVT Control" + subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled } + subMenu = std_separator + subMenu = tacho, "Tacho Output" + + subMenu = std_separator + + #if CAN_COMMANDS + subMenu = can_serial3IO, "Canbus/Secondary Serial IO Interface" + subMenu = std_separator + subMenu = Canin_config, "External Data Input Configuration", {enable_canbus} + ;subMenu = std_separator + ;subMenu = Canout_config, "Canbus Output Configuration" + #else + subMenu = serial3IO, "Secondary Serial IO Interface" + #endif + + menuDialog = main + menu = "T&ools" + subMenu = mapCal, "Calibrate MAP" + subMenu = std_ms2gentherm, "Calibrate Temperature Sensors", 0 + subMenu = std_ms2geno2, "Calibrate AFR Sensor", 0 + + menuDialog = main + menu = "3D &Tuning Maps" + subMenu = veTable1Map, "Fuel Table" + subMenu = sparkMap, "Spark Table", 3 + subMenu = afrTable1Map, "AFR Target Table" + +#if enablehardware_test + menuDialog = main + menu = "Hardware Testing" + subMenu = outputtest1, "Test Output Hardware" +#endif + + menu = "Help" + subMenu = helpGeneral, "Speeduino Help" +;------------------------------------------------------------------------------- + +[SettingContextHelp] +; constantName = "Help Text" +; These provide the context help in the dialog when these variables are used + nCylinders = "Cylinder count" + alternate = "Whether or not the injectors should be fired at the same time. This setting is ignored when Sequential is selected below, however it will still affect the req_fuel value." + engineType = "Engines with an equal number of degrees between all firings (This is most engines) should select Even fire. Some 2 and 6 cylinder engines are Odd fire however." + twoStroke = "Four-Stroke (most engines), Two-stroke." + nInjectors = "Number of primary injectors." + mapSample = "The method used for calculating the MAP reading\nFor 1-2 Cylinder engines, Cycle Minimum is recommended.\nFor more than 2 cylinders Cycle Average is recommended" + stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" + injLayout = "The injector layout and timing to be used. Options are: \n 1. Paired - 2 injectors per output. Outputs active is equal to half the number of cylinders. Outputs are timed over 1 crank revolution. \n 2. Semi-sequential: Same as paired except that injector channels are mirrored (1&4, 2&3) meaning the number of outputs used are equal to the number of cylinders. Only valid for 4 cylinders or less. \n 3. Banked: 2 outputs only used. \n 4. Sequential: 1 injector per output and outputs used equals the number of cylinders. Injection is timed over full cycle. " + + TrigPattern = "The type of input trigger decoder to be used." + useResync = "If enabled, sync will be rechecked once every full cycle from the cam input. This is good for accuracy, however if your cam input is noisy then this can cause issues." + numTeeth = "Number of teeth on Primary Wheel." + TrigSpeed = "Primary trigger speed." + missingTeeth= "Number of Missing teeth on Primary Wheel." + TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor." + TrigAngMul = "A multiplier used by non-360 degree tooth wheels (i.e. Wheels where the tooth count doesn't divide evenly into 360. Usage: (360 * ) / tooth_count = Whole number" + SkipCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." + TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing." + TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing." + TrigFilter = "Tuning of the trigger filter algorithm. The more aggressive the setting, the more noise will be removed, however this increases the chance of some true readings being filtered out (False positive). Medium is safe for most setups. Only select 'Aggressive' if no other options are working" + + sparkMode = "Wasted Spark: Ignition outputs are on the channels <= half the number of cylinders. Eg 4 cylinder outputs on IGN1 and IGN2.\nSingle Channel: All ignition pulses are output on IGN1.\nWasted COP: Ignition pulses are output on all ignition channels up to the number of cylinders. Eg 4 cylinder outputs on all ignition channels. No valid for >4 cylinders" + IgInv = "Whether the spark fires when the ignition signal goes high or goes low. Nearly all ignition systems use 'Going Low' but please verify this as damage to coils can result from the incorrect selection. (NOTE: THIS IS NOT MEGASQUIRT. THIS SETTING IS USUALLY THE OPPOSITE OF WHAT THEY USE!)" + sparkDur = "The duration of the spark at full dwell. Typically around 1ms" + + fanInv = "" + fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5" + + taeTime = "The duration of the acceleration enrichment" + + iacChannels = "The number of output channels used for PWM valves. Select 1 for 2-wire valves or 2 for 3-wire valves." + iacStepTime = "Pause time between each step. Values that are too low can cause the motor to behave erratically or not at all" + iacStepHome = "Homing steps to perform on startup. Must be greater than the fully open steps value" + iacStepHyster = "The minimum number of steps to move in any one go." + iacAlgorithm = "Selects method of idle control.\nNone = no idle control valve.\nOn/Off valve.\nPWM valve (2,3 wire).\nStepper Valve (4,6,8 wire)." + iacPWMdir = "Normal PWM valves increase RPM with higher duty. If RPM decreases with higher duty then select Reverse" + iacCLminDuty= "When using closed loop idle control, this is the minimum duty cycle that the PID loop will allow. Combined with the maximum value, this specifies the working range of your idle valve" + iacCLmaxDuty= "When using closed loop idle control, this is the maximum duty cycle that the PID loop will allow. Combined with the minimum value, this specifies the working range of your idle valve" + iacFastTemp = "Below this temperature, the idle output will be high (On). Above this temperature, it will turn off." + + oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1" + oddfire3 = "The ATDC angle of channel 3 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 2)" + oddfire4 = "The ATDC angle of channel 4 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 3)" + + dfcoRPM = "The RPM above which DFCO will be active. Typically set a few hundred RPM above maximum idle speed" + dfcoHyster = "Hysteresis for DFCO RPM. 200-300 RPM is typical for this, however a higher value may be needed if the RPM is fluctuating around the cutout speed" + dfcoTPSThresh= "The TPS value below which DFCO will be active. Typical value is 5%-10%, but higher may be needed if TPS signal is noisy" + + launchPin = "The ARDUINO pin that the clutch switch is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" + ignBypassPin = "The ARDUINO pin that the ignition bypass is connected to. This is NOT the pin on the connector, but the pin it relates to on the arduino" + ignBypassEnable = "If turned on, a ground signal will be output during cranking on the specified pin. This is used to bypass the Speeduino ignition control during cranking." + ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved." + + multiplyMAP = "If enabled, the MAP reading is included directly into the pulsewidth calculation by multiplying the VE lookup value by the MAP:Baro ratio. This results in a flatter VE table that can be easier to tune in some instances. VE table must be retuned when this value is changed." + includeAFR = "When enabled, the current AFR reading is incorporated directly in the pulsewidth calculation as a percentage of the current target ratio. VE table must be retuned when this value is changed. " + useExtBaro = "By Default, Speeduino will measure barometric pressure upon startup. Optionally however, a 2nd pressure sensor can be used to perform live barometric readings whilst the system is on." + + flexEnabled = "Turns on readings from the Flex sensor and enables the below adjustments" + flexFreqLow = "The frequency of the sensor at 0% ethanol (50Hz for standard GM/Continental sensor)" + flexFreqHigh = "The frequency of the sensor at 100% ethanol (150Hz for standard GM/Continental sensor)" + flexFuelLow = "Fuel % to be used for the lowest ethanol reading (Typically 100%. ie No adjustment)" + flexFuelHigh = "Fuel % to be used for the highest ethanol reading (Typically 163% for 100% ethanol)" + flexAdvLow = "Additional advance (in degrees) at lowest ethanol reading (Typically 0)" + flexAdvHigh = "Additional advance (in degrees) at highest ethanol reading (Typically 10-20 degrees)" + flexBoostHigh = "This amount that will be added to the boost target at E100. Between E0 and E100, the amount added to the boost target will be scaled from 0 to this value" + flexBoostLow = "Typically should be set to 0, but can be used to lower boost at E0 if the bast tune is setup with some ethanol" + + flatSArm = "The RPM switch point that determines whether an eganged clutch is for launch control or flat shift. Below this figure, an engaged clutch is considered to be for launch, above this figure an active clutch input will be considered a flat shift. This should be set at least several hundred RPM above idle" + flatSSoftWin= "The number of RPM below the flat shift point where the softlimit will be applied (aka Soft limit window). Recommended values are 200-1000" + flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window" + hardCutType = "How hard cuts should be performed for rev/launch limits. Full cut will stop all ignition events, Rolling cut will step through all ignition outputs, only cutting 1 per revolution" + + #if CAN_COMMANDS + enable_canbus = "This Enables either the secondary serial port or output via internal Can module. Secondary serial is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " + #else + enable_canbus = "This Enables the IO on the secondary serial port. This is serial3 on mega2560 processor, and Serial2 on STM32 and Teensy processor " + #endif + ;speeduino_tsCanId = "This is the TsCanId that the Speeduino ECU will respond to. This should match the main controller CAN ID in project properties if it is connected directy to TunerStudio, Otherwise the device ID if connected via CAN passthrough" + true_address = "This is the 11bit Can address of the Speeduino ECU " + realtime_base_address = "This is the 11bit CAN address of the realtime data broadcast from the Speeduino ECU. This MUST be at least 0x16 greater than the true address" + ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" + caninput_sel0 = "This Enables CAN data input channel 0 " + caninput_sel1 = "This Enables CAN data input channel 1 " + caninput_sel2 = "This Enables CAN data input channel 2 " + caninput_sel3 = "This Enables CAN data input channel 3 " + caninput_sel4 = "This Enables CAN data input channel 4 " + caninput_sel5 = "This Enables CAN data input channel 5 " + caninput_sel6 = "This Enables CAN data input channel 6 " + caninput_sel7 = "This Enables CAN data input channel 7 " + caninput_sel8 = "This Enables CAN data input channel 8 " + caninput_sel9 = "This Enables CAN data input channel 9 " + caninput_sel10 = "This Enables CAN data input channel 10 " + caninput_sel11 = "This Enables CAN data input channel 11 " + caninput_sel12 = "This Enables CAN data input channel 12 " + caninput_sel13 = "This Enables CAN data input channel 13 " + caninput_sel14 = "This Enables CAN data input channel 14 " + caninput_sel15 = "This Enables CAN data input channel 15 " + caninput_source_can_address0 = "The source 11bit CAN address of the data for channel 0" + caninput_source_can_address1 = "The source 11bit CAN address of the data for channel 1" + caninput_source_can_address2 = "The source 11bit CAN address of the data for channel 2" + caninput_source_can_address3 = "The source 11bit CAN address of the data for channel 3" + caninput_source_can_address4 = "The source 11bit CAN address of the data for channel 4" + caninput_source_can_address5 = "The source 11bit CAN address of the data for channel 5" + caninput_source_can_address6 = "The source 11bit CAN address of the data for channel 6" + caninput_source_can_address7 = "The source 11bit CAN address of the data for channel 7" + caninput_source_can_address8 = "The source 11bit CAN address of the data for channel 8 " + caninput_source_can_address9 = "The source 11bit CAN address of the data for channel 9" + caninput_source_can_address10 = "The source 11bit CAN address of the data for channel 10" + caninput_source_can_address11 = "The source 11bit CAN address of the data for channel 11" + caninput_source_can_address12 = "The source 11bit CAN address of the data for channel 12" + caninput_source_can_address13 = "The source 11bit CAN address of the data for channel 13" + caninput_source_can_address14 = "The source 11bit CAN address of the data for channel 14" + caninput_source_can_address15 = "The source 11bit CAN address of the data for channel 15" + caninput_source_start_byte0 = "The Starting byte the data begins at for channel 0" + caninput_source_start_byte1 = "The Starting byte the data begins at for channel 1" + caninput_source_start_byte2 = "The Starting byte the data begins at for channel 2" + caninput_source_start_byte3 = "The Starting byte the data begins at for channel 3" + caninput_source_start_byte4 = "The Starting byte the data begins at for channel 4" + caninput_source_start_byte5 = "The Starting byte the data begins at for channel 5" + caninput_source_start_byte6 = "The Starting byte the data begins at for channel 6" + caninput_source_start_byte7 = "The Starting byte the data begins at for channel 7" + caninput_source_start_byte8 = "The Starting byte the data begins at for channel 8" + caninput_source_start_byte9 = "The Starting byte the data begins at for channel 9" + caninput_source_start_byte10 = "The Starting byte the data begins at for channel 10" + caninput_source_start_byte11 = "The Starting byte the data begins at for channel 11" + caninput_source_start_byte12 = "The Starting byte the data begins at for channel 12" + caninput_source_start_byte13 = "The Starting byte the data begins at for channel 13" + caninput_source_start_byte14 = "The Starting byte the data begins at for channel 14" + caninput_source_start_byte15 = "The Starting byte the data begins at for channel 15" + caninput_source_num_bytes0 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes1 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes2 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes3 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes4 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes5 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes6 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes7 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes8 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes9 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes10 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes11 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes12 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes13 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes14 = "The number of bytes the data is made from starting at selected start byte number" + caninput_source_num_bytes15 = "The number of bytes the data is made from starting at selected start byte number" + + cmdEnableTestMode = "Click this to enable test mode. This will not be available if the engine is running" + cmdStopTestMode = "Click this to disable test mode" + cmdtestinj150dc = "this will cycle the output at 50% Duty cycle" + cmdtestinj250dc = "this will cycle the output at 50% Duty cycle" + cmdtestinj350dc = "this will cycle the output at 50% Duty cycle" + cmdtestinj450dc = "this will cycle the output at 50% Duty cycle" + cmdtestspk150dc = "this will cycle the output at 50% Duty cycle" + cmdtestspk250dc = "this will cycle the output at 50% Duty cycle" + cmdtestspk350dc = "this will cycle the output at 50% Duty cycle" + cmdtestspk450dc = "this will cycle the output at 50% Duty cycle" + + boostIntv = "The closed loop control interval will run every this many ms. Generally values between 50% and 100% of the valve frequency work best" + VVTasOnOff = "Whether or not the VVT table should be treated as on and off control only. If you are using the VVT map to control a switch, this should be Yes. If you are using the VVT control to drive a PWM signal, this should be No" + + stagedInjSizePri= "Size of the primary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" + stagedInjSizeSec= "Size of the secondary injectors. The sum of the Pri and Sec injectors values MUST match the value used in the req_fuel calculation" + +[UserDefined] + +; Enhanced TunerStudio dialogs can be defined here +; MegaTune will over look this section +; These dialogs will over-ride those in the UserDefined Section +; User defined ar loaded first, then if one by the same name is defiend here, +; it will replace the MegaTune definition + +; dialog = name, Title, Layout +; +; valid options for layout are xAxis, yAxis, border +; for an xAxis, each field added will be added from right to left +; A yAxis layout will add fields from top to bottom +; A border layout will expect an additional constraint to determine placement +; valid border constraints are north, South, East, West, Center +; all 5 do not need to be filled. + +; The field name can be either a constant reference, or a reference to another +; dialog which will be added. +; dialogs can be nested and can be mixed with fields + + dialog = engine_constants_southwest, "Speeduino Board" + field = "Stoichiometric ratio", stoich + field = "Injector Layout", injLayout, { nCylinders <= 4 } + field = "Board Layout", pinLayout + field = "MAP Sample method", mapSample + + dialog = engine_constants_west, "" + panel = std_injection, North + panel = engine_constants_southwest + + dialog = engine_constants_northeast, "Oddfire Angles" + field = "Channel 2 angle", oddfire2, { engineType == 1 } + field = "Channel 3 angle", oddfire3, { engineType == 1 && nCylinders >= 3 } + field = "Channel 4 angle", oddfire4, { engineType == 1 && nCylinders >= 4 } + + dialog = engine_constants_east, "" + panel = engine_constants_northeast, North + field = "" + + dialog = engine_constants, "", border + panel = engine_constants_west, West + panel = engine_constants_east, East + +# Flex fuel stuff + dialog = flexFueling, "Flex Fuel" + field = "Flex sensor", flexEnabled + + dialog = flexLeft, "" + field = "Component" + field = "Sensor Frequency" + field = "Fuel Adjustment" + field = "Additional advance" + field = "Additional boost", { boostEnabled } + + dialog = flexMiddle, "" + field = "Low (E0)" + field = "", flexFreqLow, { flexEnabled } + field = "", flexFuelLow, { flexEnabled } + field = "", flexAdvLow, { flexEnabled } + field = "", flexBoostLow, { boostEnabled } + + dialog = flexRight, "" + field = "High (E100)" + field = "", flexFreqHigh, { flexEnabled } + field = "", flexFuelHigh, { flexEnabled } + field = "", flexAdvHigh, { flexEnabled } + field = "", flexBoostHigh, { flexEnabled && boostEnabled } + + dialog = flexMain, "Flex Fuel Calibration", xAxis + panel = flexLeft + panel = flexMiddle + panel = flexRight + + dialog = flexFuelTop, "" + field = "Flex Fuel Sensor", flexEnabled + + dialog = flexFueling, "Fuel Sensor Settings", yAxis + topicHelp = "http://speeduino.com/wiki/index.php/Flex_Fuel" + panel = flexFuelTop + panel = flexMain + + dialog = tacho, "Tacho" + field = "Output pin", tachoPin + field = "Output speed", tachoDiv + + dialog = accelEnrichments_center, "" + field = "TPSdot Threshold", tpsThresh + field = "Accel Time", taeTime + + dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)" + field = "Enabled", dfcoEnabled + field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled } + field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } + field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled } + + dialog = accelEnrichments_north_south, "" + liveGraph = pump_ae_Graph, "AE Graph" + graphLine = afr + graphLine = TPSdot, "%", -2000, 2000, auto, auto + + dialog = accelEnrichments_north, "", xAxis + panel = time_accel_tpsdot_curve + + dialog = accelEnrichments, "Acceleration Enrichment" + topicHelp = "http://speeduino.com/wiki/index.php/Acceleration_Wizard" + panel = accelEnrichments_north, North + panel = accelEnrichments_north_south, Center + panel = accelEnrichments_center, Center + panel = accelEnrichments_south, South + + dialog = veTableDialog_north, "" + panel = veTable1Tbl + + dialog = veTableDialog_south, "" + field = "Multiply VE value by MAP:Baro ratio", multiplyMAP + field = "Multiply by ratio of AFR to Target AFR", includeAFR, { egoType == 2 } + + dialog = veTableDialog, "VE Table" + panel = veTableDialog_north, North + panel = veTableDialog_south, South + + dialog = injChars, "Injector Characteristics" + field = "Injector Open Time", injOpen + field = "Injector close angle" + field = "", inj1Ang, { indInjAng == 0 } + field = "Individual channel setting", indInjAng + field = "Channel 1", inj1Ang, { indInjAng } + field = "Channel 2", inj2Ang, { nCylinders > 1 && indInjAng } + field = "Channel 3", inj3Ang, { indInjAng && (nCylinders > 4 || nCylinders == 3 || ((nCylinders == 4) && (injLayout == 3))) } + field = "Channel 4", inj4Ang, { indInjAng && (nCylinders > 6 || ((nCylinders == 4) && (injLayout == 3))) } + field = "Injector Duty Limit", dutyLim + panel = injector_voltage_curve + + dialog = egoControl, "" + topicHelp = "http://speeduino.com/wiki/index.php/AFR/O2" + field = "Sensor Type", egoType + field = "Algorithm", egoAlgorithm, { egoType } + field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } + field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } + field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } + field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } + + field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } + field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } + field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } + field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } + field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } + field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } + field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } + + dialog = fanSettings,"Fan Settings",7 + field = "Fan Mode", fanEnable + field = "Fan output pin", fanPin, { fanEnable } + field = "Fan Output Inverted", fanInv , { fanEnable } + field = "Fan temperature SP", fanSP, { fanEnable } + field = "Fan hysteresis", fanHyster, { fanEnable } + + dialog = stepper_idle, "Stepper Idle" + field = "Step time (ms)", iacStepTime, { iacAlgorithm == 4 || iacAlgorithm == 5 } + field = "Home steps", iacStepHome, { iacAlgorithm == 4 || iacAlgorithm == 5 } + field = "Minimum Steps", iacStepHyster, { iacAlgorithm == 4 || iacAlgorithm == 5 } + + dialog = pwm_idle, "PWM Idle" + field = "Number of outputs", iacChannels, { iacAlgorithm == 2 || iacAlgorithm == 3 } + field = "Idle valve frequency", idleFreq, { iacAlgorithm == 2 || iacAlgorithm == 3 } + field = "Idle valve direction", iacPWMdir, { iacAlgorithm == 2 || iacAlgorithm == 3 } + + dialog = closedloop_idle, "Closed loop Idle" + field = "P", idleKP, { iacAlgorithm == 3 || iacAlgorithm == 5 } + field = "I", idleKI, { iacAlgorithm == 3 || iacAlgorithm == 5 } + field = "D", idleKD, { iacAlgorithm == 3 || iacAlgorithm == 5 } + field = "Minimum valve duty", iacCLminDuty, { iacAlgorithm == 3 } + field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 } + + dialog = idleSettings, "Idle Settings" + topicHelp = "http://speeduino.com/wiki/index.php/Idle" + field = "Idle control type", iacAlgorithm + field = "#Fast Idle" + field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 } + panel = pwm_idle + panel = stepper_idle + panel = closedloop_idle + + dialog = fuelpump, "Fuel pump" + field = "Fuel pump pin", fuelPumpPin + field = "Fuel pump prime duration", fpPrime + + dialog = crankingEnrichDialog, "Cranking Enrichment", yAxis + panel = cranking_enrich_curve + + dialog = crankingIgnOptions, "Cranking Timing", yAxis + field = "Cranking advance Angle", CrankAng + field = "Cranking bypass", ignBypassEnable + field = "Bypass output pin", ignBypassPin { ignBypassEnable } + field = "Fix cranking timing with trigger", ignCranklock, { TrigPattern == 1 || TrigPattern == 4 || TrigPattern == 10 || TrigPattern == 9 } + + dialog = crankingOptions, "", yAxis + field = "Cranking RPM (Max)", crankRPM + field = "Flood Clear level", tpsflood + field = "" + field = "Fuel pump prime duration", fpPrime + field = "Priming Pulsewidth", primePulse + + dialog = crankPW, "Cranking Settings", yAxis + topicHelp = "http://speeduino.com/wiki/index.php/Cranking" + panel = crankingOptions, North + panel = crankingEnrichDialog, Center + panel = crankingIgnOptions, South + + + dialog = aseSettings, "Afterstart Enrichment" + field = "Enrichment %", asePct + field = "Number of Sec to run", aseCount + + + dialog = triggerSettings,"Trigger Settings",4 + topicHelp = "http://speeduino.com/wiki/index.php/Decoders" + field = "Trigger Pattern", TrigPattern + field = "Primary base teeth", numTeeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 } + field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 } + field = "Missing teeth", missingTeeth, { TrigPattern == 0 } + field = "Secondary teeth", missingTeeth, { TrigPattern == 2 } + field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 } + field = "Trigger Angle ", TrigAng + field = "This number represents the angle ATDC when " + field = "tooth #1 passes the primary sensor." + field = "" + field = "Skip Revolutions", SkipCycles + field = "Note: This is the number of revolutions that will be skipped during" + field = "cranking before the injectors and coils are fired" + field = "Trigger edge", TrigEdge + field = "Secondary trigger edge", TrigEdgeSec, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 9 || TrigPattern == 12 } ;Missing tooth, dual wheel and Miata 9905 + field = "Trigger Filter", TrigFilter + field = "Re-sync every cycle", useResync, { TrigPattern == 2 || TrigPattern == 4 || TrigPattern == 7 || TrigPattern == 12 || TrigPattern == 9 } ;Dual wheel, 4G63, Audi 135, Nissan 360, Miata 99-05 + field = "" + field = "#The below option is EXPERIMENTAL! If unsure what this is, please set to No" + field = "User per tooth ignition calculation", perToothIgn, {TrigPattern == 0 || TrigPattern == 1 || TrigPattern == 2 || TrigPattern == 4 || TrigPattern == 12 || TrigPattern == 16 } ;Only works for missing tooth, distributor, dual wheel, nissan 360, 36-2-2-2 + + dialog = sparkSettings,"Spark Settings",4 + field = "Spark output mode", sparkMode + field = "Cranking advance Angle", CrankAng + field = "Spark Outputs triggers", IgInv + field = "" + field = "Fixed Angle (0 = use map)", FixAng + + dialog = dwellSettings, "Dwell Settings", 4 + topicHelp = "http://speeduino.com/wiki/index.php/Dwell" + field = " Cranking dwell", dwellcrank + field = " Running dwell", dwellrun + field = " Spark duration", sparkDur + field = "" + field = "#Note" + field = "The above times are for 12V. Voltage correction" + field = "is applied. At higher voltages the time is reduced" + field = "and when low it is increased" + field = "" + field = "Overdwell protection" + field = "Use Overdwell protection", useDwellLim + field = "Max dwell time", dwellLim, { useDwellLim } + field = "Note: Set the maximum dwell time at least 3ms above" + field = "your desired dwell time (Including cranking)" + + dialog = rotary_ignition, "Rotary Ignition", 4 + field = "Ignition Configuration", rotaryType + panel = rotaryTrailing_curve + + dialog = boostCut, "Boost Cut" + field = "Boost Cut", boostCutType + field = "Boost Limit", boostLimit, { boostCutType } + + dialog = RevLimiterS, "Rev Limiter", 4 + topicHelp = "http://speeduino.com/wiki/index.php/Rev_Limits" + field = "Rev Limiter" + field = "Soft rev limit", SoftRevLim + field = "Soft limit absolute timing", SoftLimRetard + field = "Soft limit max time", SoftLimMax + field = "Hard Rev limit", HardRevLim + field = "Hard limiter method", hardCutType + panel = boostCut + + dialog = clutchInput, "Clutch input" + field = "Clutch Input Pin", launchPin, { launchEnable || flatSEnable } + field = "Clutch enabled when signal is",launchHiLo, { launchEnable || flatSEnable } + field = "Clutch Pullup Resistor", lnchPullRes, { launchEnable || flatSEnable } + field = "Launch / Flat Shift switch RPM",flatSArm, { launchEnable || flatSEnable } + + dialog = LaunchControl, "Launch Control / Flat shift", 6 + topicHelp = "http://speeduino.com/wiki/index.php/Launch_Flatshift" + panel = clutchInput + ; Launch control + field = "Launch Control" + field = "Enable Launch", launchEnable + field = "Soft rev limit", lnchSoftLim, { launchEnable } + field = "Soft limit absolute timing", lnchRetard, { launchEnable } + field = "Hard rev limit", lnchHardLim, { launchEnable } + field = "Fuel adder during launch", lnchFuelAdd, { launchEnable } + + ; Flat shift + field = "Flat Shift" + field = "Enable flat shift", flatSEnable + field = "Soft rev window", flatSSoftWin, { flatSEnable } + field = "Soft limit absolute timing", flatSRetard, { flatSEnable } + + + dialog = OLED, "OLED Display", 2 + field = "Display Type", display + field = "#Note" + field = "ECU must be rebooted after changing above value" + field = "Field 1", display1, { display } + field = "Field 2", display2, { display } + field = "Field 3", display3, { display } + field = "Field 4", display4, { display } + ;field = "Bar 1", displayB1, { display } + ;field = "Bar 2", displayB2, { display > 2 } + + dialog = mapCal, "Calibrate MAP" + field = "#MAP Sensor" + settingSelector = "Common Pressure Sensors" + settingOption = "MPX4115", mapMin=10, mapMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf + settingOption = "MPX4250", mapMin=10, mapMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) + settingOption = "GM 1-BAR", mapMin=10, mapMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif + settingOption = "GM 2-BAR", mapMin=9, mapMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif + settingOption = "GM 3-BAR", mapMin=1, mapMax=315 ; VOUT = VS*(.00318*P-.00353) + settingOption = "MPXH6300", mapMin=1, mapMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) + settingOption = "MPX5700", mapMin=-31, mapMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) + settingOption = "MPX6400", mapMin=3, mapMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) + settingOption = "Denso 079800", mapMin=0, mapMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 + settingOption = "VW/Audi/Porsche 250kPa", mapMin=26, mapMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 + + field = "kPa At 0.0 Volts", mapMin + field = "kPa At 5.0 Volts", mapMax + + field = "#Baro Sensor" + field = "Use external Baro sensor", useExtBaro + field = "Analog pin to use for ext. Baro sensor", baroPin, { useExtBaro } + + settingSelector = "Common Pressure Sensors", { useExtBaro } + settingOption = "MPX4115", baroMin=10, baroMax=118 ; https://www.nxp.com/docs/en/data-sheet/MPX4115.pdf + settingOption = "MPX4250", baroMin=10, baroMax=260 ; https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf Vout = VCC x (P x 0.004 – 0.04) + settingOption = "GM 1-BAR", baroMin=10, baroMax=105 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif + settingOption = "GM 2-BAR", baroMin=9, baroMax=208 ; https://speeduino.com/wiki/index.php/File:GM_Table.gif + settingOption = "GM 3-BAR", baroMin=1, baroMax=315 ; VOUT = VS*(.00318*P-.00353) + settingOption = "MPXH6300", baroMin=1, baroMax=315 ; https://www.nxp.com/docs/en/data-sheet/MPXH6300A.pdf VOUT = VS*(.00318*P-.00353) + settingOption = "MPX5700", baroMin=-31, baroMax=746 ; https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf Vout = VS*(0.0012858*P+0.04) + settingOption = "MPX6400", baroMin=3, baroMax=416 ; https://www.nxp.com/docs/en/data-sheet/MPXH6400A.pdf VOUT = VS x (0.002421xP–0.00842) + settingOption = "Denso 079800", baroMin=0, baroMax=173 ; http://speeduino.com/forum/viewtopic.php?f=18&t=510&p=7023#p7021 + settingOption = "VW/Audi/Porsche 250kPa", baroMin=26, baroMax=250 ; http://speeduino.com/forum/viewtopic.php?p=17502#p17502 + + field = "kPa At 0.0 Volts", baroMin, { useExtBaro } + field = "kPa At 5.0 Volts", baroMax, { useExtBaro } + + dialog = boostSettings, "Boost Control" + topicHelp = "http://speeduino.com/wiki/index.php/Boost_Control" + field = "Boost Control Enabled", boostEnabled + field = "Boost output pin", boostPin, { boostEnabled } + field = "Boost solenoid freq.", boostFreq, { boostEnabled } + + field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled } + field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled } + panel = boostCut + field = "Closed Loop settings" + field = "Control mode", boostMode, { boostEnabled } + slider = "Sensitivity", boostSens, horizontal, { boostEnabled } + field = "Control interval", boostIntv, { boostEnabled } + field = "P", boostKP, { boostEnabled && boostMode } + field = "I", boostKI, { boostEnabled && boostMode} + field = "D", boostKD, { boostEnabled && boostMode} + + + dialog = vvtSettings, "VVT Control" + field = "VVT Control Enabled", vvtEnabled + field = "Use VVT map as On / Off only", VVTasOnOff, { vvtEnabled } + field = "VVT output pin", vvtPin, { vvtEnabled } + field = "VVT solenoid freq.", vvtFreq, { vvtEnabled } + + + dialog = warmup, "Warmup Enrichment (WUE) - Percent Multiplier" + panel = warmup_curve + field = "Final enrichment value must be 100%." + field = "" + panel = aseSettings + + ;Fuel trim composite dialog + dialog = inj_trim1TblTitle, "Channel #1" + panel = fuelTrimTable1Tbl, { fuelTrimEnabled } + dialog = inj_trim2TblTitle, "Channel #2" + panel = fuelTrimTable2Tbl, { fuelTrimEnabled } + dialog = inj_trim3TblTitle, "Channel #3" + panel = fuelTrimTable3Tbl, { fuelTrimEnabled } + dialog = inj_trim4TblTitle, "Channel #4" + panel = fuelTrimTable4Tbl, { fuelTrimEnabled } + + dialog = inj_trimadt, "", xAxis + panel = inj_trim1TblTitle + panel = inj_trim2TblTitle + dialog = inj_trimadb, "", xAxis + panel = inj_trim3TblTitle + panel = inj_trim4TblTitle + + dialog = inj_trim_enable, "" + field = "Individual fuel trim enabled", fuelTrimEnabled, { injLayout == 3 } + + dialog = inj_trimad,"Injector Cyl 1-4 Trims", yAxis + panel = inj_trim_enable, North + panel = inj_trimadt, Center + panel = inj_trimadb, South + + ;;Injector staging + dialog = stagingTableDialog_north, "" + field = "Staging enabled", stagingEnabled + field = "Staging mode", stagingMode + field = "Size of primary injectors", stagedInjSizePri, { stagingEnabled } + field = "Size of secondary injectors", stagedInjSizeSec, { stagingEnabled } + + dialog = stagingTableDialog_south, "" + panel = stagingTbl, { stagingMode == 0 } + + dialog = stagingTableDialog, "Staged injection" + topicHelp = "https://speeduino.com/wiki/index.php/Staged_Injection" + panel = stagingTableDialog_north, North + panel = stagingTableDialog_south, South + + dialog = outputtest_warningmessage, "" + field = "WARNING! USE AT YOUR OWN RISK. INCORRECT USE WILL DAMAGE YOUR HARDWARE!" + field = "Do not attempt to use this page whilst your engine is running!" + field = "Forcing the Injector or Spark outputs could cause flooding of your engine or permanent damage to ignition coils!" + + + dialog = enableoutputtestbuttons, "Enable Test Controls", xAxis + ;commandButton = "Label Text", command, { Enabled Condition }, optionalFlags + + ; The rem > 0 expression is just for testing.. It works when the arduino is on the Stim with rpm. + ; a status bit there would be the expected real expression + commandButton = "Enable Test Mode", cmdEnableTestMode,{!testenabled & !testactive } + + ; if clickOnCloseIfEnabled is set, then the command assigned to this button will be run on the + ; dialog close, but only if the enable condition is true + ; valid click flags are: + ; clickOnCloseIfEnabled - the command will be sent on dialog close if active condition is true + ; clickOnCloseIfDisabled - the command will be sent on dialog close if active condition is false + ; clickOnClose - the command will be sent on dialog close always + commandButton = "Stop Test Mode", cmdStopTestMode,{testactive}, clickOnCloseIfEnabled + + dialog = outputtestinj1, "Injector CH1", yAxis + commandButton = "Off", cmdtestinj1off,{testactive} + commandButton = "50% DC", cmdtestinj150dc,{!testenabled & testactive} + commandButton = "On", cmdtestinj1on,{!testenabled & testactive} + dialog = outputtestinj2, "Injector CH2", yAxis + commandButton = "Off", cmdtestinj2off,{testactive} + commandButton = "50% DC", cmdtestinj250dc,{!testenabled &testactive} + commandButton = "On", cmdtestinj2on,{!testenabled & testactive} + dialog = outputtestinj3, "Injector CH3", yAxis + commandButton = "Off", cmdtestinj3off,{testactive} + commandButton = "50% DC", cmdtestinj350dc,{!testenabled & testactive} + commandButton = "On", cmdtestinj3on,{!testenabled & testactive} + dialog = outputtestinj4, "Injector CH4", yAxis + commandButton = "Off", cmdtestinj4off,{testactive} + commandButton = "50% DC", cmdtestinj450dc,{!testenabled & testactive} + commandButton = "On", cmdtestinj4on ,{!testenabled & testactive} + + dialog = outputtest_injectors, "Injector Driver Output Test", xAxis + panel = outputtestinj1 + panel = outputtestinj2 + panel = outputtestinj3 + panel = outputtestinj4 + + dialog = outputtestspk1, "Spark CH1 ", yAxis + commandButton = "Off", cmdtestspk1off,{testactive} + commandButton = "50% DC", cmdtestspk150dc,{!testenabled & testactive} + commandButton = "On", cmdtestspk1on,{!testenabled & testactive} + dialog = outputtestspk2, "Spark CH2", yAxis + commandButton = "Off", cmdtestspk2off,{testactive} + commandButton = "50% DC", cmdtestspk250dc,{!testenabled & testactive} + commandButton = "On", cmdtestspk2on,{!testenabled & testactive} + dialog = outputtestspk3, "Spark CH3", yAxis + commandButton = "Off", cmdtestspk3off,{testactive} + commandButton = "50% DC", cmdtestspk350dc,{!testenabled & testactive} + commandButton = "On", cmdtestspk3on,{!testenabled & testactive} + dialog = outputtestspk4, "Spark CH4", yAxis + commandButton = "Off", cmdtestspk4off,{testactive} + commandButton = "50% DC", cmdtestspk450dc,{!testenabled & testactive} + commandButton = "On", cmdtestspk4on,{!testenabled & testactive} + + dialog = outputtest_spark, "Spark Driver Output Test", xAxis + panel = outputtestspk1 + panel = outputtestspk2 + panel = outputtestspk3 + panel = outputtestspk4 + + dialog = outputtest1,"Test Output Hardware" + topicHelp = "http://speeduino.com/wiki/index.php/Hardware_testing_page" + panel = enableoutputtestbuttons + panel = outputtest_injectors + panel = outputtest_spark + ;panel = outputtest_io2 + panel = outputtest_warningmessage + + dialog = caninput_sel, "" + ;CAN inputs + field = " CAN Input Channel on/off" + field = "CAN Input 0", caninput_sel0, { enable_candata_in } + field = "CAN Input 1", caninput_sel1, { enable_candata_in } + field = "CAN Input 2", caninput_sel2, { enable_candata_in } + field = "CAN Input 3", caninput_sel3, { enable_candata_in } + field = "CAN Input 4", caninput_sel4, { enable_candata_in } + field = "CAN Input 5", caninput_sel5, { enable_candata_in } + field = "CAN Input 6", caninput_sel6, { enable_candata_in } + field = "CAN Input 7", caninput_sel7, { enable_candata_in } + field = "CAN Input 8", caninput_sel8, { enable_candata_in } + field = "CAN Input 9", caninput_sel9, { enable_candata_in } + field = "CAN Input 10", caninput_sel10, { enable_candata_in } + field = "CAN Input 11", caninput_sel11, { enable_candata_in } + field = "CAN Input 12", caninput_sel12, { enable_candata_in } + field = "CAN Input 13", caninput_sel13, { enable_candata_in } + field = "CAN Input 14", caninput_sel14, { enable_candata_in } + field = "CAN Input 15", caninput_sel15, { enable_candata_in } + + dialog = caninput_parameter_group, "", yAxis + field = " Source CAN Address" + field = "", caninput_source_can_address0, { caninput_sel0 && enable_candata_in } + field = "", caninput_source_can_address1, { caninput_sel1 && enable_candata_in } + field = "", caninput_source_can_address2, { caninput_sel2 && enable_candata_in } + field = "", caninput_source_can_address3, { caninput_sel3 && enable_candata_in } + field = "", caninput_source_can_address4, { caninput_sel4 && enable_candata_in } + field = "", caninput_source_can_address5, { caninput_sel5 && enable_candata_in } + field = "", caninput_source_can_address6, { caninput_sel6 && enable_candata_in } + field = "", caninput_source_can_address7, { caninput_sel7 && enable_candata_in } + field = "", caninput_source_can_address8, { caninput_sel8 && enable_candata_in } + field = "", caninput_source_can_address9, { caninput_sel9 && enable_candata_in } + field = "", caninput_source_can_address10, { caninput_sel10 && enable_candata_in } + field = "", caninput_source_can_address11, { caninput_sel11 && enable_candata_in } + field = "", caninput_source_can_address12, { caninput_sel12 && enable_candata_in } + field = "", caninput_source_can_address13, { caninput_sel13 && enable_candata_in } + field = "", caninput_source_can_address14, { caninput_sel14 && enable_candata_in } + field = "", caninput_source_can_address15, { caninput_sel15 && enable_candata_in } + + dialog = caninput_parameter_start_byte, "", yAxis + field = " source data start byte" + field = "", caninput_source_start_byte0, { caninput_sel0 && enable_candata_in } + field = "", caninput_source_start_byte1, { caninput_sel1 && enable_candata_in } + field = "", caninput_source_start_byte2, { caninput_sel2 && enable_candata_in } + field = "", caninput_source_start_byte3, { caninput_sel3 && enable_candata_in } + field = "", caninput_source_start_byte4, { caninput_sel4 && enable_candata_in } + field = "", caninput_source_start_byte5, { caninput_sel5 && enable_candata_in } + field = "", caninput_source_start_byte6, { caninput_sel6 && enable_candata_in } + field = "", caninput_source_start_byte7, { caninput_sel7 && enable_candata_in } + field = "", caninput_source_start_byte8, { caninput_sel8 && enable_candata_in } + field = "", caninput_source_start_byte9, { caninput_sel9 && enable_candata_in } + field = "", caninput_source_start_byte10, { caninput_sel10 && enable_candata_in } + field = "", caninput_source_start_byte11, { caninput_sel11 && enable_candata_in } + field = "", caninput_source_start_byte12, { caninput_sel12 && enable_candata_in } + field = "", caninput_source_start_byte13, { caninput_sel13 && enable_candata_in } + field = "", caninput_source_start_byte14, { caninput_sel14 && enable_candata_in } + field = "", caninput_source_start_byte15, { caninput_sel15 && enable_candata_in } + + dialog = caninput_parameter_num_byte, "", yAxis + field = "Input Parameter Number of Bytes" + field = "", caninput_source_num_bytes0, { caninput_sel0 && enable_candata_in } + field = "", caninput_source_num_bytes1, { caninput_sel1 && enable_candata_in } + field = "", caninput_source_num_bytes2, { caninput_sel3 && enable_candata_in } + field = "", caninput_source_num_bytes3, { caninput_sel3 && enable_candata_in } + field = "", caninput_source_num_bytes4, { caninput_sel4 && enable_candata_in } + field = "", caninput_source_num_bytes5, { caninput_sel5 && enable_candata_in } + field = "", caninput_source_num_bytes6, { caninput_sel6 && enable_candata_in } + field = "", caninput_source_num_bytes7, { caninput_sel7 && enable_candata_in } + field = "", caninput_source_num_bytes8, { caninput_sel8 && enable_candata_in } + field = "", caninput_source_num_bytes9, { caninput_sel9 && enable_candata_in } + field = "", caninput_source_num_bytes10, { caninput_sel10 && enable_candata_in } + field = "", caninput_source_num_bytes11, { caninput_sel11 && enable_candata_in } + field = "", caninput_source_num_bytes12, { caninput_sel12 && enable_candata_in } + field = "", caninput_source_num_bytes13, { caninput_sel13 && enable_candata_in } + field = "", caninput_source_num_bytes14, { caninput_sel14 && enable_candata_in } + field = "", caninput_source_num_bytes15, { caninput_sel15 && enable_candata_in } + + dialog = caninconfig_blank1,"" + field = "" + + dialog = Canin_config1, "", xAxis + panel = caninput_sel + panel = caninconfig_blank1 + panel = caninput_parameter_group + panel = caninconfig_blank1 + panel = caninput_parameter_start_byte + panel = caninconfig_blank1 + panel = caninput_parameter_num_byte + + dialog = Canin_config2, "External Data Input" + field = "Enable External data input", enable_candata_in + + dialog = Canin_config, "", border + topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface#Read_external_analog_data" + panel = Canin_config2, North + panel = Canin_config1, South + + dialog = canoutput_sel, "" + ;CAN outputs + field = "CAN Output Channel on/off" + field = "CAN Output 0", canoutput_sel0, { enable_candata_out} + field = "CAN Output 1", canoutput_sel1, { enable_candata_out } + field = "CAN Output 2", canoutput_sel2, { enable_candata_out } + field = "CAN Output 3", canoutput_sel3, { enable_candata_out } + field = "CAN Output 4", canoutput_sel4, { enable_candata_out } + field = "CAN Output 5", canoutput_sel5, { enable_candata_out } + field = "CAN Output 6", canoutput_sel6, { enable_candata_out } + field = "CAN Output 7", canoutput_sel7, { enable_candata_out } + ; field = "CAN Output 8", canoutput_sel8, { enable_candata_out} + ; field = "CAN Output 9", canoutput_sel9, { enable_candata_out } + ; field = "CAN Output 10", canoutput_sel10, { enable_candata_out } + ; field = "CAN Output 11", canoutput_sel11, { enable_candata_out } + ; field = "CAN Output 12", canoutput_sel12, { enable_candata_out } + ; field = "CAN Output 13", canoutput_sel13, { enable_candata_out } + ; field = "CAN Output 14", canoutput_sel14, { enable_candata_out } + ; field = "CAN Output 15", canoutput_sel15, { enable_candata_out } + + dialog = canoutput_parameter_group, "", yAxis + field = "Output Parameter Group" + field = "", canoutput_param_group[0], { canoutput_sel0 && enable_candata_out } + field = "", canoutput_param_group[1], { canoutput_sel1 && enable_candata_out } + field = "", canoutput_param_group[2], { canoutput_sel3 && enable_candata_out } + field = "", canoutput_param_group[3], { canoutput_sel3 && enable_candata_out } + field = "", canoutput_param_group[4], { canoutput_sel4 && enable_candata_out } + field = "", canoutput_param_group[5], { canoutput_sel5 && enable_candata_out } + field = "", canoutput_param_group[6], { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_group[7], { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_group[8], { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_group[9], { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_group[10], { canoutput_sel1 && enable_candata_out } + ; field = "", canoutput_param_group[11], { canoutput_sel2 && enable_candata_out } + ; field = "", canoutput_param_group[12], { canoutput_sel3 && enable_candata_out } + ; field = "", canoutput_param_group[13], { canoutput_sel4 && enable_candata_out } + ; field = "", canoutput_param_group[14], { canoutput_sel5 && enable_candata_out } + ; field = "", canoutput_param_group[15], { canoutput_sel6 && enable_candata_out } + + dialog = canoutput_parameter_start_byte, "", yAxis + field = "Output Parameter Start Byte" + field = "", canoutput_param_start_byte0, { canoutput_sel0 && enable_candata_out } + field = "", canoutput_param_start_byte1, { canoutput_sel1 && enable_candata_out } + field = "", canoutput_param_start_byte2, { canoutput_sel2 && enable_candata_out } + field = "", canoutput_param_start_byte3, { canoutput_sel3 && enable_candata_out } + field = "", canoutput_param_start_byte4, { canoutput_sel4 && enable_candata_out } + field = "", canoutput_param_start_byte5, { canoutput_sel5 && enable_candata_out } + field = "", canoutput_param_start_byte6, { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_start_byte7, { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_start_byte8, { canoutput_sel8 && enable_candata_out } + ; field = "", canoutput_param_start_byte9, { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_start_byte10, { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_start_byte11, { canoutput_sel11 && enable_candata_out } + ; field = "", canoutput_param_start_byte12, { canoutput_sel12 && enable_candata_out } + ; field = "", canoutput_param_start_byte13, { canoutput_sel13 && enable_candata_out } +; field = "", canoutput_param_start_byte14, { canoutput_sel14 && enable_candata_out } + ; field = "", canoutput_param_start_byte15, { canoutput_sel15 && enable_candata_out } + + dialog = canoutput_parameter_num_byte, "", yAxis + field = "Output Parameter Number of Bytes" + field = "", canoutput_param_num_bytes0, { canoutput_sel0 && enable_candata_out } + field = "", canoutput_param_num_bytes1, { canoutput_sel1 && enable_candata_out } + field = "", canoutput_param_num_bytes2, { canoutput_sel2 && enable_candata_out } + field = "", canoutput_param_num_bytes3, { canoutput_sel3 && enable_candata_out } + field = "", canoutput_param_num_bytes4, { canoutput_sel4 && enable_candata_out } + field = "", canoutput_param_num_bytes5, { canoutput_sel5 && enable_candata_out } + field = "", canoutput_param_num_bytes6, { canoutput_sel6 && enable_candata_out } + field = "", canoutput_param_num_bytes7, { canoutput_sel7 && enable_candata_out } + ; field = "", canoutput_param_num_bytes8, { canoutput_sel8 && enable_candata_out } + ; field = "", canoutput_param_num_bytes9, { canoutput_sel9 && enable_candata_out } + ; field = "", canoutput_param_num_bytes10, { canoutput_sel10 && enable_candata_out } + ; field = "", canoutput_param_num_bytes11, { canoutput_sel11 && enable_candata_out } + ; field = "", canoutput_param_num_bytes12, { canoutput_sel12 && enable_candata_out } + ; field = "", canoutput_param_num_bytes13, { canoutput_sel13 && enable_candata_out } +; field = "", canoutput_param_num_bytes14, { canoutput_sel14 && enable_candata_out } + ; field = "", canoutput_param_num_bytes15, { canoutput_sel15 && enable_candata_out } + + dialog = canoutconfig_blank1,"" + field = "" + + dialog = Canout_config1, "", xAxis + panel = canoutput_sel + panel = canoutconfig_blank1 + panel = canoutput_parameter_group + panel = canoutconfig_blank1 + panel = canoutput_parameter_start_byte + panel = canoutconfig_blank1 + panel = canoutput_parameter_num_byte + + dialog = Canout_config2, "CAN Data Out" + field = "Enable CanBus data Output", enable_candata_out + + dialog = Canout_config, "", border + topicHelp = "" + panel = Canout_config2, North + panel = Canout_config1, South + + dialog = can_serial3IO, "CanBus/Serial3 IO interface" + topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface" + field = "Enable CanBus/Second Serial", enable_canbus + ; field = "Speeduino TsCanId", speeduino_tsCanId + field = "True Canbus Address", true_address {enable_canbus} + field = "NOTE! Realtime Datat Base Address MUST be at least 0x16 GREATER than the True Address as they are reserved for future expansion" + field = "Realtime Data Base Can Address", realtime_base_address {enable_canbus} + ; field = "Speeduino OBD address", obd_address + + dialog = serial3IO, "Serial3 IO interface" + topicHelp = "http://speeduino.com/wiki/index.php/Serial3_IO_interface" + field = "Enable Second Serial", enable_canbus + +;------------------------------------------------------------------------------- +; General help text + + help = helpGeneral, "Speeduino General Help" + webHelp = "http://speeduino.com/wiki/index.php/Speeduino" + text = "For current WIKI documentation, click the Web Help button," + text = "or visit http://www.speeduino.com/." + text = "
" + text = "
why not visit our forum http://speeduino.com/forum/" +;------------------------------------------------------------------------------ +[ControllerCommands] +; commandName = command1, command2, commandn... +; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order. +; This does not include any resultant protocol envelope data, only the response data itself. + +; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands +; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition +; and may create error messages. +; It is expected that these commands would not typically alter any ram mapped to a Constant. + +cmdStopTestMode = "E\x01\x00" +cmdEnableTestMode = "E\x01\x01" + +cmdtestinj1on = "E\x02\x01" +cmdtestinj1off = "E\x02\x02" +cmdtestinj150dc = "E\x02\x03" +cmdtestinj2on = "E\x02\x04" +cmdtestinj2off = "E\x02\x05" +cmdtestinj250dc = "E\x02\x06" +cmdtestinj3on = "E\x02\x07" +cmdtestinj3off = "E\x02\x08" +cmdtestinj350dc = "E\x02\x09" +cmdtestinj4on = "E\x02\x0A" +cmdtestinj4off = "E\x02\x0B" +cmdtestinj450dc = "E\x02\x0C" + +cmdtestspk1on = "E\x03\x01" +cmdtestspk1off = "E\x03\x02" +cmdtestspk150dc = "E\x03\x03" +cmdtestspk2on = "E\x03\x04" +cmdtestspk2off = "E\x03\x05" +cmdtestspk250dc = "E\x03\x06" +cmdtestspk3on = "E\x03\x07" +cmdtestspk3off = "E\x03\x08" +cmdtestspk350dc = "E\x03\x09" +cmdtestspk4on = "E\x03\x0A" +cmdtestspk4off = "E\x03\x0B" +cmdtestspk450dc = "E\x03\x0C" + +; ------------------------------------------------------------- +; Help down here +[SettingContextHelp] + + +[CurveEditor] + +;time-based accel enrichment + curve = time_accel_tpsdot_curve, "TPS based AE" + columnLabel = "TPSdot", "Added" + xAxis = 0, 1200, 6 + yAxis = 0, 250, 4 + xBins = taeBins, TPSdot + yBins = taeRates + ;gauge = cltGauge + +; Correction curve for dwell vs battery voltage + curve = dwell_correction_curve, "Dwell voltage correction" + columnLabel = "Voltage", "Dwell" + xAxis = 6, 22, 6 + yAxis = 0, 255, 6 + xBins = brvBins, batteryVoltage + yBins = dwellRates + +; Correction curve for injectors vs battery voltage + curve = injector_voltage_curve, "Injector voltage correction" + columnLabel = "Voltage", "Injector" + xAxis = 6, 22, 6 + yAxis = 0, 255, 6 + xBins = brvBins, batteryVoltage + yBins = injBatRates + +; Correction curve for Air Density vs temperature + curve = airdensity_curve, "IAT density correction" + columnLabel = "Air Temperature", "Fuel Amount" + xAxis = -40, 160, 6 + yAxis = 0, 255, 6 + xBins = airDenBins, iat + yBins = airDenRates + +; IAT based ignition timing retard + curve = iat_retard_curve, "IAT timing retard" + columnLabel = "Inlet Air Temp", "Retard" + xAxis = -40, 200, 5 + yAxis = 0, 30, 5 + xBins = iatRetBins, iat + yBins = iatRetRates + +; Curves for idle control + ; Standard duty table for PWM valves + curve = iacPwm_curve, "IAC PWM Duty" + columnLabel = "Coolant Temperature", "Valve" + #if CELSIUS + xAxis = -40, 215, 6 + #else + xAxis = -40, 315, 6 + #endif + yAxis = 0, 100, 4 + xBins = iacBins, coolant + yBins = iacOLPWMVal + + ; Cranking duty table for PWM valves + curve = iacPwmCrank_curve, "IAC PWM Cranking Duty" + columnLabel = "Coolant Temperature", "Valve" + xAxis = -40, 215, 6 + yAxis = 0, 100, 4 + xBins = iacCrankBins, coolant + yBins = iacCrankDuty + + curve = iacStep_curve, "IAC Stepper Motor" + columnLabel = "Coolant Temperature", "Motor" + #if CELSIUS + xAxis = -40, 215, 6 + #else + xAxis = -40, 315, 6 + #endif + yAxis = 0, 850, 4 + xBins = iacBins, coolant + yBins = iacOLStepVal + + curve = iacStepCrank_curve, "IAC Stepper Motor Cranking" + columnLabel = "Coolant Temperature", "Motor" + xAxis = -40, 120, 6 + yAxis = 0, 850, 4 + xBins = iacCrankBins, coolant + yBins = iacCrankSteps + + curve = iacClosedLoop_curve, "IAC Closed Loop Targets" + columnLabel = "Coolant Temperature", "Motor" + xAxis = -40, 120, 6 + yAxis = 0, 2000, 4 + xBins = iacBins, coolant + yBins = iacCLValues + + curve = rotaryTrailing_curve, "Rotary Trailing Split" + columnLabel = "Engine load", "Split" + yAxis = 0, 40, 4 +#if SPEED_DENSITY + xBins = rotarySplitBins, map + xAxis = 0, 250, 5 +#else + xBins = rotarySplitBins, throttle + xAxis = 0, 100, 5 +#endif + yBins = rotarySplitValues + +; Warmup enrichment curve + curve = warmup_curve, "Warmup Enrichment (WUE) Curve" + columnLabel = "Coolant", "WUE %" + xAxis = -40, 210, 9 + yAxis = 0, 240, 6 + xBins = wueBins, coolant + yBins = wueRates + gauge = cltGauge + +; Cranking enrichment curve + curve = cranking_enrich_curve, "Cranking Enrichment Curve" + columnLabel = "Coolant", "Enrich %" + xAxis = -40, 110, 9 + yAxis = 0, 200, 6 + xBins = crankingEnrichBins, coolant + yBins = crankingEnrichValues + ;gauge = cltGau25 + +; Warmup enrichment VEAL AFR adjustment curve (Not currently working) + ;curve = warmup_afr_curve, "AFR Target Temperature Adustment" + ; columnLabel = "Coolant Temp", "AFR Offset %" + ; xAxis = -40, 210, 9 + ; yAxis = 0, 240, 6 + ; xBins = wueAFRBins, coolant + ; yBins = wueAFRRates + + +[TableEditor] + ; table_id, map3d_id, "title", page + table = veTable1Tbl, veTable1Map, "VE Table", 1 + topicHelp = "http://speeduino.com/wiki/index.php/Tuning" + ; constant, variable + xBins = rpmBins, rpm + #if SPEED_DENSITY + yBins = mapBins, map + #else + yBins = tpsBins, throttle + #endif + zBins = veTable + + gridHeight = 2.0 + gridOrient = 250, 0, 340 + upDownLabel = "(RICHER)", "(LEANER)" + + table = sparkTbl, sparkMap, "Ignition Advance Table", 3 + xBins = rpmBins2, rpm + #if SPEED_DENSITY + yBins = mapBins2, map + #else ALPHA_N + yBins = tpsBins2, throttle + #endif + zBins = advTable1 + gridHeight = 3.0 + upDownLabel = "ADVANCED", "RETARDED" + + ;table = afrTbl, afrTableMap, "AFR Table", 5 + table = afrTable1Tbl, afrTable1Map, "AFR Table", 5 + xBins = rpmBinsAFR, rpm + #if SPEED_DENSITY + yBins = mapBinsAFR, map + #else ALPHA_N + yBins = tpsBinsAFR, throttle + #endif + zBins = afrTable + gridHeight = 1.0 + upDownLabel = "RICHER", "LEANER" + gridOrient = 250, 0, 340 + + #if BOOSTPSI + table = boostTbl, boostMap, "Boost targets (PSI)", 8 + #else + table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 + #endif + xBins = rpmBinsBoost, rpm + yBins = tpsBinsBoost, throttle + zBins = boostTable + gridHeight = 3.0 + upDownLabel = "HIGHER", "LOWER" + + table = vvtTbl, vvtMap, "VVT control Table", 8 + xBins = rpmBinsVVT, rpm + yBins = tpsBinsVVT, throttle + zBins = vvtTable + gridHeight = 3.0 + upDownLabel = "HIGHER", "LOWER" + + table = stagingTbl, stagingMap, "Fuel Staging Table", 10 + xBins = rpmBinsStaging, rpm + #if SPEED_DENSITY + yBins = mapBinsStaging, map + #else ALPHA_N + yBins = tpsBinsStaging, throttle + #endif + zBins = stagingTable + gridHeight = 3.0 + upDownLabel = "HIGHER", "LOWER" + +;--------- Sequential fuel trim maps ----------- + table = fuelTrimTable1Tbl, fuelTrimTable1Map, "Fuel trim Table 1", 9 + topicHelp = "http://speeduino.com/wiki/index.php/Tuning" + xBins = fuelTrim1rpmBins, rpm + #if SPEED_DENSITY + yBins = fuelTrim1loadBins, map + #else + yBins = fuelTrim1loadBins, throttle + #endif + zBins = fuelTrim1Table + + gridHeight = 2.0 + gridOrient = 250, 0, 340 + upDownLabel = "(RICHER)", "(LEANER)" + + table = fuelTrimTable2Tbl, fuelTrimTable2Map, "Fuel trim Table 2", 9 + topicHelp = "http://speeduino.com/wiki/index.php/Tuning" + xBins = fuelTrim2rpmBins, rpm + #if SPEED_DENSITY + yBins = fuelTrim2loadBins, map + #else + yBins = fuelTrim2loadBins, throttle + #endif + zBins = fuelTrim2Table + + gridHeight = 2.0 + gridOrient = 250, 0, 340 + upDownLabel = "(RICHER)", "(LEANER)" + + table = fuelTrimTable3Tbl, fuelTrimTable3Map, "Fuel trim Table 3", 9 + topicHelp = "http://speeduino.com/wiki/index.php/Tuning" + xBins = fuelTrim3rpmBins, rpm + #if SPEED_DENSITY + yBins = fuelTrim3loadBins, map + #else + yBins = fuelTrim3loadBins, throttle + #endif + zBins = fuelTrim3Table + + gridHeight = 2.0 + gridOrient = 250, 0, 340 + upDownLabel = "(RICHER)", "(LEANER)" + + table = fuelTrimTable4Tbl, fuelTrimTable4Map, "Fuel trim Table 4", 9 + topicHelp = "http://speeduino.com/wiki/index.php/Tuning" + xBins = fuelTrim4rpmBins, rpm + #if SPEED_DENSITY + yBins = fuelTrim4loadBins, map + #else + yBins = fuelTrim4loadBins, throttle + #endif + zBins = fuelTrim4Table + + gridHeight = 2.0 + gridOrient = 250, 0, 340 + upDownLabel = "(RICHER)", "(LEANER)" + + +;------------------------------------------------------------------------------- + +[GaugeConfigurations] + + ;------------------------------------------------------------------------------- + ; 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. + + gaugeCategory = "Main" + ;Name Var Title Units Lo Hi LoD LoW HiW HiD vd ld + accelEnrichGauge = accelEnrich, "Accel Enrich", "%", 50, 150, -1, -1, 999, 999, 0, 0 + dutyCycleGauge = dutyCycle, "Duty Cycle", "%", 0, 100, -1, -1, 70, 80, 1, 1 + egoCorrGauge = egoCorrection, "EGO Correction", "%", 50, 150, 90, 99, 101, 110, 0, 0 + + gammaEnrichGauge = gammaEnrich, "Gamma Enrichment", "%", 50, 150, -1, -1, 151, 151, 0, 0 + pulseWidthGauge = pulseWidth, "Pulse Width", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 + tachometer = rpm, "Engine Speed", "RPM", 0, 8000, 300, 600, 3000, 5000, 0, 0 + veGauge = veCurr, "VE Current", "%", 0, 120, -1, -1, 999, 999, 0, 0 + warmupEnrichGauge = warmupEnrich, "Warmup Enrichment", "%", 100, 200, 130, 140, 140, 150, 0, 0 + advanceGauge = advance, "Spark Advance", "deg BTDC", 50, -10, 0, 0, 35, 45, 0, 0 + dwellGauge = dwell, "Ign Dwell", "mSec", 0, 35.0, 1.0, 1.2, 20, 25, 3, 3 + + gaugeCategory = "Sensor inputs" + mapGauge = map, "Engine MAP", "kPa", 0, 255, 0, 20, 200, 245, 0, 0 + mapGauge_psi = map_psi, "Engine MAP (PSI)", "PSI", -15, 100, 0, 20, 200, 245, 0, 0 + mapGauge_bar = map_bar, "Engine MAP (BAR)", "Bar", -1, 3, -1, -1, 5, 5, 2, 2 + mapGauge_vacBoost = map_vacboost, "Engine MAP (in-Hg/PSI)", "in-Hg/PSI", -30, 30, -30, -30, 30, 30, 1, 1 + batteryVoltage = batteryVoltage,"Battery Voltage", "volts", 0, 25, 8, 9, 15, 16, 2, 2 + + tpsADCGauge = tpsADC, "TPS ADC", "", 0, 255, -1, -1, 256, 256, 0, 0 + throttleGauge = throttle, "Throttle Position", "%TPS", 0, 100, -1, 1, 90, 100, 0, 0 + + afrGauge = afr, "Air:Fuel Ratio", "", 7, 25, 12, 13, 15, 16, 2, 2 + afrGauge2 = afr2, "Air:Fuel Ratio 2", "", 7, 25, 12, 13, 15, 16, 2, 2 + lambdaGauge = lambda, "Lambda", "", 0.5, 1.5, 0.5, 0.7, 2, 1.1, 2, 2 + + #if CELSIUS + cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, -15, 0, 95, 105, 0, 0 + iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, -15, 0, 95, 100, 0, 0 + #else + cltGauge = coolant, "Coolant Temp", "TEMP", -40, 215, 0, 30, 200, 220, 0, 0 + iatGauge = iat, "Inlet Air Temp", "TEMP", -40, 215, 0, 30, 200, 210, 0, 0 + #endif + flexGauge = flex, "Flex sensor", "%", 0, 100, -1, -1, 999, 999, 0, 0 + + #if CAN_COMMANDS + gaugeCategory = "CanBus Inputs" + CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge4 = canin_gauge4, "Can In4" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge5 = canin_gauge5, "Can In5" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + #endif + + gaugeCategory = "System Data" + clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 + loopGauge = loopsPerSecond,"Main loop speed", "Loops/S" , 0, 70000, -1, 500,1800, 4000, 0, 0 + memoryGauge = freeRAM, "Free memory", "bytes" , 0, 8000, -1, 1000,8000, 1000, 0, 0 +;------------------------------------------------------------------------------- + +[FrontPage] + + + ; Gauges are numbered left to right, top to bottom. + ; + ; 1 2 3 4 + ; 5 6 7 8 + + gauge1 = tachometer + gauge2 = throttleGauge + gauge3 = pulseWidthGauge + gauge4 = dutyCycleGauge + gauge5 = mapGauge + gauge6 = iatGauge + gauge7 = cltGauge + gauge8 = gammaEnrichGauge + + ;---------------------------------------------------------------------------- + ; Indicators + ; expr off-label on-label, off-bg, off-fg, on-bg, on-fg + indicator = { running }, "Not Running", "Running" white, black, green, black + indicator = { crank }, "Not Cranking", "Cranking", white, black, green, black + indicator = { ase }, "ASE OFF", "ASE ON", white, black, green, black + indicator = { warmup }, "WUE OFF", "WUE ON", white, black, green, black + indicator = { tpsaccaen }, "Accel", "Accel", white, black, green, black + indicator = { tpsaccden }, "Decel", "Decel", white, black, green, black + indicator = { mapaccaen }, "MAP Accel", "MAP Accel", white, black, green, black + indicator = { mapaccden }, "MAP Decel", "MAP Decel", white, black, green, black + indicator = { error }, "No Errors", "ERROR", white, black, green, black + indicator = { (tps > tpsflood) && (rpm < crankRPM) }, "FLOOD OFF", "FLOOD CLEAR", white, black, red, black + indicator = { DFCOOn }, "DFCO OFF", "DFCO On", white, black, red, black + indicator = { launchHard }, "Launch Hard", "Launch Hard", white, black, green, black + indicator = { launchSoft }, "Launch Soft", "Launch Soft", white, black, green, black + indicator = { softlimitOn }, "Soft Limit OFF","Soft Limiter", white, black, red, black + indicator = { hardLimitOn }, "Hard Limit OFF","Hard Limiter", white, black, red, black + indicator = { boostCutOut }, "Ign Cut OFF", "Ign Cut (Boost)", white, black, red, black + indicator = { sync }, "No Sync", "Sync", white, black, green, black + +;------------------------------------------------------------------------------- + +[OutputChannels] + ; The number of bytes MegaTune or TunerStudio should expect as a result + ; of sending the "A" command to Speeduino is determined + ; by the value of ochBlockSize, so be very careful when + ; you change it. + + ochGetCommand = "r\$tsCanId\x30%2o%2c" + ochBlockSize = 81 + + secl = scalar, U08, 0, "sec", 1.000, 0.000 + status1 = scalar, U08, 1, "bits", 1.000, 0.000 + inj1Status = bits, U08, 1, [0:0] + inj2Status = bits, U08, 1, [1:1] + inj3Status = bits, U08, 1, [2:2] + inj4Status = bits, U08, 1, [3:3] + DFCOOn = bits, U08, 1, [4:4] + boostCutFuel = bits, U08, 1, [5:5] + toothLog1Ready = bits, U08, 1, [6:6] + toothLog2Ready = bits, U08, 1, [7:7] + engine = scalar, U08, 2, "bits", 1.000, 0.000 + running = bits, U08, 2, [0:0] + crank = bits, U08, 2, [1:1] + ase = bits, U08, 2, [2:2] + warmup = bits, U08, 2, [3:3] + tpsaccaen = bits, U08, 2, [4:4] + tpsaccden = bits, U08, 2, [5:5] + mapaccaen = bits, U08, 2, [6:6] + mapaccden = bits, U08, 2, [7:7] + dwell = scalar, U08, 3, "ms", 0.100, 0.000 + map = scalar, U16, 4, "kpa", 1.000, 0.000 + iatRaw = scalar, U08, 6, "°C", 1.000, 0.000 + coolantRaw = scalar, U08, 7, "°C", 1.000, 0.000 + batCorrection = scalar, U08, 8, "%", 1.000, 0.000 + batteryVoltage = scalar, U08, 9, "V", 0.100, 0.000 + afr = scalar, U08, 10, "O2", 0.100, 0.000 + egoCorrection = scalar, U08, 11, "%", 1.000, 0.000 + airCorrection = scalar, U08, 12, "%", 1.000, 0.000 + warmupEnrich = scalar, U08, 13, "%", 1.000, 0.000 + rpm = scalar, U16, 14, "rpm", 1.000, 0.000 + accelEnrich = scalar, U08, 16, "%", 2.000, 0.000 + gammaEnrich = scalar, U08, 17, "%", 1.000, 0.000 + veCurr = scalar, U08, 18, "%", 1.000, 0.000 + afrTarget = scalar, U08, 19, "O2", 0.100, 0.000 + pulseWidth = scalar, U16, 20, "ms", 0.001, 0.000 + TPSdot = scalar, U08, 22, "%/s", 10.00, 0.000 + advance = scalar, S08, 23, "deg", 1.000, 0.000 + tps = scalar, U08, 24, "%", 1.000, 0.000 + loopsPerSecond = scalar, U16, 25, "loops", 1.000, 0.000 + freeRAM = scalar, U16, 27, "bytes", 1.000, 0.000 + boostTarget = scalar, U08, 29, "kPa", 2.000, 0.000 + boostDuty = scalar, U08, 30, "%", 1.000, 0.000 + status2 = scalar, U08, 31, "bits", 1.000, 0.000 + launchHard = bits, U08, 31, [0:0] + launchSoft = bits, U08, 31, [1:1] + hardLimitOn = bits, U08, 31, [2:2] + softlimitOn = bits, U08, 31, [3:3] + boostCutSpark = bits, U08, 31, [4:4] + error = bits, U08, 31, [5:5] + idle = bits, U08, 31, [6:6] + sync = bits, U08, 31, [7:7] + rpmDOT = scalar, S16, 32, "rpm/s", 1.000, 0.000 + flex = scalar, U08, 34, "%", 1.000, 0.000 + flexFuelCor = scalar, U08, 35, "%", 1.000, 0.000 + flexIgnCor = scalar, U08, 36, "deg", 1.000, 0.000 + + idleLoad = scalar, U08, 37, { bitStringValue( idleUnits , iacAlgorithm ) }, 2.000, 0.000 ; This is a combined variable covering both PWM and stepper IACs. The units used depend on which idle algorithm is chosen + testoutputs = scalar, U08, 38, "bits", 1.000, 0.000 + testenabled = bits, U08, 38, [0:0] + testactive = bits, U08, 38, [1:1] + afr2 = scalar, U08, 39, "O2", 0.100, 0.000 + baro = scalar, U08, 40, "kpa", 1.000, 0.000 + canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 + canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 + canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 + canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 + canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 + canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 + canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 + canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 + canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 + canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 + canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 + canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 + canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 + canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 + canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 + canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 + tpsADC = scalar, U08, 73, "ADC",1.000, 0.000 + errors = scalar, U08, 74, "bits", 1.000, 0.000 + errorNum = bits, U08, 74, [0:1] + currentError = bits, U08, 74, [2:7] + pulseWidth2 = scalar, U16, 75, "ms", 0.001, 0.000 + pulseWidth3 = scalar, U16, 77, "ms", 0.001, 0.000 + pulseWidth4 = scalar, U16, 79, "ms", 0.001, 0.000 + +#if CELSIUS + coolant = { coolantRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives + iat = { iatRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives +#else + coolant = { (coolantRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) + iat = { (iatRaw - 40) * 1.8 + 32 } ;Convert C to F (Offset by 40) +#endif + time = { timeNow } + seconds = { secl } + + throttle = { tps }, "%" + + cycleTime = { rpm ? ( 60000.0 / rpm ) : 0 } + cycleMultiplier = { injLayout == 3 ? 2 : 1 } + dutyCycle = { rpm ? ( 100.0*pulseWidth/(cycleTime * cycleMultiplier) ) : 0 } + + boostCutOut = { boostCutFuel || boostCutSpark } + lambda = { afr / stoich } + MAPxRPM = { rpm * map } + + ;Manifold pressure in weirdo units + map_bar = { (map - baro) / 101.33 } + map_psi = { (map - baro) * 0.145038 } + map_inhg = { (baro - map) * 0.2953007 } ;in-Hg + map_vacboost = { map < baro ? -map_inhg : map_psi } + +;------------------------------------------------------------------------------- + +[Datalog] + ; Full datalog. + ; + ; Default user-defined log emulates the full datalog. + ; + ; The entries are saved in the datalog file in the order in + ; which they appear in the list below. + ; + ; Channel - Case sensitive name of output channel to be logged. + ; Label - String written to header line of log. Be careful + ; about changing these, as programs like MSLVV and + ; MSTweak key off specific column names. + ; Type - Data type of output, converted before writing. + ; Format - C-style output format of data. + ; + ; Channel Label Type Format + ; -------------- ---------- ----- ------ + entry = time, "Time", float, "%.3f" + entry = secl, "SecL", int, "%d" + entry = rpm, "RPM", int, "%d" + entry = map, "MAP", int, "%d" + entry = MAPxRPM, "MAPxRPM", int, "%d" + entry = tps, "TPS", int, "%d" + entry = afr, "O2", float, "%.3f" + entry = lambda, "Lambda", float, "%.3f" + entry = iat, "IAT", int, "%d" + entry = coolant, "CLT", int, "%d" + entry = engine, "Engine", int, "%d" + entry = DFCOOn, "DFCO", int, "%d" + entry = egoCorrection, "Gego", int, "%d" + entry = airCorrection, "Gair", int, "%d" + entry = batCorrection, "Gbattery", int, "%d" + entry = warmupEnrich, "Gwarm", int, "%d" + ;entry = baroCorrection, "Gbaro", int, "%d" + entry = gammaEnrich, "Gammae", int, "%d" + entry = accelEnrich, "Accel Enrich",int, "%d" + entry = veCurr, "VE", int, "%d" + entry = pulseWidth, "PW", float, "%.1f" + entry = afrTarget, "AFR Target", float, "%.3f" + entry = pulseWidth, "PW2", float, "%.1f" + entry = dutyCycle, "DutyCycle1", float, "%.1f" + entry = dutyCycle, "DutyCycle2", float, "%.1f" + entry = TPSdot, "TPS DOT", int, "%d" + entry = advance, "Advance", int, "%d" + entry = dwell, "Dwell", float, "%.1f" + entry = batteryVoltage, "Battery V", float, "%.1f" + entry = rpmDOT, "rpm/s", int, "%d" + entry = flex, "Eth %", int, "%d", { flexEnabled } + entry = errorNum, "Error #", int, "%d" + entry = currentError, "Error ID", int, "%d" + entry = map_psi, "Boost PSI", float, "%.1f" + entry = boostTarget, "Boost Target",int, "%d", { boostEnabled } + entry = boostDuty, "Boost Duty", int, "%d", { boostEnabled } + entry = boostCutOut , "Boost cut", int, "%d" + entry = launchHard , "Launch Hard", int, "%d" + entry = hardLimitOn , "Hard Limiter",int, "%d" + entry = idleLoad, "IAC value", int, "%d" + entry = baro, "Baro Pressure",int, "%d" + +#if CAN_COMMANDS + entry = canin_gauge0, "CanIn CH0", int, "%d" + entry = canin_gauge1, "CanIn CH1", int, "%d" + entry = canin_gauge2, "CanIn CH2", int, "%d" + entry = canin_gauge3, "CanIn CH3", int, "%d" + entry = canin_gauge4, "CanIn CH4", int, "%d" + entry = canin_gauge5, "CanIn CH5", int, "%d" + entry = canin_gauge6, "CanIn CH6", int, "%d" + entry = canin_gauge7, "CanIn CH7", int, "%d" +#endif + + +[LoggerDefinition] + ; valid logger types: composite, tooth, trigger, csv + + ;loggerDef = uniqueName, Display Name, type + loggerDef = tooth, "Tooth Logger", tooth + ;dataReadCommand = "r\\x00\\xf4\\x00\\x00\\x04\\x00" ; standard TS command format + dataReadCommand = "T" ; Basic TS command format + dataReadTimeout = 15000 ; time in ms + dataReadyCondition = { toothLog1Ready } + dataLength = 256 ; in bytes, including headers, footers and data (not used) + + ;recordDef = headerLen. footerLen, recordLen + recordDef = 0, 0, 2; in bytes, the recordLen is for each record, currently limited to 4 bytes + + ;recordField = Name, HeaderName, startBit, bitCount, scale, units, updateCondition + recordField = toothGap, "ToothTime", 0, 16, 1.0, "uS" + + +[Tools] + ;addTool = toolName, PanelName + addTool = veTableGenerator, "VE Table Generator", veTable1Tbl + addTool = afrTableGenerator, "AFR Table Generator", afrTable1Tbl + + +[VeAnalyze] + ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition + veAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection + lambdaTargetTables = afrTable1Tbl, afrTSCustom, + filter = std_xAxisMin ; Auto build with appropriate axis channels + ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true + filter = std_xAxisMax ; Auto build with appropriate axis channels + filter = std_yAxisMin ; Auto build with appropriate axis channels + filter = std_yAxisMax ; Auto build with appropriate axis channels + filter = std_DeadLambda ; Auto build + +#if CELSIUS + filter = minCltFilter, "Minimum CLT", coolant, < , 71, , true +#else + filter = minCltFilter, "Minimum CLT", coolant, < , 160, , true +#endif + filter = accelFilter, "Accel Flag" , engine, & , 16, , false + filter = aseFilter, "ASE Flag" , engine, & , 4, , false + filter = overrunFilter, "Overrun" , pulseWidth, = , 0, , false + filter = std_Custom ; Standard Custom Expression Filter. + +;------------- WUE VEAL not currently working ---------------- +;[WueAnalyze] + ; tableName, lambdaTargetTableName, lambdaChannel, egoCorrectionChannel, activeCondition + ; wueAnalyzeMap = veTable1Tbl, afrTable1Tbl, afr, egoCorrection +; wueAnalyzeMap = afrTable1Tbl, warmup_afr_curve, warmup_curve, afr, coolant, warmupEnrich ;warmup_afr_curve, +; lambdaTargetTables = afrTable1Tbl, afrTSCustom, + ;filter = std_xAxisMin ; Auto build with appropriate axis channels + ;filter = minRPMFilter, "Minimum RPM", rpm, < , 500, , true + ;filter = std_xAxisMax ; Auto build with appropriate axis channels + ;filter = std_yAxisMin ; Auto build with appropriate axis channels + ;filter = std_yAxisMax ; Auto build with appropriate axis channels + ;filter = std_DeadLambda ; Auto build + +; filter = maxTPSFilter, "High Throttle", tps, < , 15, , true +;------------- WUE VEAL not currently working ---------------- diff --git a/reference/wiki/accessories/boost_settings.png b/reference/wiki/accessories/boost_settings.PNG similarity index 100% rename from reference/wiki/accessories/boost_settings.png rename to reference/wiki/accessories/boost_settings.PNG diff --git a/speeduino/comms.ino b/speeduino/comms.ino index 37f257fd..5247c772 100644 --- a/speeduino/comms.ino +++ b/speeduino/comms.ino @@ -1479,4 +1479,4 @@ void commandButtons() default: break; } -} +} diff --git a/speeduino/globals.h b/speeduino/globals.h index de7c5eed..4a0c1b4f 100644 --- a/speeduino/globals.h +++ b/speeduino/globals.h @@ -728,4 +728,4 @@ extern byte iatCalibrationTable[CALIBRATION_TABLE_SIZE]; extern byte o2CalibrationTable[CALIBRATION_TABLE_SIZE]; -#endif // GLOBALS_H +#endif // GLOBALS_H diff --git a/speeduino/speeduino.ino b/speeduino/speeduino.ino index 2421334f..0e55001a 100644 --- a/speeduino/speeduino.ino +++ b/speeduino/speeduino.ino @@ -1600,4 +1600,4 @@ static inline unsigned int PW(int REQ_FUEL, byte VE, long MAP, int corrections, } } return (unsigned int)(intermediate); -} +} diff --git a/speeduino/timers.ino b/speeduino/timers.ino index 5d84ad9e..009902c4 100644 --- a/speeduino/timers.ino +++ b/speeduino/timers.ino @@ -222,4 +222,4 @@ void oneMSInterval() //Most ARM chips can simply call a function TCNT2 = 131; //Preload timer2 with 100 cycles, leaving 156 till overflow. TIFR2 = 0x00; //Timer2 INT Flag Reg: Clear Timer Overflow Flag #endif -} +}