PJSC(Pump Jet Solenoid Controller)はArduinoを使用したバイク用燃料噴射コントローラです。このプロジェクトは、オープンソースECUプロジェクト『Speeduino』をベースにしています。
Marge Speeduino Jun.2018 code.
| @@ -6,7 +6,7 @@ | ||
| 6 | 6 | MTversion = 2.25 |
| 7 | 7 | |
| 8 | 8 | queryCommand = "Q" |
| 9 | - signature = "speeduino - PJSC v1.0" | |
| 9 | + signature = "speeduino - PJSC v1.0" ;[PJSC] | |
| 10 | 10 | versionInfo = "S" ;This info is what is displayed to user |
| 11 | 11 | |
| 12 | 12 | [TunerStudio] |
| @@ -47,9 +47,22 @@ | ||
| 47 | 47 | |
| 48 | 48 | idleUnits = bits, U08, [0:2], "None", "On/Off", "Duty Cycle", "Duty Cycle", "Steps", "Steps" |
| 49 | 49 | |
| 50 | - algorithmNames = bits, U08, [0:2], "Speed Density", "Alpha-N", "IMAP/EMAP", "ITB", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 50 | + | |
| 51 | + #define loadSourceNames = "MAP", "TPS", "IMAP/EMAP", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 52 | + #define loadSourceUnits = "kPa", "% TPS", "%", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 53 | + algorithmNames = bits, U08, [0:2], $loadSourceNames | |
| 54 | + ;algorithmUnits = bits, U08, [0:2], $loadSourceUnits | |
| 51 | 55 | algorithmUnits = bits, U08, [0:2], "kPa", "% TPS", "%", "% TPS", "INVALID", "INVALID", "INVALID", "INVALID" |
| 56 | + algorithmLimits= array, U16, [8], "", 1.0, 0, 0, 511, 0, noMsqSave | |
| 57 | + #define all_IO_Pins = "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" | |
| 58 | + #define IO_Pins_no_def = "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", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" | |
| 52 | 59 | |
| 60 | + boostTableLabels = bits, U08, [0:1], "Duty Cycle %", "kPa" | |
| 61 | + | |
| 62 | + fuelLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 | |
| 63 | + ignLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 | |
| 64 | + | |
| 65 | + | |
| 53 | 66 | [Constants] |
| 54 | 67 | |
| 55 | 68 | ;---------------------------------------------------------------------------- |
| @@ -101,60 +114,60 @@ | ||
| 101 | 114 | ; |
| 102 | 115 | ;---------------------------------------------------------------------------- |
| 103 | 116 | |
| 104 | - endianness = little | |
| 105 | -;[PJSC] nPages = 10 | |
| 106 | -;[PJSC] pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192 | |
| 107 | - nPages = 11 ;[PJSC] | |
| 108 | - pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192, 288 ;[PJSC] | |
| 117 | + endianness = little | |
| 118 | +;[PJSC] nPages = 10 | |
| 119 | +;[PJSC] pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192 | |
| 120 | + nPages = 11 ;[PJSC] | |
| 121 | + pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192, 288 ;[PJSC] | |
| 109 | 122 | |
| 110 | - ;burnCommand = "B" | |
| 111 | - ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" | |
| 112 | - ;pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" | |
| 113 | - ;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" | |
| 123 | + ;burnCommand = "B" | |
| 124 | + ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" | |
| 125 | + ;pageReadCommand = "V", "V", "V", "V", "V", "V", "V", "V", "V", "V", "V" | |
| 126 | + ;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" | |
| 114 | 127 | |
| 115 | - ; New commands | |
| 116 | - ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 128, 192 | |
| 117 | -;[PJSC] pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A" | |
| 118 | -;[PJSC] burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" | |
| 119 | -;[PJSC] 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" | |
| 120 | -;[PJSC] 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" | |
| 121 | -;[PJSC] 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" | |
| 128 | + ; New commands | |
| 129 | + ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 128, 192 | |
| 130 | +;[PJSC] pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A" | |
| 131 | +;[PJSC] burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" | |
| 132 | +;[PJSC] 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" | |
| 133 | +;[PJSC] 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" | |
| 134 | +;[PJSC] 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" | |
| 122 | 135 | |
| 123 | - ;[PJSC] New commands for PJSC | |
| 124 | - pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A", "\$tsCanId\x0B" | |
| 125 | - burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" | |
| 126 | - 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", "p%2i%2o%2c%v" ;[PJSC] | |
| 127 | - 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", "w%2i%2o%2c%v" ;[PJSC] | |
| 128 | - 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", "w%2i%2o%2c%v" ;[PJSC] | |
| 136 | + ;[PJSC] New commands for PJSC | |
| 137 | + pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A", "\$tsCanId\x0B" | |
| 138 | + burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" | |
| 139 | + 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", "p%2i%2o%2c%v" ;[PJSC] | |
| 140 | + 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", "w%2i%2o%2c%v" ;[PJSC] | |
| 141 | + 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", "w%2i%2o%2c%v" ;[PJSC] | |
| 129 | 142 | |
| 130 | 143 | ;[PJSC] blockingFactor = 2048 |
| 131 | 144 | ;[PJSC] tableBlockingFactor = 2048 |
| 132 | - blockingFactor = 2238 ;[PJSC] | |
| 133 | - tableBlockingFactor = 2238 ;[PJSC] | |
| 134 | - delayAfterPortOpen=1000 | |
| 135 | - ;validateArrayBounds = true | |
| 145 | + blockingFactor = 2238 ;[PJSC] | |
| 146 | + tableBlockingFactor = 2238 ;[PJSC] | |
| 147 | + delayAfterPortOpen=1000 | |
| 148 | + ;validateArrayBounds = true | |
| 136 | 149 | ;[PJSC] blockReadTimeout = 2000 |
| 137 | - blockReadTimeout = 3000 ;[PJSC] | |
| 138 | - ;tsWriteBlocks = on | |
| 139 | - interWriteDelay = 5 ;Ignored when tsWriteBlocks is on | |
| 140 | - pageActivationDelay = 10 | |
| 150 | + blockReadTimeout = 3000 ;[PJSC] | |
| 151 | + ;tsWriteBlocks = on | |
| 152 | + interWriteDelay = 5 ;Ignored when tsWriteBlocks is on | |
| 153 | + pageActivationDelay = 10 | |
| 141 | 154 | |
| 142 | 155 | ;New for TS 3.0.08ish upwards, define lists of standard I/O options |
| 143 | 156 | |
| 144 | - #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 145 | - #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 157 | + #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 158 | + #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" | |
| 146 | 159 | |
| 147 | - #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" | |
| 148 | - #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" | |
| 149 | - #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" | |
| 150 | - #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" | |
| 151 | - #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" | |
| 152 | - #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" | |
| 153 | - #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" | |
| 154 | - #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" | |
| 155 | - #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" | |
| 156 | - #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" | |
| 157 | - #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 | |
| 160 | + #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" | |
| 161 | + #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" | |
| 162 | + #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" | |
| 163 | + #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" | |
| 164 | + #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" | |
| 165 | + #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" | |
| 166 | + #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" | |
| 167 | + #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" | |
| 168 | + #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" | |
| 169 | + #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" | |
| 170 | + #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 | |
| 158 | 171 | |
| 159 | 172 | ;Page 1 is the fuel map and axis bins only |
| 160 | 173 | page = 1 |
| @@ -163,24 +176,21 @@ | ||
| 163 | 176 | ; name = scalar, type, offset, units, scale, translate, lo, hi, digits |
| 164 | 177 | veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 |
| 165 | 178 | rpmBins = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 |
| 166 | - #if SPEED_DENSITY | |
| 167 | - ;mapBins = array, U08, 272, [ 16], "kPa", 1.0, 0.0, 0.0, 255.0, 0 | |
| 168 | - mapBins = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 | |
| 169 | - #elif ALPHA_N | |
| 170 | - tpsBins = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 | |
| 171 | - #endif | |
| 179 | + fuelLoadBins = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , algorithm) }, 2.0, 0.0, 0.0, {fuelLoadMax}, 0 | |
| 180 | + ;fuelLoadBins = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , algorithm) }, 2.0, 0.0, 0.0, { arrayValue(rpmBins , algorithm) }, 0 | |
| 172 | 181 | |
| 173 | 182 | |
| 183 | + | |
| 174 | 184 | ;-------------------------------------------------- |
| 175 | 185 | ;Start Page 2 |
| 176 | 186 | ;Page 2 is all general settings (Previously part of page 1) |
| 177 | 187 | ;-------------------------------------------------- |
| 178 | 188 | page = 2 |
| 179 | - unused2-1 = scalar, S08, 0, "kPa", 1.0, 0.0, -127, 127, 0 | |
| 189 | + unused2-1 = scalar, S08, 0, "kPa", 1.0, 0.0, -127, 127, 0 | |
| 180 | 190 | unused2-2 = scalar, U08, 1, "kPa", 1.0, 0.0, 0.0, 255, 0 |
| 181 | 191 | asePct = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0 |
| 182 | 192 | aseCount = scalar, U08, 3, "s", 1.0, 0.0, 0.0, 255, 0 |
| 183 | - wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 | |
| 193 | + wueRates = array, U08, 4, [10], "%", 1.0, 0.0, 0.0, 255, 0 | |
| 184 | 194 | crankingPct = scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0 |
| 185 | 195 | ;[PJSC] 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", "dvjcodec Teensy RevA", "dvjcodec Teensy RevB", "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" |
| 186 | 196 | 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", "dvjcodec Teensy RevA", "dvjcodec Teensy RevB", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "PJSC v1.0", "PJSC v0.2", "PJSC v0.3", "PJSC v0.4", "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" ;[PJSC] Boad ID: PJSC boad ver1.0/0.2/0.3 (2018/20/19) |
| @@ -209,7 +219,7 @@ | ||
| 209 | 219 | multiplyMAP = bits, U08, 26, [1:1], "No", "Yes" |
| 210 | 220 | includeAFR = bits, U08, 26, [2:2], "No", "Yes" |
| 211 | 221 | hardCutType = bits, U08, 26, [3:3], "Full", "Rolling" |
| 212 | - ignAlgorithm = bits, U08, 26, [4:6], "Speed Density", "Alpha-N", "IMAP/EMAP", "ITB", "INVALID", "INVALID", "INVALID", "INVALID" ;Must match the Algorithm Names PC Variable | |
| 222 | + ignAlgorithm = bits, U08, 26, [4:6], $loadSourceNames | |
| 213 | 223 | indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled" |
| 214 | 224 | injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1 |
| 215 | 225 | inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0 |
| @@ -224,14 +234,14 @@ | ||
| 224 | 234 | nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 225 | 235 | |
| 226 | 236 | ; Config2 |
| 227 | - fuelAlgorithm = bits, U08, 37, [0:2], "Speed Density", "Alpha-N", "IMAP/EMAP", "ITB", "INVALID", "INVALID", "INVALID", "INVALID" ;Must match the Algorithm Names PC Variable | |
| 228 | - unused2-37d = bits, U08, 37, [2:3], "INVALID", "None", "None", "None" | |
| 237 | + algorithm = bits, U08, 37, [0:2], $loadSourceNames ;Has to be called algorithm for the req fuel calculator to work :( | |
| 238 | + fixAngEnable = bits, U08, 37, [3:3], "Off", "On" | |
| 229 | 239 | nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 230 | 240 | |
| 231 | 241 | ; Config3 |
| 232 | 242 | engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire" |
| 233 | 243 | flexEnabled = bits, U08, 38, [1:1], "Off", "On" |
| 234 | - algorithm = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" | |
| 244 | + unused2_38c = bits, U08, 38, [2:2], "Speed Density", "Alpha-N" | |
| 235 | 245 | baroCorr = bits, U08, 38, [3:3], "Off", "On" |
| 236 | 246 | injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential" |
| 237 | 247 | perToothIgn = bits, U08, 38, [6:6], "No", "Yes" |
| @@ -253,10 +263,12 @@ | ||
| 253 | 263 | oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) |
| 254 | 264 | oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte) |
| 255 | 265 | |
| 256 | - unused2-57 = scalar, U08, 57, "%", 1.0, 0.0, 0.0, 250.0, 0 | |
| 257 | - unused2-58 = scalar, U08, 58, "%", 1.0, 0.0, 0.0, 250.0, 0 | |
| 258 | - unused2-59 = scalar, U08, 59, "Deg", 1.0, 0.0, 0.0, 250.0, 0 | |
| 259 | - unused2-60 = scalar, U08, 60, "Deg", 1.0, 0.0, 0.0, 250.0, 0 | |
| 266 | + idleUpPin = bits, U08, 57, [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", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" | |
| 267 | + idleUpPolarity= bits, U08, 57, [6:6], "Normal", "Inverted" | |
| 268 | + idleUpEnabled = bits, U08, 57, [7:7], "Off", "On" | |
| 269 | + idleUpAdder = scalar, U08, 58, "% / Steps" 1.0, 0.0, 0.0, 250.0, 0 | |
| 270 | + taeTaperMin = scalar, U08, 59, "RPM", 100, 0.0, 1000, 10000, 0 | |
| 271 | + taeTaperMax = scalar, U08, 60, "RPM", 100, 0.0, 2000, 10000, 0 | |
| 260 | 272 | |
| 261 | 273 | iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle |
| 262 | 274 | iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0 |
| @@ -322,13 +334,8 @@ | ||
| 322 | 334 | page = 3 |
| 323 | 335 | advTable1 = array, U08, 0,[16x16], "deg", 1.0, -40, -40, 215.0, 0 |
| 324 | 336 | rpmBins2 = array, U08, 256,[ 16], "RPM", 100.0, 0.0, 100, 25500, 0 |
| 337 | + ignLoadBins= array, U08, 272, [ 16], { bitStringValue(algorithmUnits , ignAlgorithm) }, 2.0, 0.0, 0.0, {ignLoadMax}, 0 | |
| 325 | 338 | |
| 326 | - #if SPEED_DENSITY | |
| 327 | - mapBins2 = array, U08, 272, [ 16], "kPa", 2.0, 0.0, 0.0, 511.0, 0 | |
| 328 | - #elif ALPHA_N | |
| 329 | - tpsBins2 = array, U08, 272, [ 16], "TPS", 2.0, 0.0, 0.0, 100.0, 0 | |
| 330 | - #endif | |
| 331 | - | |
| 332 | 339 | ;-------------------------------------------------- |
| 333 | 340 | ;Start Page 4 |
| 334 | 341 | ;These are primarily ignition related settings (Previously part of page 2) |
| @@ -362,7 +369,7 @@ | ||
| 362 | 369 | ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits |
| 363 | 370 | ; name = scalar, type, offset, units, scale, translate, lo, hi, digits |
| 364 | 371 | ;Dwell control |
| 365 | - unused4-12a = bits, U08, 12, [0:0], "INVALID", "NOTHING" | |
| 372 | + boostType = bits, U08, 12, [0:0], "Open Loop", "Closed Loop" | |
| 366 | 373 | useDwellLim = bits, U08, 12, [1:1], "Off", "On" |
| 367 | 374 | sparkMode = bits, U08, 12, [2:4], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential", "Rotary", "INVALID", "INVALID", "INVALID" |
| 368 | 375 | TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive" |
| @@ -406,9 +413,9 @@ | ||
| 406 | 413 | dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0 |
| 407 | 414 | dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0 |
| 408 | 415 | ;Cranking ignition bypass |
| 409 | - ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" | |
| 410 | - 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" | |
| 411 | - ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" | |
| 416 | + ignBypassEnable = bits, U08, 63, [0:0], "Off", "On" | |
| 417 | + 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" | |
| 418 | + ignBypassHiLo = bits, U08, 63, [7:7], "LOW", "HIGH" | |
| 412 | 419 | |
| 413 | 420 | unused4-64 = array, U08, 64, [63], "%", 1.0, 0.0, 0.0, 255, 0 |
| 414 | 421 | ;-------------------------------------------------- |
| @@ -477,8 +484,8 @@ | ||
| 477 | 484 | |
| 478 | 485 | ; Launch Control |
| 479 | 486 | 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" |
| 480 | - launchEnable= bits, U08, 48, [6:6], "No", "Yes" | |
| 481 | - launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" | |
| 487 | + launchEnable= bits, U08, 48, [6:6], "No", "Yes" | |
| 488 | + launchHiLo = bits, U08, 48, [7:7], "LOW", "HIGH" | |
| 482 | 489 | |
| 483 | 490 | lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0 |
| 484 | 491 | lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0 |
| @@ -561,7 +568,7 @@ | ||
| 561 | 568 | ; #if BOOSTPSI |
| 562 | 569 | ; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0 |
| 563 | 570 | ; #else |
| 564 | - boostTable = array, U08, 0,[8x8], "kPa", 2.0, 0.0, 0, 511, 0 | |
| 571 | + boostTable = array, U08, 0,[8x8], { bitStringValue( boostTableLabels, boostType ) }, 2.0, 0.0, 0, boostTableLimit, 0 | |
| 565 | 572 | ; #endif |
| 566 | 573 | rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0 |
| 567 | 574 | tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0 |
| @@ -798,8 +805,38 @@ | ||
| 798 | 805 | flexAdvBins = array, U08, 63, [6], "%", 1.0, 0.0, 0.0, 250.0, 0 |
| 799 | 806 | flexAdvAdj = array, U08, 69, [6], "Deg", 1.0, 0.0, 0.0, 250.0, 0 |
| 800 | 807 | |
| 801 | - unused11_75_191 = array, U08, 75,[116],"RPM", 100.0, 0.0, 100, 25500, 0 | |
| 808 | + n2o_enable = bits , U08, 75, [0:1], "Off","1 Stage","2 stage", "INVALID" | |
| 809 | + n2o_arming_pin = bits , U08, 75, [2:7], $IO_Pins_no_def | |
| 810 | +#if CELSIUS | |
| 811 | + n2o_minCLT = scalar, U08, 76, "C", 1.0, -40, -40, 215, 0 | |
| 812 | +#else | |
| 813 | + n2o_minCLT = scalar, U08, 76, "F", 1.8, -22.23, -40, 215, 0 | |
| 814 | +#endif | |
| 815 | + n2o_maxMAP = scalar, U08, 77, "kPa", 2.0, 0.0, 0.0, 511.0, 0 | |
| 816 | + n2o_minTPS = scalar, U08, 78, "%TPS", 1.0, 0.0, 0.0, 100, 0 | |
| 817 | + n2o_maxAFR = scalar, U08, 79, "kPa", 0.1, 0.0, 0.0, 25.5, 1 | |
| 818 | + | |
| 802 | 819 | |
| 820 | + n2o_stage1_pin = bits , U08, 80, [0:5], $IO_Pins_no_def | |
| 821 | + n2o_pin_polarity = bits , U08, 80, [6:6], "HIGH", "LOW" | |
| 822 | + n2o_unused = bits , U08, 80, [7:7], "INVALID", "INVALID" | |
| 823 | + n2o_stage1_minRPM = scalar, U08, 81, "RPM", 100, 0.0, 1000, 10000, 0 | |
| 824 | + n2o_stage1_maxRPM = scalar, U08, 82, "RPM", 100, 0.0, 1000, 10000, 0 | |
| 825 | + n2o_stage1_adderMin = scalar, U08, 83, "ms", 0.1, 0, 0, 25.5, 1 | |
| 826 | + n2o_stage1_adderMax = scalar, U08, 84, "ms", 0.1, 0, 0, 25.5, 1 | |
| 827 | + n2o_stage1_retard = scalar, U08, 85, "Deg", 1.0, 0.0, 0.0, 250.0, 0 | |
| 828 | + | |
| 829 | + n2o_stage2_pin = bits , U08, 86, [0:5], $IO_Pins_no_def | |
| 830 | + n2o_stage2_unused = bits , U08, 86, [6:7], "INVALID", "INVALID", "INVALID", "INVALID" | |
| 831 | + n2o_stage2_minRPM = scalar, U08, 87, "RPM", 100, 0.0, 1000, 10000, 0 | |
| 832 | + n2o_stage2_maxRPM = scalar, U08, 88, "RPM", 100, 0.0, 1000, 10000, 0 | |
| 833 | + n2o_stage2_adderMin = scalar, U08, 89, "ms", 0.1, 0, 0, 32, 1 | |
| 834 | + n2o_stage2_adderMax = scalar, U08, 90, "ms", 0.1, 0, 0, 32, 1 | |
| 835 | + n2o_stage2_retard = scalar, U08, 91, "Deg", 1.0, 0.0, 0.0, 250.0, 0 | |
| 836 | + | |
| 837 | + | |
| 838 | + unused11_75_191 = array, U08, 92,[99],"RPM", 100.0, 0.0, 100, 25500, 0 | |
| 839 | + | |
| 803 | 840 | ;-------------------------------------------------- |
| 804 | 841 | ;Page 12 is the fuel map and axis bins only [PJSC] |
| 805 | 842 | ;-------------------------------------------------- |
| @@ -819,7 +856,6 @@ | ||
| 819 | 856 | ;#exit |
| 820 | 857 | #endif |
| 821 | 858 | |
| 822 | - | |
| 823 | 859 | ;------------------------------------------------------------------------------- |
| 824 | 860 | |
| 825 | 861 | [ConstantsExtensions] |
| @@ -829,7 +865,7 @@ | ||
| 829 | 865 | requiresPowerCycle = reqFuel |
| 830 | 866 | requiresPowerCycle = numTeeth |
| 831 | 867 | requiresPowerCycle = missingTeeth |
| 832 | - requiresPowerCycle = trigPatternSec | |
| 868 | + requiresPowerCycle = trigPatternSec | |
| 833 | 869 | requiresPowerCycle = injOpen |
| 834 | 870 | requiresPowerCycle = IgInv |
| 835 | 871 | requiresPowerCycle = fanInv |
| @@ -858,6 +894,9 @@ | ||
| 858 | 894 | requiresPowerCycle = stagingEnabled |
| 859 | 895 | requiresPowerCycle = resetControl |
| 860 | 896 | requiresPowerCycle = resetControlPin |
| 897 | + requiresPowerCycle = n2o_enable | |
| 898 | + requiresPowerCycle = n2o_arming_pin | |
| 899 | + requiresPowerCycle = n2o_pin_polarity | |
| 861 | 900 | requiresPowerCycle = pjscFreq ;[PJSC] |
| 862 | 901 | requiresPowerCycle = squirtDeviceType ; | |
| 863 | 902 | requiresPowerCycle = multiVEmapEnabled ; | |
| @@ -871,7 +910,7 @@ | ||
| 871 | 910 | defaultValue = pinLayout, 1 |
| 872 | 911 | defaultValue = TrigPattern, 0 |
| 873 | 912 | defaultValue = useResync, 1 |
| 874 | - defaultValue = trigPatternSec, 0 | |
| 913 | + defaultValue = trigPatternSec, 0 | |
| 875 | 914 | defaultValue = sparkMode, 0 |
| 876 | 915 | defaultValue = indInjAng, 0 |
| 877 | 916 | defaultValue = inj1Ang, 355 |
| @@ -908,14 +947,18 @@ | ||
| 908 | 947 | defaultValue = boostSens, 2000 |
| 909 | 948 | defaultValue = boostIntv, 30 |
| 910 | 949 | defaultValue = sparkDur, 1.0 |
| 911 | - defaultValue = speeduino_tsCanId, 0 | |
| 912 | - defaultValue = true_address, 256 | |
| 913 | - defaultValue = realtime_base_address, 336 | |
| 950 | + defaultValue = fixAngEnable,0 | |
| 951 | + defaultValue = n2o_enable, 0 | |
| 952 | + defaultValue = speeduino_tsCanId, 0 | |
| 953 | + defaultValue = true_address, 256 | |
| 954 | + defaultValue = realtime_base_address, 336 | |
| 914 | 955 | defaultValue = VVTasOnOff, 0 |
| 915 | 956 | defaultValue = stagingEnabled, 0 |
| 916 | - defaultValue = lnchCtrlTPS, 0 | |
| 957 | + defaultValue = lnchCtrlTPS, 0 | |
| 917 | 958 | defaultValue = resetControl, 0 |
| 918 | 959 | defaultValue = bootloaderCaps, 0 |
| 960 | + defaultValue = taeTaperMin, 1000 | |
| 961 | + defaultValue = taeTaperMax, 5000 | |
| 919 | 962 | ; defaultValue = obd_address, 0 |
| 920 | 963 | |
| 921 | 964 | defaultValue = multiVEmapEnabled, 0 ;[PJSC] |
| @@ -966,8 +1009,20 @@ | ||
| 966 | 1009 | defaultValue = perToothIgn, 0 |
| 967 | 1010 | defaultValue = resetControlPin, 0 |
| 968 | 1011 | |
| 1012 | + ;These are the limits for each of the load algorithms (Refer to the PC Variables section) | |
| 1013 | + ;Order is: MAP TPS IMAP/EMAP ITB UNUSED UNUSED UNUSED UNUSED | |
| 1014 | + defaultValue = algorithmLimits, 511 100 511 511 100 100 100 100 | |
| 1015 | +#if SPEED_DENSITY | |
| 1016 | + defaultValue = fuelLoadMax, 511 | |
| 1017 | + defaultValue = ignLoadMax, 511 | |
| 1018 | +#else | |
| 1019 | + defaultValue = fuelLoadMax, 511 | |
| 1020 | + defaultValue = ignLoadMax, 511 | |
| 1021 | +#endif | |
| 1022 | + | |
| 969 | 1023 | controllerPriority = bootloaderCaps |
| 970 | 1024 | |
| 1025 | + | |
| 971 | 1026 | [Menu] |
| 972 | 1027 | |
| 973 | 1028 | ;---------------------------------------------------------------------------- |
| @@ -997,35 +1052,36 @@ | ||
| 997 | 1052 | menuDialog = main |
| 998 | 1053 | |
| 999 | 1054 | menu = "Settings" |
| 1000 | - subMenu = engine_constants, "Engine Constants" | |
| 1001 | - subMenu = injChars, "Injector Characteristics" | |
| 1002 | - subMenu = triggerSettings, "Trigger Setup" | |
| 1003 | - ;subMenu = OLED, "OLED Setup" | |
| 1004 | - subMenu = airdensity_curve, "IAT Density" | |
| 1005 | - subMenu = reset_control, "Reset Control" | |
| 1055 | + subMenu = engine_constants, "Engine Constants" | |
| 1056 | + subMenu = injChars, "Injector Characteristics" | |
| 1057 | + subMenu = triggerSettings, "Trigger Setup" | |
| 1058 | + ;subMenu = OLED, "OLED Setup" | |
| 1059 | + subMenu = airdensity_curve, "IAT Density" | |
| 1060 | + subMenu = reset_control, "Reset Control" | |
| 1006 | 1061 | |
| 1062 | + | |
| 1007 | 1063 | menu = "&Tuning" |
| 1008 | - subMenu = std_realtime, "Realtime Display" | |
| 1009 | - subMenu = accelEnrichments, "Acceleration Enrichment" | |
| 1010 | - subMenu = egoControl, "AFR/O2", 3 | |
| 1011 | - subMenu = RevLimiterS, "Limiters", 2 | |
| 1012 | -;[PJSC] subMenu = flexFueling, "Flex Fuel", 2 | |
| 1013 | -;[PJSC] subMenu = veTableDialog, "VE Table", 0 | |
| 1064 | + subMenu = std_realtime, "Realtime Display" | |
| 1065 | + subMenu = accelEnrichments, "Acceleration Enrichment" | |
| 1066 | + subMenu = egoControl, "AFR/O2", 3 | |
| 1067 | + subMenu = RevLimiterS, "Limiters", 2 | |
| 1068 | +;[PJSC] subMenu = flexFueling, "Flex Fuel", 2 | |
| 1069 | +;[PJSC] subMenu = veTableDialog, "VE Table", 0 | |
| 1070 | +;[PJSC] subMenu = sparkTbl, "Spark Table", 2 | |
| 1014 | 1071 | subMenu = veMapSelectDialog, "VE Table select" ;[PJSC] |
| 1015 | 1072 | subMenu = veTable1Dialog, "&VE Table 1", 0 ; V |
| 1016 | 1073 | subMenu = veTable2Dialog, "&VE Table 2", 0, { multiVEmapEnabled == 1 } ;[PJSC] |
| 1017 | -;[PJSC] subMenu = sparkTbl, "Spark Table", 2 | |
| 1018 | - subMenu = afrTable1Tbl, "AFR Table", 5 | |
| 1074 | + subMenu = afrTable1Tbl, "AFR Table", 5 | |
| 1019 | 1075 | subMenu = std_separator |
| 1020 | - subMenu = inj_trimad, "Sequential fuel trim", 9 | |
| 1021 | - subMenu = stagingTableDialog, "Staged Injection", 10, { nCylinders <= 4 } ; Can't do staging on more than 4 cylinder engines | |
| 1076 | + subMenu = inj_trimad, "Sequential fuel trim", 9 | |
| 1077 | + subMenu = stagingTableDialog, "Staged Injection", 10, { nCylinders <= 4 } ; Can't do staging on more than 4 cylinder engines | |
| 1022 | 1078 | |
| 1023 | 1079 | ;[PJSC] menu = "&Spark" |
| 1024 | -;[PJSC] subMenu = sparkSettings, "Spark Settings" | |
| 1025 | -;[PJSC] subMenu = sparkTbl, "Spark Table", 2 | |
| 1026 | -;[PJSC] subMenu = dwellSettings, "Dwell settings" | |
| 1080 | +;[PJSC] subMenu = sparkSettings, "Spark Settings" | |
| 1081 | +;[PJSC] subMenu = sparkTbl, "Spark Table", 2 | |
| 1082 | +;[PJSC] subMenu = dwellSettings, "Dwell settings" | |
| 1027 | 1083 | ;[PJSC] subMenu = dwell_correction_curve, "Dwell Compensation" |
| 1028 | -;[PJSC] subMenu = iat_retard_curve, "&IAT Retard" | |
| 1084 | +;[PJSC] subMenu = iat_retard_curve, "&IAT Retard" | |
| 1029 | 1085 | ;[PJSC] subMenu = rotary_ignition, "Rotary Ignition", { sparkMode == 4 } |
| 1030 | 1086 | |
| 1031 | 1087 | menu = "&Starting/Idle" |
| @@ -1038,6 +1094,8 @@ | ||
| 1038 | 1094 | ;[PJSC v1.10] subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 } |
| 1039 | 1095 | ;[PJSC v1.10] subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 } |
| 1040 | 1096 | ;[PJSC v1.10] subMenu = iacStepCrank_curve, "Idle - Stepper Motor Cranking", 7, { iacAlgorithm == 4 } |
| 1097 | +;[PJSC v1.10] subMenu = std_separator | |
| 1098 | +;[PJSC v1.10] subMenu = idleUpSettings, "Idle Up Settings", { iacAlgorithm == 2 || iacAlgorithm == 3 || iacAlgorithm == 4 || iacAlgorithm == 5 } | |
| 1041 | 1099 | subMenu = idleSettings, "Idle Control", { muxout1selection == 1 || muxout2selection == 1 } ;[PJSC v1.10] For MUX selection |
| 1042 | 1100 | subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { (iacAlgorithm == 3 || iacAlgorithm == 5) && (muxout1selection == 1 || muxout2selection == 1) } ; | |
| 1043 | 1101 | subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 && (muxout1selection == 1 || muxout2selection == 1) } ; V |
| @@ -1044,14 +1102,13 @@ | ||
| 1044 | 1102 | subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 && (muxout1selection == 1 || muxout2selection == 1) } ;[PJSC v1.10] For MUX selection |
| 1045 | 1103 | |
| 1046 | 1104 | menu = "&Accessories" |
| 1047 | - subMenu = muxoutSetting, "MUX Output Port Setting" ;[PJSC v1.10] | |
| 1048 | - subMenu = std_separator ;[PJSC v1.10] | |
| 1049 | 1105 | ;[PJSC v1.10] subMenu = fanSettings, "Thermo Fan" |
| 1050 | 1106 | ;[PJSC v1.10] subMenu = LaunchControl, "Launch Control / Flat Shift" |
| 1051 | 1107 | ;[PJSC v1.10] subMenu = fuelpump, "Fuel Pump" |
| 1108 | +;[PJSC v1.10] subMenu = NitrousControl, "Nitrous" | |
| 1052 | 1109 | ;[PJSC v1.10] subMenu = std_separator |
| 1053 | 1110 | ;[PJSC v1.10] subMenu = boostSettings, "Boost Control" |
| 1054 | -;[PJSC v1.10] subMenu = boostTbl, "Boost target", 8, { boostEnabled } | |
| 1111 | +;[PJSC v1.10] subMenu = boostLoad, "Boost Targets/Load", 8, { boostEnabled } | |
| 1055 | 1112 | ;[PJSC v1.10] subMenu = std_separator |
| 1056 | 1113 | ;[PJSC v1.10] subMenu = vvtSettings, "VVT Control" |
| 1057 | 1114 | ;[PJSC v1.10] subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled } |
| @@ -1071,9 +1128,6 @@ | ||
| 1071 | 1128 | |
| 1072 | 1129 | subMenu = std_separator ;[PJSC] |
| 1073 | 1130 | subMenu = inputPortSetting, "Input Port Setting" ; | |
| 1074 | -; subMenu = captExValveSetting, "Capture Exhaust Valve Position Control", { exValveCaptureEnabled == 1 } ; | | |
| 1075 | -; subMenu = captSparkSetting, "Capture External Spark Control", { exTrigModeSelect == 1 } ; V | |
| 1076 | -; subMenu = captDutyPulseSetting, "Capture Duty Pulse Control", { dutyPulseCaptureEnabled == 1 || dutyPulseCaptureEnabled2 == 1 } ;[PJSC] | |
| 1077 | 1131 | |
| 1078 | 1132 | subMenu = std_separator |
| 1079 | 1133 |
| @@ -1096,9 +1150,9 @@ | ||
| 1096 | 1150 | menuDialog = main |
| 1097 | 1151 | menu = "3D &Tuning Maps" |
| 1098 | 1152 | ;[PJSC] subMenu = veTable1Map, "Fuel Table" |
| 1099 | - subMenu = veTable1Map, "Fuel Table 1" | |
| 1100 | - subMenu = veTable2Map, "Fuel Table 2" | |
| 1101 | 1153 | ;[PJSC] subMenu = sparkMap, "Spark Table", 3 |
| 1154 | + subMenu = veTable1Map, "Fuel Table 1" ;[PJSC] | |
| 1155 | + subMenu = veTable2Map, "Fuel Table 2" ;[PJSC] | |
| 1102 | 1156 | subMenu = afrTable1Map, "AFR Target Table" |
| 1103 | 1157 | |
| 1104 | 1158 | #if enablehardware_test |
| @@ -1107,7 +1161,7 @@ | ||
| 1107 | 1161 | ;[PJSC v1.10] subMenu = outputtest1, "Test Output Hardware" |
| 1108 | 1162 | subMenu = outputtest1, "Output Test Mode - PWM" ;[PJSC v1.10] |
| 1109 | 1163 | subMenu = outputtest2, "Output Test Mode - Pulse" ;[PJSC v1.10] |
| 1110 | -##endif | |
| 1164 | +#endif | |
| 1111 | 1165 | |
| 1112 | 1166 | menu = "Help" |
| 1113 | 1167 | subMenu = helpGeneral, "Speeduino Help" |
| @@ -1116,24 +1170,24 @@ | ||
| 1116 | 1170 | [SettingContextHelp] |
| 1117 | 1171 | ; constantName = "Help Text" |
| 1118 | 1172 | ; These provide the context help in the dialog when these variables are used |
| 1119 | - nCylinders = "Cylinder count" | |
| 1120 | - 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." | |
| 1121 | - 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." | |
| 1122 | - twoStroke = "Four-Stroke (most engines), Two-stroke." | |
| 1123 | - nInjectors = "Number of primary injectors." | |
| 1124 | - 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" | |
| 1125 | - stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" | |
| 1126 | - 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. " | |
| 1173 | + nCylinders = "Cylinder count" | |
| 1174 | + 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." | |
| 1175 | + 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." | |
| 1176 | + twoStroke = "Four-Stroke (most engines), Two-stroke." | |
| 1177 | + nInjectors = "Number of primary injectors." | |
| 1178 | + 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" | |
| 1179 | + stoich = "The stoichiometric ration of the fuel being used. For flex fuel, choose the primary fuel" | |
| 1180 | + 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. " | |
| 1127 | 1181 | |
| 1128 | - TrigPattern = "The type of input trigger decoder to be used." | |
| 1182 | + TrigPattern = "The type of input trigger decoder to be used." | |
| 1129 | 1183 | 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." |
| 1130 | 1184 | trigPatternSec = "Cam mode/type also known as Secondary Trigger Pattern." |
| 1131 | - numTeeth = "Number of teeth on Primary Wheel." | |
| 1132 | - TrigSpeed = "Primary trigger speed." | |
| 1133 | - missingTeeth= "Number of Missing teeth on Primary Wheel." | |
| 1134 | - TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor." | |
| 1135 | - 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 * <multiplier>) / tooth_count = Whole number" | |
| 1136 | - SkipCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." | |
| 1185 | + numTeeth = "Number of teeth on Primary Wheel." | |
| 1186 | + TrigSpeed = "Primary trigger speed." | |
| 1187 | + missingTeeth= "Number of Missing teeth on Primary Wheel." | |
| 1188 | + TrigAng = "The Angle ATDC when tooth No:1 on the primary wheel passes the primary sensor. The range of this field is -360 to +360 degrees." | |
| 1189 | + 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 * <multiplier>) / tooth_count = Whole number" | |
| 1190 | + SkipCycles = "The number of revolutions that will be skipped during cranking before the injectors and coils are fired." | |
| 1137 | 1191 | TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing." |
| 1138 | 1192 | TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing." |
| 1139 | 1193 | 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" |
| @@ -1140,8 +1194,12 @@ | ||
| 1140 | 1194 | |
| 1141 | 1195 | 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" |
| 1142 | 1196 | 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!)" |
| 1143 | - sparkDur = "The duration of the spark at full dwell. Typically around 1ms" | |
| 1197 | + sparkDur = "The duration of the spark at full dwell. Typically around 1ms" | |
| 1198 | + fixAngEnable= "If enabled, timing will be locked/fixed and the ignition map will be ignored" | |
| 1199 | + FixAng = "Timing will be locked at this value if the above is enabled" | |
| 1144 | 1200 | |
| 1201 | + crankRPM = "The cranking RPM threshold. When RPM is lower than this value (and above 0) the system will be considered to be cranking" | |
| 1202 | + | |
| 1145 | 1203 | fanInv = "" |
| 1146 | 1204 | fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5" |
| 1147 | 1205 |
| @@ -1156,6 +1214,7 @@ | ||
| 1156 | 1214 | 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" |
| 1157 | 1215 | 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" |
| 1158 | 1216 | iacFastTemp = "Below this temperature, the idle output will be high (On). Above this temperature, it will turn off." |
| 1217 | + idleUpPolarity = "Normal polarity is a ground switch where an earthed signal activates the Idle Up. The internal pullup will be enabled with Normal polarity. \n Inverted may be used if a 5v signal is used to enable the Idle Up." | |
| 1159 | 1218 | |
| 1160 | 1219 | oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1" |
| 1161 | 1220 | oddfire3 = "The ATDC angle of channel 3 for oddfire engines. This is relative to the TDC angle of channel 1 (NOT channel 2)" |
| @@ -1166,6 +1225,8 @@ | ||
| 1166 | 1225 | 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" |
| 1167 | 1226 | |
| 1168 | 1227 | 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" |
| 1228 | + launchHiLo = "Whether the signal is High or Low when the clutch pedal is engaged. For a ground switching input (Most clutch switches), this should be LOW" | |
| 1229 | + lnchPullRes = "Whether the internal pullup resistor is enabled or left floating. For a ground switching input (Most clutch switches), select Pullup. For a 0v-5v input, select Floating" | |
| 1169 | 1230 | 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" |
| 1170 | 1231 | 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." |
| 1171 | 1232 | ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved." |
| @@ -1181,6 +1242,9 @@ | ||
| 1181 | 1242 | flexAdvAdj = "Additional advance (in degrees) for the current ethanol % (Typically 0 @ 0%, 10-20 @ 100%)" |
| 1182 | 1243 | flexBoostAdj = "Adjustment, in kPa, to the boost target for the current ethanol %. Negative values are allowed to lower boost at lower ethanol % if necessary." |
| 1183 | 1244 | |
| 1245 | + n2o_arming_pin = "Pin that the nitrous arming/enagement switch is on." | |
| 1246 | + n2o_pin_polarity = "Whether Nitrous is active (Armed) when the pin is LOW or HIGH. If LOW is selected, the internal pullup will be used." | |
| 1247 | + | |
| 1184 | 1248 | 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" |
| 1185 | 1249 | 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" |
| 1186 | 1250 | flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window" |
| @@ -1271,11 +1335,11 @@ | ||
| 1271 | 1335 | cmdtestspk350dc = "this will cycle the output at 50% Duty cycle" |
| 1272 | 1336 | cmdtestspk450dc = "this will cycle the output at 50% Duty cycle" |
| 1273 | 1337 | |
| 1274 | - boostIntv = "The closed loop control interval will run every this many ms. Generally values between 50% and 100% of the valve frequency work best" | |
| 1275 | - 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" | |
| 1338 | + boostIntv = "The closed loop control interval will run every this many ms. Generally values between 50% and 100% of the valve frequency work best" | |
| 1339 | + 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" | |
| 1276 | 1340 | |
| 1277 | - 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" | |
| 1278 | - 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" | |
| 1341 | + 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" | |
| 1342 | + 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" | |
| 1279 | 1343 | #if resetcontrol_adv |
| 1280 | 1344 | resetControl = "How to control the Arduino's automatic reset feature. NOTE: Some of these settings require modifying your hardware and replacing the Arduino bootloader. See the Wiki for more details.\n\nDisabled: Allow the Arduino to reset when a new serial connection is made.\n\nPrevent When Running: Hold the control pin high while the engine is running.\n\nPrevent Always: Always hold the control pin high.\n\nSerial Command: Normally hold the control pin high, but pull it low when the 'U' serial command is issued and reset upon receiving more data." |
| 1281 | 1345 | #else |
| @@ -1421,13 +1485,15 @@ | ||
| 1421 | 1485 | field = "Output speed", tachoDiv |
| 1422 | 1486 | |
| 1423 | 1487 | dialog = accelEnrichments_center, "" |
| 1424 | - field = "TPSdot Threshold", tpsThresh | |
| 1425 | - field = "Accel Time", taeTime | |
| 1488 | + field = "TPSdot Threshold", tpsThresh | |
| 1489 | + field = "Accel Time", taeTime | |
| 1490 | + field = "Taper Start RPM", taeTaperMin | |
| 1491 | + field = "Taper End RPM", taeTaperMax | |
| 1426 | 1492 | |
| 1427 | 1493 | dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)" |
| 1428 | 1494 | field = "Enabled", dfcoEnabled |
| 1429 | 1495 | field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled } |
| 1430 | - field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } | |
| 1496 | + field = "Cutoff RPM", dfcoRPM, { dfcoEnabled } | |
| 1431 | 1497 | field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled } |
| 1432 | 1498 | |
| 1433 | 1499 | dialog = accelEnrichments_north_south, "" |
| @@ -1482,18 +1548,18 @@ | ||
| 1482 | 1548 | panel = veTable1Dialog_north, North ;[PJSC] |
| 1483 | 1549 | panel = veTable1Dialog_south, South ;[PJSC] |
| 1484 | 1550 | |
| 1485 | - dialog = veTable2Dialog_north, "" | |
| 1486 | - panel = veTable2Tbl | |
| 1551 | + dialog = veTable2Dialog_north, "" ;[PJSC] | |
| 1552 | + panel = veTable2Tbl ; | | |
| 1553 | + ; | | |
| 1554 | + dialog = veTable2Dialog_south, "" ; | | |
| 1555 | + field = "Multiply VE value by MAP", multiplyMAP ; | | |
| 1556 | + field = "Include AFR directly", includeAFR, { egoType == 2 } ; | | |
| 1557 | + ; | | |
| 1558 | + dialog = veTable2Dialog, "VE Table 2" ; | | |
| 1559 | + panel = veTable2Dialog_north, North ; V | |
| 1560 | + panel = veTable2Dialog_south, South ;[PJSC] | |
| 1487 | 1561 | |
| 1488 | - dialog = veTable2Dialog_south, "" | |
| 1489 | - field = "Multiply VE value by MAP", multiplyMAP | |
| 1490 | - field = "Include AFR directly", includeAFR, { egoType == 2 } | |
| 1491 | 1562 | |
| 1492 | - dialog = veTable2Dialog, "VE Table 2" | |
| 1493 | - panel = veTable2Dialog_north, North | |
| 1494 | - panel = veTable2Dialog_south, South | |
| 1495 | - | |
| 1496 | - | |
| 1497 | 1563 | dialog = injChars, "Injector Characteristics" |
| 1498 | 1564 | field = "Squirt Device", squirtDeviceType ;[PJSC] |
| 1499 | 1565 | field = "PJSC solenoid freq.", pjscFreq, { squirtDeviceType == 1 } ;[PJSC] |
| @@ -1520,19 +1586,19 @@ | ||
| 1520 | 1586 | dialog = egoControl, "" |
| 1521 | 1587 | topicHelp = "http://speeduino.com/wiki/index.php/AFR/O2" |
| 1522 | 1588 | field = "Sensor Type", egoType |
| 1523 | - field = "Algorithm", egoAlgorithm, { egoType } | |
| 1524 | - field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } | |
| 1525 | - field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } | |
| 1526 | - field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } | |
| 1527 | - field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } | |
| 1589 | + field = "Algorithm", egoAlgorithm, { egoType } | |
| 1590 | + field = "Ignition Events per Step", egoCount, { egoType && (egoAlgorithm < 3) } | |
| 1591 | + field = "Controller Auth +/-", egoLimit, { egoType && (egoAlgorithm < 3) } | |
| 1592 | + field = "Only correct above:", ego_min, { egoType && (egoAlgorithm < 3) } | |
| 1593 | + field = "and correct below:", ego_max, { egoType && (egoAlgorithm < 3) } | |
| 1528 | 1594 | |
| 1529 | - field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } | |
| 1530 | - field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } | |
| 1531 | - field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } | |
| 1532 | - field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } | |
| 1533 | - field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } | |
| 1534 | - field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } | |
| 1535 | - field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } | |
| 1595 | + field = "Active Above Coolant", egoTemp, { egoType && (egoAlgorithm < 3) } | |
| 1596 | + field = "Active Above RPM", egoRPM, { egoType && (egoAlgorithm < 3) } | |
| 1597 | + field = "Active Below TPS", egoTPSMax, { egoType && (egoAlgorithm < 3) } | |
| 1598 | + field = "EGO delay after start", ego_sdelay, { (egoAlgorithm < 3) } | |
| 1599 | + field = "PID Proportional Gain", egoKP, { egoType && (egoAlgorithm == 2) } | |
| 1600 | + field = "PID Integral", egoKI, { egoType && (egoAlgorithm == 2) } | |
| 1601 | + field = "PID Derivative", egoKD, { egoType && (egoAlgorithm == 2) } | |
| 1536 | 1602 | |
| 1537 | 1603 | dialog = fanSettings,"Fan Settings",7 |
| 1538 | 1604 | field = "Fan Mode", fanEnable |
| @@ -1559,8 +1625,8 @@ | ||
| 1559 | 1625 | field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 } |
| 1560 | 1626 | |
| 1561 | 1627 | dialog = idleSettings, "Idle Settings" |
| 1562 | - topicHelp = "http://speeduino.com/wiki/index.php/Idle" | |
| 1563 | - field = "Idle control type", iacAlgorithm | |
| 1628 | + topicHelp = "http://speeduino.com/wiki/index.php/Idle" | |
| 1629 | + field = "Idle control type", iacAlgorithm | |
| 1564 | 1630 | field = "#Fast Idle" |
| 1565 | 1631 | field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 } |
| 1566 | 1632 | panel = pwm_idle |
| @@ -1567,6 +1633,11 @@ | ||
| 1567 | 1633 | ;[PJSC] panel = stepper_idle |
| 1568 | 1634 | panel = closedloop_idle |
| 1569 | 1635 | |
| 1636 | + dialog = idleUpSettings, "Idle Up Settings" | |
| 1637 | + field = "Idle Up Enabled", idleUpEnabled | |
| 1638 | + field = "Idle Up Pin", idleUpPin, { idleUpEnabled } | |
| 1639 | + field = "Idle Up Polarity", idleUpPolarity, { idleUpEnabled } | |
| 1640 | + | |
| 1570 | 1641 | dialog = fuelpump, "Fuel pump" |
| 1571 | 1642 | field = "Fuel pump pin", fuelPumpPin |
| 1572 | 1643 | field = "Fuel pump prime duration", fpPrime |
| @@ -1607,7 +1678,6 @@ | ||
| 1607 | 1678 | field = "Primary base teeth", numTeeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 } |
| 1608 | 1679 | field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 } |
| 1609 | 1680 | field = "Missing teeth", missingTeeth, { TrigPattern == 0 } |
| 1610 | - field = "Secondary teeth", missingTeeth, { TrigPattern == 2 } | |
| 1611 | 1681 | field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 } |
| 1612 | 1682 | field = "Trigger Angle ", TrigAng |
| 1613 | 1683 | field = "This number represents the angle ATDC when " |
| @@ -1616,9 +1686,9 @@ | ||
| 1616 | 1686 | field = "Skip Revolutions", SkipCycles |
| 1617 | 1687 | field = "Note: This is the number of revolutions that will be skipped during" |
| 1618 | 1688 | field = "cranking before the injectors and coils are fired" |
| 1619 | - field = "Trigger edge", TrigEdge | |
| 1620 | - field = "Secondary trigger edge", TrigEdgeSec, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 9 || TrigPattern == 12 } ;Missing tooth, dual wheel and Miata 9905 | |
| 1621 | - field = "Missing Tooth Secondary type" trigPatternSec, { TrigPattern == 0 } | |
| 1689 | + field = "Trigger edge", TrigEdge { TrigPattern != 4 } ;4G63 uses both edges | |
| 1690 | + field = "Secondary trigger edge", TrigEdgeSec, { (TrigPattern == 0 && TrigSpeed == 0) || TrigPattern == 2 || TrigPattern == 9 || TrigPattern == 12 } ;Missing tooth, dual wheel and Miata 9905 | |
| 1691 | + field = "Missing Tooth Secondary type" trigPatternSec, { (TrigPattern == 0&& TrigSpeed == 0) } | |
| 1622 | 1692 | field = "Trigger Filter", TrigFilter |
| 1623 | 1693 | 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 |
| 1624 | 1694 | ;[PJSC v1.10] field = "" |
| @@ -1657,6 +1727,12 @@ | ||
| 1657 | 1727 | field = "Boost Cut", boostCutType |
| 1658 | 1728 | field = "Boost Limit", boostLimit, { boostCutType } |
| 1659 | 1729 | |
| 1730 | + dialog = boostLoad, "" | |
| 1731 | + field = "Mode", boostType | |
| 1732 | + field = "In open loop mode, the values in this table are duty cycle %" | |
| 1733 | + field = "In closed loop mode, the values are boost targets in kPa" | |
| 1734 | + panel = boostTbl | |
| 1735 | + | |
| 1660 | 1736 | dialog = RevLimiterS, "Rev Limiter", 4 |
| 1661 | 1737 | topicHelp = "http://speeduino.com/wiki/index.php/Rev_Limits" |
| 1662 | 1738 | field = "Rev Limiter" |
| @@ -1691,7 +1767,37 @@ | ||
| 1691 | 1767 | field = "Soft rev window", flatSSoftWin, { flatSEnable } |
| 1692 | 1768 | field = "Soft limit absolute timing", flatSRetard, { flatSEnable } |
| 1693 | 1769 | |
| 1770 | + dialog = NitrousStage1, "Stage 1" | |
| 1771 | + field = "Nitrous Output Pin", n2o_stage1_pin | |
| 1772 | + field = "Minimum Engage RPM", n2o_stage1_minRPM | |
| 1773 | + field = "Maximum Engage RPM", n2o_stage1_maxRPM | |
| 1774 | + field = "Fuel adder @ Min RPM", n2o_stage1_adderMin | |
| 1775 | + field = "Fuel adder @ Max RPM", n2o_stage1_adderMax | |
| 1776 | + field = "Ignition retard when active", n2o_stage1_retard | |
| 1694 | 1777 | |
| 1778 | + dialog = NitrousStage2, "Stage 2" | |
| 1779 | + field = "Nitrous Output Pin", n2o_stage2_pin | |
| 1780 | + field = "Minimum Engage RPM", n2o_stage2_minRPM | |
| 1781 | + field = "Maximum Engage RPM", n2o_stage2_maxRPM | |
| 1782 | + field = "Fuel adder @ Min RPM", n2o_stage2_adderMin | |
| 1783 | + field = "Fuel adder @ Max RPM", n2o_stage2_adderMax | |
| 1784 | + field = "Ignition retard when active", n2o_stage2_retard | |
| 1785 | + | |
| 1786 | + dialog = NitrousMain, "Settings" | |
| 1787 | + field = "Nitrous Mode", n2o_enable | |
| 1788 | + field = "Arming Pin", n2o_arming_pin, { n2o_enable > 0 } | |
| 1789 | + field = "Nitrous is armed when pin is", n2o_pin_polarity,{ n2o_enable > 0 } | |
| 1790 | + field = "Minimum CLT", n2o_minCLT, { n2o_enable > 0 } | |
| 1791 | + field = "Minimum TPS", n2o_minTPS, { n2o_enable > 0 } | |
| 1792 | + field = "Maximum MAP", n2o_maxMAP, { n2o_enable > 0 } | |
| 1793 | + field = "Leanest AFR", n2o_maxAFR, { n2o_enable > 0 } | |
| 1794 | + | |
| 1795 | + dialog = NitrousControl, "Nitrous" | |
| 1796 | + panel = NitrousMain, North | |
| 1797 | + panel = NitrousStage1, West, { n2o_enable > 0 } | |
| 1798 | + panel = NitrousStage2, East, { n2o_enable > 1 } | |
| 1799 | + | |
| 1800 | + | |
| 1695 | 1801 | dialog = OLED, "OLED Display", 2 |
| 1696 | 1802 | field = "Display Type", display |
| 1697 | 1803 | field = "#Note" |
| @@ -1761,19 +1867,20 @@ | ||
| 1761 | 1867 | dialog = boostSettings, "Boost Control" |
| 1762 | 1868 | topicHelp = "http://speeduino.com/wiki/index.php/Boost_Control" |
| 1763 | 1869 | field = "Boost Control Enabled", boostEnabled |
| 1870 | + field = "Boost control type", boostType | |
| 1764 | 1871 | field = "Boost output pin", boostPin, { boostEnabled } |
| 1765 | 1872 | field = "Boost solenoid freq.", boostFreq, { boostEnabled } |
| 1766 | 1873 | |
| 1767 | - field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled } | |
| 1768 | - field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled } | |
| 1874 | + field = "Valve minimum duty cycle", boostMinDuty, { boostEnabled && boostType == 1 } | |
| 1875 | + field = "Valve maximum duty cycle", boostMaxDuty, { boostEnabled && boostType == 1 } | |
| 1769 | 1876 | panel = boostCut |
| 1770 | 1877 | field = "Closed Loop settings" |
| 1771 | - field = "Control mode", boostMode, { boostEnabled } | |
| 1772 | - slider = "Sensitivity", boostSens, horizontal, { boostEnabled } | |
| 1773 | - field = "Control interval", boostIntv, { boostEnabled } | |
| 1774 | - field = "P", boostKP, { boostEnabled && boostMode } | |
| 1775 | - field = "I", boostKI, { boostEnabled && boostMode} | |
| 1776 | - field = "D", boostKD, { boostEnabled && boostMode} | |
| 1878 | + field = "Control mode", boostMode, { boostEnabled && boostType == 1 } | |
| 1879 | + slider = "Sensitivity", boostSens, horizontal, { boostEnabled && boostType == 1 } | |
| 1880 | + field = "Control interval", boostIntv, { boostEnabled && boostType == 1 } | |
| 1881 | + field = "P", boostKP, { boostEnabled && boostMode && boostType == 1 } | |
| 1882 | + field = "I", boostKI, { boostEnabled && boostMode && boostType == 1 } | |
| 1883 | + field = "D", boostKD, { boostEnabled && boostMode && boostType == 1 } | |
| 1777 | 1884 | |
| 1778 | 1885 | |
| 1779 | 1886 | dialog = vvtSettings, "VVT Control" |
| @@ -2229,7 +2336,6 @@ | ||
| 2229 | 2336 | cmdtestinjstart = "E\x02\x13" ;[PJSC v1.10] |
| 2230 | 2337 | cmdtestinjstop = "E\x02\x14" ;[PJSC v1.10] |
| 2231 | 2338 | |
| 2232 | - | |
| 2233 | 2339 | cmdtestspk1on = "E\x03\x01" |
| 2234 | 2340 | cmdtestspk1off = "E\x03\x02" |
| 2235 | 2341 | cmdtestspk150dc = "E\x03\x03" |
| @@ -2406,11 +2512,8 @@ | ||
| 2406 | 2512 | topicHelp = "http://speeduino.com/wiki/index.php/Tuning" |
| 2407 | 2513 | ; constant, variable |
| 2408 | 2514 | xBins = rpmBins, rpm |
| 2409 | - #if SPEED_DENSITY | |
| 2410 | - yBins = mapBins, map | |
| 2411 | - #else | |
| 2412 | - yBins = tpsBins, throttle | |
| 2413 | - #endif | |
| 2515 | + yBins = fuelLoadBins, fuelLoad | |
| 2516 | + xyLabels = "RPM", "Fuel Load: " | |
| 2414 | 2517 | zBins = veTable |
| 2415 | 2518 | |
| 2416 | 2519 | gridHeight = 2.0 |
| @@ -2419,11 +2522,8 @@ | ||
| 2419 | 2522 | |
| 2420 | 2523 | table = sparkTbl, sparkMap, "Ignition Advance Table", 3 |
| 2421 | 2524 | xBins = rpmBins2, rpm |
| 2422 | - #if SPEED_DENSITY | |
| 2423 | - yBins = mapBins2, map | |
| 2424 | - #else ALPHA_N | |
| 2425 | - yBins = tpsBins2, throttle | |
| 2426 | - #endif | |
| 2525 | + yBins = ignLoadBins, ignLoad | |
| 2526 | + xyLabels = "RPM", "Ignition Load: " | |
| 2427 | 2527 | zBins = advTable1 |
| 2428 | 2528 | gridHeight = 3.0 |
| 2429 | 2529 | upDownLabel = "ADVANCED", "RETARDED" |
| @@ -2441,11 +2541,12 @@ | ||
| 2441 | 2541 | upDownLabel = "RICHER", "LEANER" |
| 2442 | 2542 | gridOrient = 250, 0, 340 |
| 2443 | 2543 | |
| 2444 | - #if BOOSTPSI | |
| 2445 | - table = boostTbl, boostMap, "Boost targets (PSI)", 8 | |
| 2446 | - #else | |
| 2447 | - table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 | |
| 2448 | - #endif | |
| 2544 | + ;#if BOOSTPSI | |
| 2545 | + ;table = boostTbl, boostMap, "Boost targets (PSI)", 8 | |
| 2546 | + ;#else | |
| 2547 | + ;table = boostTbl, boostMap, "Boost targets (Absolute kPa)", 8 | |
| 2548 | + ;#endif | |
| 2549 | + table = boostTbl, boostMap, "Boost Duty / Target", 8 | |
| 2449 | 2550 | xBins = rpmBinsBoost, rpm |
| 2450 | 2551 | yBins = tpsBinsBoost, throttle |
| 2451 | 2552 | zBins = boostTable |
| @@ -2620,22 +2721,22 @@ | ||
| 2620 | 2721 | |
| 2621 | 2722 | #if CAN_COMMANDS |
| 2622 | 2723 | gaugeCategory = "CanBus Inputs" |
| 2623 | - CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2624 | - CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2625 | - CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2626 | - CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2627 | - CanGauge4 = canin_gauge4, "Can In4" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2628 | - CanGauge5 = canin_gauge5, "Can In5" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2629 | - CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2630 | - CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2631 | - CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2632 | - CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2633 | - CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2634 | - CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2635 | - CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2636 | - CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2637 | - CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2638 | - CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2724 | + CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2725 | + CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2726 | + CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2727 | + CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2728 | + CanGauge4 = canin_gauge4, "Can In4" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2729 | + CanGauge5 = canin_gauge5, "Can In5" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2730 | + CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2731 | + CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2732 | + CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2733 | + CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2734 | + CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2735 | + CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2736 | + CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2737 | + CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2738 | + CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2739 | + CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 | |
| 2639 | 2740 | #endif |
| 2640 | 2741 | |
| 2641 | 2742 | gaugeCategory = "System Data" |
| @@ -2663,7 +2764,7 @@ | ||
| 2663 | 2764 | gauge5 = afrGauge |
| 2664 | 2765 | gauge6 = iatGauge |
| 2665 | 2766 | gauge7 = cltGauge |
| 2666 | - gauge6 = batteryVoltage | |
| 2767 | + gauge8 = batteryVoltage | |
| 2667 | 2768 | |
| 2668 | 2769 | ;---------------------------------------------------------------------------- |
| 2669 | 2770 | ; Indicators |
| @@ -2687,6 +2788,7 @@ | ||
| 2687 | 2788 | indicator = { sync }, "No Sync", "Sync", white, black, green, black |
| 2688 | 2789 | indicator = { resetLockOn }, "Reset Lock OFF","Reset Lock ON", red, black, green, black |
| 2689 | 2790 | indicator = { bootloaderCaps > 0 }, "Std. Boot", "Custom Boot", white, black, white, black |
| 2791 | + indicator = { nitrousOn }, "Nitrous Off", "Nitrous On", white, black, red, black | |
| 2690 | 2792 | |
| 2691 | 2793 | ;------------------------------------------------------------------------------- |
| 2692 | 2794 |
| @@ -2697,30 +2799,29 @@ | ||
| 2697 | 2799 | ; you change it. |
| 2698 | 2800 | |
| 2699 | 2801 | ochGetCommand = "r\$tsCanId\x30%2o%2c" |
| 2700 | -;[PJSC] ochBlockSize = 85 | |
| 2701 | -;[PJSC v1.10] ochBlockSize = 98 ;[PJSC]Extend block size for External Trigger | |
| 2702 | - ochBlockSize = 100 ;[PJSC v1.10] Extend block size for Test mode | |
| 2802 | +;[PJSC] ochBlockSize = 89 | |
| 2803 | + ochBlockSize = 104 ;[PJSC v1.10] Extend block size for Test mode | |
| 2703 | 2804 | |
| 2704 | - secl = scalar, U08, 0, "sec", 1.000, 0.000 | |
| 2705 | - status1 = scalar, U08, 1, "bits", 1.000, 0.000 | |
| 2706 | - inj1Status = bits, U08, 1, [0:0] | |
| 2707 | - inj2Status = bits, U08, 1, [1:1] | |
| 2708 | - inj3Status = bits, U08, 1, [2:2] | |
| 2709 | - inj4Status = bits, U08, 1, [3:3] | |
| 2710 | - DFCOOn = bits, U08, 1, [4:4] | |
| 2711 | - boostCutFuel = bits, U08, 1, [5:5] | |
| 2712 | - toothLog1Ready = bits, U08, 1, [6:6] | |
| 2713 | - toothLog2Ready = bits, U08, 1, [7:7] | |
| 2714 | - engine = scalar, U08, 2, "bits", 1.000, 0.000 | |
| 2715 | - running = bits, U08, 2, [0:0] | |
| 2716 | - crank = bits, U08, 2, [1:1] | |
| 2717 | - ase = bits, U08, 2, [2:2] | |
| 2718 | - warmup = bits, U08, 2, [3:3] | |
| 2719 | - tpsaccaen = bits, U08, 2, [4:4] | |
| 2720 | - tpsaccden = bits, U08, 2, [5:5] | |
| 2721 | - mapaccaen = bits, U08, 2, [6:6] | |
| 2722 | - mapaccden = bits, U08, 2, [7:7] | |
| 2723 | - dwell = scalar, U08, 3, "ms", 0.100, 0.000 | |
| 2805 | + secl = scalar, U08, 0, "sec", 1.000, 0.000 | |
| 2806 | + status1 = scalar, U08, 1, "bits", 1.000, 0.000 | |
| 2807 | + inj1Status = bits, U08, 1, [0:0] | |
| 2808 | + inj2Status = bits, U08, 1, [1:1] | |
| 2809 | + inj3Status = bits, U08, 1, [2:2] | |
| 2810 | + inj4Status = bits, U08, 1, [3:3] | |
| 2811 | + DFCOOn = bits, U08, 1, [4:4] | |
| 2812 | + boostCutFuel = bits, U08, 1, [5:5] | |
| 2813 | + toothLog1Ready = bits, U08, 1, [6:6] | |
| 2814 | + toothLog2Ready = bits, U08, 1, [7:7] | |
| 2815 | + engine = scalar, U08, 2, "bits", 1.000, 0.000 | |
| 2816 | + running = bits, U08, 2, [0:0] | |
| 2817 | + crank = bits, U08, 2, [1:1] | |
| 2818 | + ase = bits, U08, 2, [2:2] | |
| 2819 | + warmup = bits, U08, 2, [3:3] | |
| 2820 | + tpsaccaen = bits, U08, 2, [4:4] | |
| 2821 | + tpsaccden = bits, U08, 2, [5:5] | |
| 2822 | + mapaccaen = bits, U08, 2, [6:6] | |
| 2823 | + mapaccden = bits, U08, 2, [7:7] | |
| 2824 | + dwell = scalar, U08, 3, "ms", 0.100, 0.000 | |
| 2724 | 2825 | map = scalar, U16, 4, "kpa", 1.000, 0.000 |
| 2725 | 2826 | iatRaw = scalar, U08, 6, "°C", 1.000, 0.000 |
| 2726 | 2827 | coolantRaw = scalar, U08, 7, "°C", 1.000, 0.000 |
| @@ -2744,14 +2845,14 @@ | ||
| 2744 | 2845 | boostTarget = scalar, U08, 29, "kPa", 2.000, 0.000 |
| 2745 | 2846 | boostDuty = scalar, U08, 30, "%", 1.000, 0.000 |
| 2746 | 2847 | status2 = scalar, U08, 31, "bits", 1.000, 0.000 |
| 2747 | - launchHard = bits, U08, 31, [0:0] | |
| 2748 | - launchSoft = bits, U08, 31, [1:1] | |
| 2749 | - hardLimitOn = bits, U08, 31, [2:2] | |
| 2750 | - softlimitOn = bits, U08, 31, [3:3] | |
| 2751 | - boostCutSpark = bits, U08, 31, [4:4] | |
| 2752 | - error = bits, U08, 31, [5:5] | |
| 2753 | - idle = bits, U08, 31, [6:6] | |
| 2754 | - sync = bits, U08, 31, [7:7] | |
| 2848 | + launchHard = bits, U08, 31, [0:0] | |
| 2849 | + launchSoft = bits, U08, 31, [1:1] | |
| 2850 | + hardLimitOn = bits, U08, 31, [2:2] | |
| 2851 | + softlimitOn = bits, U08, 31, [3:3] | |
| 2852 | + boostCutSpark = bits, U08, 31, [4:4] | |
| 2853 | + error = bits, U08, 31, [5:5] | |
| 2854 | + idle = bits, U08, 31, [6:6] | |
| 2855 | + sync = bits, U08, 31, [7:7] | |
| 2755 | 2856 | rpmDOT = scalar, S16, 32, "rpm/s", 1.000, 0.000 |
| 2756 | 2857 | flex = scalar, U08, 34, "%", 1.000, 0.000 |
| 2757 | 2858 | flexFuelCor = scalar, U08, 35, "%", 1.000, 0.000 |
| @@ -2759,51 +2860,55 @@ | ||
| 2759 | 2860 | |
| 2760 | 2861 | 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 |
| 2761 | 2862 | testoutputs = scalar, U08, 38, "bits", 1.000, 0.000 |
| 2762 | - testenabled = bits, U08, 38, [0:0] | |
| 2763 | - testactive = bits, U08, 38, [1:1] | |
| 2863 | + testenabled = bits, U08, 38, [0:0] | |
| 2864 | + testactive = bits, U08, 38, [1:1] | |
| 2764 | 2865 | afr2 = scalar, U08, 39, "O2", 0.100, 0.000 |
| 2765 | - baro = scalar, U08, 40, "kpa", 1.100, 0.000 | |
| 2766 | - canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 | |
| 2767 | - canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 | |
| 2768 | - canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 | |
| 2769 | - canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 | |
| 2770 | - canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 | |
| 2771 | - canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 | |
| 2772 | - canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 | |
| 2773 | - canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 | |
| 2774 | - canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 | |
| 2775 | - canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 | |
| 2776 | - canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 | |
| 2777 | - canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 | |
| 2778 | - canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 | |
| 2779 | - canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 | |
| 2780 | - canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 | |
| 2781 | - canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 | |
| 2782 | - tpsADC = scalar, U08, 73, "ADC", 1.000, 0.000 | |
| 2866 | + baro = scalar, U08, 40, "kpa", 1.000, 0.000 | |
| 2867 | + canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 | |
| 2868 | + canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 | |
| 2869 | + canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 | |
| 2870 | + canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 | |
| 2871 | + canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 | |
| 2872 | + canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 | |
| 2873 | + canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 | |
| 2874 | + canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 | |
| 2875 | + canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 | |
| 2876 | + canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 | |
| 2877 | + canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 | |
| 2878 | + canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 | |
| 2879 | + canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 | |
| 2880 | + canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 | |
| 2881 | + canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 | |
| 2882 | + canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 | |
| 2883 | + tpsADC = scalar, U08, 73, "ADC",1.000, 0.000 | |
| 2783 | 2884 | errors = scalar, U08, 74, "bits", 1.000, 0.000 |
| 2784 | - errorNum = bits, U08, 74, [0:1] | |
| 2785 | - currentError = bits, U08, 74, [2:7] | |
| 2885 | + errorNum = bits, U08, 74, [0:1] | |
| 2886 | + currentError = bits, U08, 74, [2:7] | |
| 2786 | 2887 | pulseWidth2 = scalar, U16, 75, "ms", 0.001, 0.000 |
| 2787 | 2888 | pulseWidth3 = scalar, U16, 77, "ms", 0.001, 0.000 |
| 2788 | 2889 | pulseWidth4 = scalar, U16, 79, "ms", 0.001, 0.000 |
| 2789 | - status3 = scalar, U08, 81, "bits", 1.000, 0.000 | |
| 2890 | + status3 = scalar, U08, 81, "bits", 1.000, 0.000 | |
| 2790 | 2891 | resetLockOn = bits, U08, 81, [0:0] |
| 2791 | - unused81_1-4 = bits, U08, 81, [1:4] | |
| 2892 | + nitrousOn = bits, U08, 81, [1:1] | |
| 2893 | + unused81_2-4 = bits, U08, 81, [2:4] | |
| 2792 | 2894 | nSquirts = bits, U08, 81, [5:7] |
| 2793 | - flexBoostCor = scalar, S16, 82, "kPa", 1.000, 0.000 | |
| 2895 | + flexBoostCor = scalar, S16, 82, "kPa", 1.000, 0.000 | |
| 2794 | 2896 | nChannels = scalar, U08, 84, "bits", 1.000, 0.000 |
| 2795 | - nIgnChannels = bits, U08, 84, [0:3] | |
| 2796 | - nFuelChannels = bits, U08, 84, [4:7] | |
| 2797 | - veCurr2 = scalar, U08, 85, "%", 1.000, 0.000 ;[PJSC]Multi VE Map support | |
| 2798 | - valvePosition = scalar, U08, 86, "%", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2799 | - valvePositionADC = scalar, U08, 87, "ADC", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2800 | - sparkedAngle = scalar, S16, 88, "deg", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2801 | - dutyFreq = scalar, U16, 90, "Hz", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2802 | - dutyRatio = scalar, U16, 92, "%", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2803 | - dutyFreq2 = scalar, U16, 94, "Hz", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2804 | - dutyRatio2 = scalar, U16, 96, "%", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2805 | - testCnt = scalar, U16, 98, "", 1.000, 0.000 ;[PJSC v1.10]For test mode | |
| 2897 | + nIgnChannels = bits, U08, 84, [0:3] | |
| 2898 | + nFuelChannels = bits, U08, 84, [4:7] | |
| 2899 | + fuelLoad = scalar, S16, 85, { bitStringValue( algorithmUnits , algorithm ) }, 1.000, 0.000 | |
| 2900 | + ignLoad = scalar, S16, 87, { bitStringValue( algorithmUnits , ignAlgorithm ) }, 1.000, 0.000 | |
| 2901 | + veCurr2 = scalar, U08, 89, "%", 1.000, 0.000 ;[PJSC]Multi VE Map support | |
| 2902 | + valvePosition = scalar, U08, 90, "%", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2903 | + valvePositionADC = scalar, U08, 91, "ADC", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2904 | + sparkedAngle = scalar, S16, 92, "deg", 1.000, 0.000 ;[PJSC]Extend output channel for External Trigger | |
| 2905 | + dutyFreq = scalar, U16, 94, "Hz", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2906 | + dutyRatio = scalar, U16, 96, "%", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2907 | + dutyFreq2 = scalar, U16, 98, "Hz", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2908 | + dutyRatio2 = scalar, U16, 100, "%", 1.000, 0.000 ;[PJSC]For capturing duty pulse | |
| 2909 | + testCnt = scalar, U16, 102, "", 1.000, 0.000 ;[PJSC v1.10]For test mode | |
| 2806 | 2910 | |
| 2911 | + | |
| 2807 | 2912 | #if CELSIUS |
| 2808 | 2913 | coolant = { coolantRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives |
| 2809 | 2914 | iat = { iatRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives |
| @@ -2836,6 +2941,12 @@ | ||
| 2836 | 2941 | map_inhg = { (baro - map) * 0.2953007 } ;in-Hg |
| 2837 | 2942 | map_vacboost = { map < baro ? -map_inhg : map_psi } |
| 2838 | 2943 | |
| 2944 | + ;fuelLoadMax = { arrayValue(algorithmLimits , algorithm) } ;Doesn't work, no idea why. | |
| 2945 | + fuelLoadMax = { (algorithm == 0 || algorithm == 2) ? 511 : 100 } | |
| 2946 | + ignLoadMax = { (ignAlgorithm == 0 || ignAlgorithm == 2) ? 511 : 100 } | |
| 2947 | + | |
| 2948 | + boostTableLimit = { boostType == 0 ? 100 : 511 } ;The maximum value allowed in the boost table. 100 is used for duty cycle, 511 for kpa | |
| 2949 | + | |
| 2839 | 2950 | ;------------------------------------------------------------------------------- |
| 2840 | 2951 | |
| 2841 | 2952 | [Datalog] |
| @@ -2853,50 +2964,51 @@ | ||
| 2853 | 2964 | ; Type - Data type of output, converted before writing. |
| 2854 | 2965 | ; Format - C-style output format of data. |
| 2855 | 2966 | ; |
| 2856 | - ; Channel Label Type Format | |
| 2857 | - ; -------------- ---------- ----- ------ | |
| 2858 | - entry = time, "Time", float, "%.3f" | |
| 2859 | - entry = secl, "SecL", int, "%d" | |
| 2860 | - entry = rpm, "RPM", int, "%d" | |
| 2861 | - entry = map, "MAP", int, "%d" | |
| 2862 | - entry = MAPxRPM, "MAPxRPM", int, "%d" | |
| 2863 | - entry = tps, "TPS", int, "%d" | |
| 2864 | - entry = afr, "O2", float, "%.3f" | |
| 2865 | - entry = lambda, "Lambda", float, "%.3f" | |
| 2866 | - entry = iat, "IAT", int, "%d" | |
| 2867 | - entry = coolant, "CLT", int, "%d" | |
| 2868 | - entry = engine, "Engine", int, "%d" | |
| 2869 | - entry = DFCOOn, "DFCO", int, "%d" | |
| 2870 | - entry = egoCorrection, "Gego", int, "%d" | |
| 2871 | - entry = airCorrection, "Gair", int, "%d" | |
| 2872 | - entry = batCorrection, "Gbattery", int, "%d" | |
| 2873 | - entry = warmupEnrich, "Gwarm", int, "%d" | |
| 2967 | + ; Channel Label Type Format | |
| 2968 | + ; -------------- ---------- ----- ------ | |
| 2969 | + entry = time, "Time", float, "%.3f" | |
| 2970 | + entry = secl, "SecL", int, "%d" | |
| 2971 | + entry = rpm, "RPM", int, "%d" | |
| 2972 | + entry = map, "MAP", int, "%d" | |
| 2973 | + entry = MAPxRPM, "MAPxRPM", int, "%d" | |
| 2974 | + entry = tps, "TPS", int, "%d" | |
| 2975 | + entry = afr, "O2", float, "%.3f" | |
| 2976 | + entry = lambda, "Lambda", float, "%.3f" | |
| 2977 | + entry = iat, "IAT", int, "%d" | |
| 2978 | + entry = coolant, "CLT", int, "%d" | |
| 2979 | + entry = engine, "Engine", int, "%d" | |
| 2980 | + entry = DFCOOn, "DFCO", int, "%d" | |
| 2981 | + entry = egoCorrection, "Gego", int, "%d" | |
| 2982 | + entry = airCorrection, "Gair", int, "%d" | |
| 2983 | + entry = batCorrection, "Gbattery", int, "%d" | |
| 2984 | + entry = warmupEnrich, "Gwarm", int, "%d" | |
| 2874 | 2985 | ;entry = baroCorrection, "Gbaro", int, "%d" |
| 2875 | - entry = gammaEnrich, "Gammae", int, "%d" | |
| 2876 | - entry = accelEnrich, "Accel Enrich",int, "%d" | |
| 2877 | - entry = veCurr, "VE", int, "%d" | |
| 2986 | + entry = gammaEnrich, "Gammae", int, "%d" | |
| 2987 | + entry = accelEnrich, "Accel Enrich", int, "%d" | |
| 2988 | + entry = veCurr, "VE", int, "%d" | |
| 2878 | 2989 | entry = veCurr2, "VE2", int, "%d", { multiVEmapEnabled } ;[PJSC] |
| 2879 | - entry = pulseWidth, "PW", float, "%.1f" | |
| 2880 | - entry = afrTarget, "AFR Target", float, "%.3f" | |
| 2881 | - entry = pulseWidth, "PW2", float, "%.1f" | |
| 2882 | - entry = dutyCycle, "DutyCycle1", float, "%.1f" | |
| 2883 | - entry = dutyCycle, "DutyCycle2", float, "%.1f" | |
| 2884 | - entry = TPSdot, "TPS DOT", int, "%d" | |
| 2885 | - entry = advance, "Advance", int, "%d" | |
| 2886 | - entry = dwell, "Dwell", float, "%.1f" | |
| 2887 | - entry = batteryVoltage, "Battery V", float, "%.1f" | |
| 2888 | - entry = rpmDOT, "rpm/s", int, "%d" | |
| 2889 | - entry = flex, "Eth %", int, "%d", { flexEnabled } | |
| 2890 | - entry = errorNum, "Error #", int, "%d" | |
| 2891 | - entry = currentError, "Error ID", int, "%d" | |
| 2892 | - entry = map_psi, "Boost PSI", float, "%.1f" | |
| 2893 | - entry = boostTarget, "Boost Target",int, "%d", { boostEnabled } | |
| 2894 | - entry = boostDuty, "Boost Duty", int, "%d", { boostEnabled } | |
| 2895 | - entry = boostCutOut , "Boost cut", int, "%d" | |
| 2896 | - entry = launchHard , "Launch Hard", int, "%d" | |
| 2897 | - entry = hardLimitOn , "Hard Limiter",int, "%d" | |
| 2898 | - entry = idleLoad, "IAC value", int, "%d" | |
| 2990 | + entry = pulseWidth, "PW", float, "%.1f" | |
| 2991 | + entry = afrTarget, "AFR Target", float, "%.3f" | |
| 2992 | + entry = pulseWidth, "PW2", float, "%.1f" | |
| 2993 | + entry = dutyCycle, "DutyCycle1", float, "%.1f" | |
| 2994 | + entry = dutyCycle, "DutyCycle2", float, "%.1f" | |
| 2995 | + entry = TPSdot, "TPS DOT", int, "%d" | |
| 2996 | + entry = advance, "Advance", int, "%d" | |
| 2997 | + entry = dwell, "Dwell", float, "%.1f" | |
| 2998 | + entry = batteryVoltage, "Battery V", float, "%.1f" | |
| 2999 | + entry = rpmDOT, "rpm/s", int, "%d" | |
| 3000 | + entry = flex, "Eth %", int, "%d", { flexEnabled } | |
| 3001 | + entry = errorNum, "Error #", int, "%d" | |
| 3002 | + entry = currentError, "Error ID", int, "%d" | |
| 3003 | + entry = map_psi, "Boost PSI", float, "%.1f" | |
| 3004 | + entry = boostTarget, "Boost Target", int, "%d", { boostEnabled } | |
| 3005 | + entry = boostDuty, "Boost Duty", int, "%d", { boostEnabled } | |
| 3006 | + entry = boostCutOut , "Boost cut", int, "%d" | |
| 3007 | + entry = launchHard , "Launch Hard", int, "%d" | |
| 3008 | + entry = hardLimitOn , "Hard Limiter", int, "%d" | |
| 3009 | + entry = idleLoad, "IAC value", int, "%d" | |
| 2899 | 3010 | entry = baro, "Baro Pressure",int, "%d" |
| 3011 | + entry = nitrousOn, "Nitrous On", int, "%d", { n2o_enable > 0 } | |
| 2900 | 3012 | entry = valvePosition, "ExValve Pos", int, "%d", { exValveCaptureEnabled } ;[PJSC] |
| 2901 | 3013 | entry = sparkedAngle, "Spark Angle", int, "%d", { exTrigModeSelect == 1 } ;[PJSC] |
| 2902 | 3014 | entry = dutyFreq, "Duty Frequency", int, "%d", { dutyPulseCaptureEnabled } ;[PJSC] |
| @@ -2905,14 +3017,14 @@ | ||
| 2905 | 3017 | entry = dutyRatio2, "Duty Ratio2", int, "%d", { dutyPulseCaptureEnabled2 } ;[PJSC] |
| 2906 | 3018 | |
| 2907 | 3019 | #if CAN_COMMANDS |
| 2908 | - entry = canin_gauge0, "CanIn CH0", int, "%d" | |
| 2909 | - entry = canin_gauge1, "CanIn CH1", int, "%d" | |
| 2910 | - entry = canin_gauge2, "CanIn CH2", int, "%d" | |
| 2911 | - entry = canin_gauge3, "CanIn CH3", int, "%d" | |
| 2912 | - entry = canin_gauge4, "CanIn CH4", int, "%d" | |
| 2913 | - entry = canin_gauge5, "CanIn CH5", int, "%d" | |
| 2914 | - entry = canin_gauge6, "CanIn CH6", int, "%d" | |
| 2915 | - entry = canin_gauge7, "CanIn CH7", int, "%d" | |
| 3020 | + entry = canin_gauge0, "CanIn CH0", int, "%d" | |
| 3021 | + entry = canin_gauge1, "CanIn CH1", int, "%d" | |
| 3022 | + entry = canin_gauge2, "CanIn CH2", int, "%d" | |
| 3023 | + entry = canin_gauge3, "CanIn CH3", int, "%d" | |
| 3024 | + entry = canin_gauge4, "CanIn CH4", int, "%d" | |
| 3025 | + entry = canin_gauge5, "CanIn CH5", int, "%d" | |
| 3026 | + entry = canin_gauge6, "CanIn CH6", int, "%d" | |
| 3027 | + entry = canin_gauge7, "CanIn CH7", int, "%d" | |
| 2916 | 3028 | #endif |
| 2917 | 3029 | |
| 2918 | 3030 |
| @@ -5,6 +5,7 @@ | ||
| 5 | 5 | void boostControl(); |
| 6 | 6 | void vvtControl(); |
| 7 | 7 | void initialiseFan(); |
| 8 | +void nitrousControl(); | |
| 8 | 9 | |
| 9 | 10 | #if defined(CORE_AVR) |
| 10 | 11 | #define ENABLE_BOOST_TIMER() TIMSK1 |= (1 << OCIE1A) |
| @@ -59,12 +60,26 @@ | ||
| 59 | 60 | #define BOOST_PIN_HIGH() *boost_pin_port |= (boost_pin_mask) |
| 60 | 61 | #define VVT_PIN_LOW() *vvt_pin_port &= ~(vvt_pin_mask) |
| 61 | 62 | #define VVT_PIN_HIGH() *vvt_pin_port |= (vvt_pin_mask) |
| 63 | +#define FAN_PIN_LOW() *fan_pin_port &= ~(fan_pin_mask) | |
| 64 | +#define FAN_PIN_HIGH() *fan_pin_port |= (fan_pin_mask) | |
| 65 | +#define N2O_STAGE1_PIN_LOW() *n2o_stage1_pin_port &= ~(n2o_stage1_pin_mask) | |
| 66 | +#define N2O_STAGE1_PIN_HIGH() *n2o_stage1_pin_port |= (n2o_stage1_pin_mask) | |
| 67 | +#define N2O_STAGE2_PIN_LOW() *n2o_stage2_pin_port &= ~(n2o_stage2_pin_mask) | |
| 68 | +#define N2O_STAGE2_PIN_HIGH() *n2o_stage2_pin_port |= (n2o_stage2_pin_mask) | |
| 69 | +#define READ_N2O_ARM_PIN() ((*n2o_arming_pin_port & n2o_arming_pin_mask) ? true : false) | |
| 62 | 70 | |
| 63 | - | |
| 64 | 71 | volatile byte *boost_pin_port; |
| 65 | 72 | volatile byte boost_pin_mask; |
| 66 | 73 | volatile byte *vvt_pin_port; |
| 67 | 74 | volatile byte vvt_pin_mask; |
| 75 | +volatile byte *fan_pin_port; | |
| 76 | +volatile byte fan_pin_mask; | |
| 77 | +volatile byte *n2o_stage1_pin_port; | |
| 78 | +volatile byte n2o_stage1_pin_mask; | |
| 79 | +volatile byte *n2o_stage2_pin_port; | |
| 80 | +volatile byte n2o_stage2_pin_mask; | |
| 81 | +volatile byte *n2o_arming_pin_port; | |
| 82 | +volatile byte n2o_arming_pin_mask; | |
| 68 | 83 | |
| 69 | 84 | volatile bool boost_pwm_state; |
| 70 | 85 | unsigned int boost_pwm_max_count; //Used for variable PWM frequency |
| @@ -14,9 +14,8 @@ | ||
| 14 | 14 | #define ve2MapPage 11 //[PJSC] Config Page 11 |
| 15 | 15 | #define ve2SetPage 12 //[PJSC] Config Page 12 |
| 16 | 16 | |
| 17 | -//[PJSC]#define SERIAL_PACKET_SIZE 85 //Must match ochBlockSize in ini file | |
| 18 | -//[PJSC v1.10]#define SERIAL_PACKET_SIZE 98 //[PJSC]Extend serial packet block size for External Trigger | |
| 19 | -#define SERIAL_PACKET_SIZE 100 //[PJSC v1.10] Extend serial packet block size for Test mode | |
| 17 | +//[PJSC]#define SERIAL_PACKET_SIZE 89 //Must match ochBlockSize in ini file | |
| 18 | +#define SERIAL_PACKET_SIZE 104 //[PJSC v1.10] Extend serial packet block size for Test mode | |
| 20 | 19 | |
| 21 | 20 | byte currentPage = 1;//Not the same as the speeduino config page numbers |
| 22 | 21 | bool isMap = true; |
| @@ -26,6 +26,7 @@ | ||
| 26 | 26 | static inline int8_t correctionFlexTiming(int8_t); |
| 27 | 27 | static inline int8_t correctionIATretard(int8_t); |
| 28 | 28 | static inline int8_t correctionSoftRevLimit(int8_t); |
| 29 | +static inline int8_t correctionNitrous(int8_t); | |
| 29 | 30 | static inline int8_t correctionSoftLaunch(int8_t); |
| 30 | 31 | static inline int8_t correctionSoftFlatShift(int8_t); |
| 31 | 32 |
| @@ -0,0 +1,7 @@ | ||
| 1 | +#define CRANKMATH_METHOD_INTERVAL_RPM 0 | |
| 2 | +#define CRANKMATH_METHOD_INTERVAL_TOOTH 1 | |
| 3 | +#define CRANKMATH_METHOD_ALPHA_BETA 2 | |
| 4 | +#define CRANKMATH_METHOD_2ND_DERIVATIVE 3 | |
| 5 | + | |
| 6 | +unsigned long angleToTime(int16_t angle); | |
| 7 | +uint16_t timeToAngle(unsigned long time); | |
| \ No newline at end of file |
| @@ -12,7 +12,7 @@ | ||
| 12 | 12 | #endif |
| 13 | 13 | |
| 14 | 14 | static inline void addToothLogEntry(unsigned long); |
| 15 | -static inline uint16_t stdGetRPM(); | |
| 15 | +static inline uint16_t stdGetRPM(uint16_t degreesOver); | |
| 16 | 16 | static inline void setFilter(unsigned long); |
| 17 | 17 | static inline int crankingGetRPM(byte); |
| 18 | 18 | static inline void doPerToothTiming(uint16_t crankAngle); |
| @@ -28,7 +28,7 @@ | ||
| 28 | 28 | uint16_t getRPM_DualWheel(); |
| 29 | 29 | int getCrankAngle_DualWheel(int timePerDegree); |
| 30 | 30 | |
| 31 | -void captureExtTrigger(); //[PJSC] For External Trigger | |
| 31 | +void captureExtTrigger(); //[PJSC] For External Trigger | |
| 32 | 32 | void captureDutyPulseONtime(); //[PJSC] For capturing duty pulse |
| 33 | 33 | void captureDutyPulseOFFtime(); //[PJSC] For capturing duty pulse |
| 34 | 34 | void captureDutyPulseONtime2(); //[PJSC] For capturing duty pulse |
| @@ -87,4 +87,7 @@ | ||
| 87 | 87 | #define LONG 0; |
| 88 | 88 | #define SHORT 1; |
| 89 | 89 | |
| 90 | +#define CRANK_SPEED 0 | |
| 91 | +#define CAM_SPEED 1 | |
| 92 | + | |
| 90 | 93 | #endif |
| @@ -115,7 +115,7 @@ | ||
| 115 | 115 | #define BIT_TIMER_30HZ 4 |
| 116 | 116 | |
| 117 | 117 | #define BIT_STATUS3_RESET_PREVENT 0 //Indicates whether reset prevention is enabled |
| 118 | -#define BIT_STATUS3_UNUSED1 1 | |
| 118 | +#define BIT_STATUS3_NITROUS 1 | |
| 119 | 119 | #define BIT_STATUS3_UNUSED2 2 |
| 120 | 120 | #define BIT_STATUS3_UNUSED3 3 |
| 121 | 121 | #define BIT_STATUS3_UNUSED4 4 |
| @@ -174,23 +174,30 @@ | ||
| 174 | 174 | #define HARD_CUT_FULL 0 |
| 175 | 175 | #define HARD_CUT_ROLLING 1 |
| 176 | 176 | |
| 177 | -#define SIZE_BYTE 8 | |
| 178 | -#define SIZE_INT 16 | |
| 177 | +#define SIZE_BYTE 8 | |
| 178 | +#define SIZE_INT 16 | |
| 179 | 179 | |
| 180 | -#define EVEN_FIRE 0 | |
| 181 | -#define ODD_FIRE 1 | |
| 180 | +#define EVEN_FIRE 0 | |
| 181 | +#define ODD_FIRE 1 | |
| 182 | 182 | |
| 183 | 183 | #define EGO_ALGORITHM_SIMPLE 0 |
| 184 | 184 | #define EGO_ALGORITHM_PID 2 |
| 185 | 185 | |
| 186 | 186 | #define STAGING_MODE_TABLE 0 |
| 187 | -#define STAGING_MODE_AUTO 1 | |
| 187 | +#define STAGING_MODE_AUTO 1 | |
| 188 | 188 | |
| 189 | +#define NITROUS_OFF 0 | |
| 190 | +#define NITROUS_STAGE1 1 | |
| 191 | +#define NITROUS_STAGE2 2 | |
| 192 | + | |
| 189 | 193 | #define RESET_CONTROL_DISABLED 0 |
| 190 | 194 | #define RESET_CONTROL_PREVENT_WHEN_RUNNING 1 |
| 191 | 195 | #define RESET_CONTROL_PREVENT_ALWAYS 2 |
| 192 | 196 | #define RESET_CONTROL_SERIAL_COMMAND 3 |
| 193 | 197 | |
| 198 | +#define OPEN_LOOP_BOOST 0 | |
| 199 | +#define CLOSED_LOOP_BOOST 1 | |
| 200 | + | |
| 194 | 201 | #define MAX_RPM 18000 //This is the maximum rpm that the ECU will attempt to run at. It is NOT related to the rev limiter, but is instead dictates how fast certain operations will be allowed to run. Lower number gives better performance |
| 195 | 202 | #define engineSquirtsPerCycle 2 //Would be 1 for a 2 stroke |
| 196 | 203 |
| @@ -255,7 +262,7 @@ | ||
| 255 | 262 | struct table2D flexAdvTable; //6 bin flex fuel correction table for timing advance (2D) |
| 256 | 263 | struct table2D flexBoostTable; //6 bin flex fuel correction table for boost adjustments (2D) |
| 257 | 264 | |
| 258 | -//These are for the direct port manipulation of the injectors and coils | |
| 265 | +//These are for the direct port manipulation of the injectors, coils and aux outputs | |
| 259 | 266 | volatile byte *inj1_pin_port; |
| 260 | 267 | volatile byte inj1_pin_mask; |
| 261 | 268 | volatile byte *inj2_pin_port; |
| @@ -300,7 +307,7 @@ | ||
| 300 | 307 | volatile byte *triggerSec_pin_port; |
| 301 | 308 | volatile byte triggerSec_pin_mask; |
| 302 | 309 | |
| 303 | -volatile byte captureDutyPulseInterrupt; //[PJSC] | |
| 310 | +volatile byte captureDutyPulseInterrupt; //[PJSC] For capture duty pulse | |
| 304 | 311 | volatile byte captureDutyPulseInterrupt2; //[PJSC] For capture duty pulse |
| 305 | 312 | volatile unsigned int tempPWvalue1; //[PJSC] Multi VE Map support |
| 306 | 313 | volatile unsigned int tempPWvalue2; //[PJSC] Multi VE Map support |
| @@ -377,6 +384,7 @@ | ||
| 377 | 384 | byte flexIgnCorrection; //Amount of additional advance being applied based on flex |
| 378 | 385 | byte afrTarget; |
| 379 | 386 | byte idleDuty; |
| 387 | + bool idleUpActive; | |
| 380 | 388 | bool fanOn; //Whether or not the fan is turned on |
| 381 | 389 | volatile byte ethanolPct; //Ethanol reading (if enabled). 0 = No ethanol, 100 = pure ethanol. Eg E85 = 85. |
| 382 | 390 | unsigned long TAEEndTime; //The target end time used whenever TAE is turned on |
| @@ -411,9 +419,11 @@ | ||
| 411 | 419 | uint16_t crankRPM = 400; //The actual cranking RPM limit. Saves us multiplying it everytime from the config page |
| 412 | 420 | volatile byte status3; |
| 413 | 421 | int16_t flexBoostCorrection; //Amount of boost added based on flex |
| 422 | + byte nitrous_status; | |
| 414 | 423 | byte nSquirts; |
| 415 | 424 | byte nChannels; //Number of fuel and ignition channels |
| 416 | 425 | int16_t fuelLoad; |
| 426 | + int16_t ignLoad; | |
| 417 | 427 | byte exValvePosition; //[PJSC] For External Trigger |
| 418 | 428 | byte exValvePositionADC; //[PJSC] For External Trigger |
| 419 | 429 | int extTriggerAngle; //[PJSC] For External Trigger |
| @@ -503,7 +513,7 @@ | ||
| 503 | 513 | |
| 504 | 514 | //config2 in ini |
| 505 | 515 | byte fuelAlgorithm : 3; |
| 506 | - byte unused2_37d : 1; | |
| 516 | + byte fixAngEnable : 1; //Whether fixed/locked timing is enabled | |
| 507 | 517 | byte nInjectors : 4; //Number of injectors |
| 508 | 518 | |
| 509 | 519 |
| @@ -510,7 +520,7 @@ | ||
| 510 | 520 | //config3 in ini |
| 511 | 521 | byte engineType : 1; |
| 512 | 522 | byte flexEnabled : 1; |
| 513 | - byte algorithm : 1; //"Speed Density", "Alpha-N" | |
| 523 | + byte unused2_38c : 1; //"Speed Density", "Alpha-N" | |
| 514 | 524 | byte baroCorr : 1; |
| 515 | 525 | byte injLayout : 2; |
| 516 | 526 | byte perToothIgn : 1; |
| @@ -531,11 +541,15 @@ | ||
| 531 | 541 | uint16_t oddfire2; //The ATDC angle of channel 2 for oddfire |
| 532 | 542 | uint16_t oddfire3; //The ATDC angle of channel 3 for oddfire |
| 533 | 543 | uint16_t oddfire4; //The ATDC angle of channel 4 for oddfire |
| 534 | - byte unused2_57; | |
| 535 | - byte unused2_58; | |
| 536 | - byte unused2_59; | |
| 537 | - byte unused2_60; | |
| 538 | 544 | |
| 545 | + byte idleUpPin : 6; | |
| 546 | + byte idleUpPolarity : 1; | |
| 547 | + byte idleUpEnabled : 1; | |
| 548 | + | |
| 549 | + byte idleUpAdder; | |
| 550 | + byte taeTaperMin; | |
| 551 | + byte taeTaperMax; | |
| 552 | + | |
| 539 | 553 | byte iacCLminDuty; |
| 540 | 554 | byte iacCLmaxDuty; |
| 541 | 555 | byte boostMinDuty; |
| @@ -614,7 +628,7 @@ | ||
| 614 | 628 | |
| 615 | 629 | byte StgCycles; //The number of initial cycles before the ignition should fire when first cranking |
| 616 | 630 | |
| 617 | - byte dwellCont : 1; //Fixed duty dwell control | |
| 631 | + byte boostType : 1; //Open or closed loop boost control | |
| 618 | 632 | byte useDwellLim : 1; //Whether the dwell limiter is off or on |
| 619 | 633 | byte sparkMode : 3; //Spark output mode (Eg Wasted spark, single channel or Wasted COP) |
| 620 | 634 | byte triggerFilter : 2; //The mode of trigger filter being used (0=Off, 1=Light (Not currently used), 2=Normal, 3=Aggressive) |
| @@ -829,8 +843,32 @@ | ||
| 829 | 843 | uint8_t flexAdvAdj[6]; //Additional advance (in degrees) @ current ethanol (typically 0 @ 0%, 10-20 @ 100%) |
| 830 | 844 | //And another three corn rows die. |
| 831 | 845 | |
| 832 | - byte unused11_75_191[117]; | |
| 846 | + byte n2o_enable : 2; | |
| 847 | + byte n2o_arming_pin : 6; | |
| 848 | + byte n2o_minCLT; | |
| 849 | + byte n2o_maxMAP; | |
| 850 | + byte n2o_minTPS; | |
| 851 | + byte n2o_maxAFR; | |
| 833 | 852 | |
| 853 | + byte n2o_stage1_pin : 6; | |
| 854 | + byte n2o_pin_polarity : 1; | |
| 855 | + byte n2o_stage1_unused : 1; | |
| 856 | + byte n2o_stage1_minRPM; | |
| 857 | + byte n2o_stage1_maxRPM; | |
| 858 | + byte n2o_stage1_adderMin; | |
| 859 | + byte n2o_stage1_adderMax; | |
| 860 | + byte n2o_stage1_retard; | |
| 861 | + | |
| 862 | + byte n2o_stage2_pin : 6; | |
| 863 | + byte n2o_stage2_unused : 2; | |
| 864 | + byte n2o_stage2_minRPM; | |
| 865 | + byte n2o_stage2_maxRPM; | |
| 866 | + byte n2o_stage2_adderMin; | |
| 867 | + byte n2o_stage2_adderMax; | |
| 868 | + byte n2o_stage2_retard; | |
| 869 | + | |
| 870 | + byte unused11_75_191[99]; | |
| 871 | + | |
| 834 | 872 | #if defined(CORE_AVR) |
| 835 | 873 | }; |
| 836 | 874 | #else |
| @@ -870,14 +908,15 @@ | ||
| 870 | 908 | byte pinFuelPump; //Fuel pump on/off |
| 871 | 909 | byte pinIdle1; //Single wire idle control |
| 872 | 910 | byte pinIdle2; //2 wire idle control (Not currently used) |
| 911 | +byte pinIdleUp; //Input for triggering Idle Up | |
| 873 | 912 | byte pinSpareTemp1; // Future use only |
| 874 | 913 | byte pinSpareTemp2; // Future use only |
| 875 | -byte pinSpareOut1; //Generic output | |
| 876 | -byte pinSpareOut2; //Generic output | |
| 877 | -byte pinSpareOut3; //Generic output | |
| 878 | -byte pinSpareOut4; //Generic output | |
| 879 | -byte pinSpareOut5; //Generic output | |
| 880 | -byte pinSpareOut6; //Generic output | |
| 914 | +byte pinSpareOut1; //Generic output | |
| 915 | +byte pinSpareOut2; //Generic output | |
| 916 | +byte pinSpareOut3; //Generic output | |
| 917 | +byte pinSpareOut4; //Generic output | |
| 918 | +byte pinSpareOut5; //Generic output | |
| 919 | +byte pinSpareOut6; //Generic output | |
| 881 | 920 | byte pinSpareHOut1; //spare high current output |
| 882 | 921 | byte pinSpareHOut2; // spare high current output |
| 883 | 922 | byte pinSpareLOut1; // spare low current output |
| @@ -886,9 +925,9 @@ | ||
| 886 | 925 | byte pinSpareLOut4; |
| 887 | 926 | byte pinSpareLOut5; |
| 888 | 927 | byte pinBoost; |
| 889 | -byte pinVVT_1; // vvt output 1 | |
| 890 | -byte pinVVt_2; // vvt output 2 | |
| 891 | -byte pinFan; // Cooling fan output | |
| 928 | +byte pinVVT_1; // vvt output 1 | |
| 929 | +byte pinVVt_2; // vvt output 2 | |
| 930 | +byte pinFan; // Cooling fan output | |
| 892 | 931 | byte pinStepperDir; //Direction pin for the stepper motor driver |
| 893 | 932 | byte pinStepperStep; //Step pin for the stepper motor driver |
| 894 | 933 | byte pinStepperEnable; //Turning the DRV8825 driver on/off |
| @@ -919,7 +958,7 @@ | ||
| 919 | 958 | extern struct config6 configPage6; |
| 920 | 959 | extern struct config9 configPage9; |
| 921 | 960 | extern struct config10 configPage10; |
| 922 | -extern struct config11 configPage11; | |
| 961 | +extern struct config11 configPage11; //[PJSC] | |
| 923 | 962 | //[PJSC]extern struct config12 configPage12; //[PJSC] |
| 924 | 963 | extern unsigned long currentLoopTime; //The time the current loop started (uS) |
| 925 | 964 | extern unsigned long previousLoopTime; //The time the previous loop started (uS) |
| @@ -4,14 +4,6 @@ | ||
| 4 | 4 | int fastMap1023toX(int, int); |
| 5 | 5 | unsigned long percentage(byte, unsigned long); |
| 6 | 6 | |
| 7 | -//#define degreesToUS(degrees) (decoderIsLowRes == true ) ? ((degrees * 166666UL) / currentStatus.RPM) : (degrees * (unsigned long)timePerDegree) | |
| 8 | -#define degreesToUS(degrees) ((degrees * revolutionTime) / 360) | |
| 9 | -#define fastDegreesToUS(degrees) (degrees * (unsigned long)timePerDegree) | |
| 10 | -//#define degreesToUS(degrees) ((degrees * revolutionTime * 3054198967ULL) >> 40) //Fast version of divide by 360 | |
| 11 | -//#define degreesToUS(degrees) (degrees * (unsigned long)timePerDegree) | |
| 12 | - | |
| 13 | -#define uSToDegrees(time) (((unsigned long)time * currentStatus.RPM) / 166666) | |
| 14 | -//#define uSToDegrees(time) ( (((uint64_t)time * currentStatus.RPM * 211107077ULL) >> 45) ) //Crazy magic numbers method from Hackers delight (www.hackersdelight.org/magic.htm) | |
| 15 | 7 | #define DIV_ROUND_CLOSEST(n, d) ((((n) < 0) ^ ((d) < 0)) ? (((n) - (d)/2)/(d)) : (((n) + (d)/2)/(d))) |
| 16 | 8 | |
| 17 | 9 | //This is a dedicated function that specifically handles the case of mapping 0-1023 values into a 0 to X range |
| @@ -367,14 +367,15 @@ | ||
| 367 | 367 | #endif |
| 368 | 368 | |
| 369 | 369 | void initialiseSchedulers(); |
| 370 | -void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 371 | -void setFuelSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 372 | -void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 373 | -void setFuelSchedule4(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 374 | -void setFuelSchedule5(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 375 | -void setFuelSchedule6(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 376 | -void setFuelSchedule7(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 377 | -void setFuelSchedule8(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); | |
| 370 | +void setFuelSchedule1(unsigned long timeout, unsigned long duration); | |
| 371 | +void setFuelSchedule2(unsigned long timeout, unsigned long duration); | |
| 372 | +void setFuelSchedule3(unsigned long timeout, unsigned long duration); | |
| 373 | +void setFuelSchedule4(unsigned long timeout, unsigned long duration); | |
| 374 | +void setFuelSchedule5(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); //Schedule 5 remains a special case for now due to the way it's implemented | |
| 375 | +//void setFuelSchedule5(unsigned long timeout, unsigned long duration); | |
| 376 | +void setFuelSchedule6(unsigned long timeout, unsigned long duration); | |
| 377 | +void setFuelSchedule7(unsigned long timeout, unsigned long duration); | |
| 378 | +void setFuelSchedule8(unsigned long timeout, unsigned long duration); | |
| 378 | 379 | void setIgnitionSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); |
| 379 | 380 | void setIgnitionSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); |
| 380 | 381 | void setIgnitionSchedule3(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()); |
| @@ -29,12 +29,12 @@ | ||
| 29 | 29 | PID::SetOutputLimits(0, 255); //default output limit corresponds to |
| 30 | 30 | //the arduino pwm limits |
| 31 | 31 | |
| 32 | - //SampleTime = 100; //default Controller Sample Time is 0.1 seconds | |
| 32 | + SampleTime = 100; //default Controller Sample Time is 0.1 seconds | |
| 33 | 33 | |
| 34 | 34 | PID::SetControllerDirection(ControllerDirection); |
| 35 | 35 | PID::SetTunings(Kp, Ki, Kd); |
| 36 | 36 | |
| 37 | - //lastTime = millis()-SampleTime; | |
| 37 | + lastTime = millis()-SampleTime; | |
| 38 | 38 | } |
| 39 | 39 | |
| 40 | 40 |
| @@ -62,8 +62,8 @@ | ||
| 62 | 62 | /*Compute PID Output*/ |
| 63 | 63 | long output = (kp * error)/100 + ITerm- (kd * dInput)/100; |
| 64 | 64 | |
| 65 | - if(output > outMax) output = outMax; | |
| 66 | - else if(output < outMin) output = outMin; | |
| 65 | + if(output > outMax) { output = outMax; } | |
| 66 | + else if(output < outMin) { output = outMin; } | |
| 67 | 67 | *myOutput = output; |
| 68 | 68 | |
| 69 | 69 | /*Remember some variables for next time*/ |
| @@ -193,9 +193,9 @@ | ||
| 193 | 193 | * functions query the internal state of the PID. they're here for display |
| 194 | 194 | * purposes. this are the functions the PID Front-end uses for example |
| 195 | 195 | ******************************************************************************/ |
| 196 | -byte PID::GetKp(){ return dispKp; } | |
| 197 | -byte PID::GetKi(){ return dispKi;} | |
| 198 | -byte PID::GetKd(){ return dispKd;} | |
| 196 | +int16_t PID::GetKp(){ return dispKp; } | |
| 197 | +int16_t PID::GetKi(){ return dispKi;} | |
| 198 | +int16_t PID::GetKd(){ return dispKd;} | |
| 199 | 199 | int PID::GetMode(){ return inAuto ? AUTOMATIC : MANUAL;} |
| 200 | 200 | int PID::GetDirection(){ return controllerDirection;} |
| 201 | 201 |
| @@ -239,7 +239,7 @@ | ||
| 239 | 239 | if(timeChange >= SampleTime) |
| 240 | 240 | { |
| 241 | 241 | /*Compute all the working error variables*/ |
| 242 | - long input = *myInput; | |
| 242 | + long input = *myInput; | |
| 243 | 243 | long error = *mySetpoint - input; |
| 244 | 244 | ITerm += (ki * error)/1000; //Note that ki is multiplied by 1000 rather than 100, so it must be divided by 1000 here |
| 245 | 245 | if(ITerm > outMax) { ITerm = outMax; } |
| @@ -45,9 +45,9 @@ | ||
| 45 | 45 | |
| 46 | 46 | |
| 47 | 47 | //Display functions **************************************************************** |
| 48 | - byte GetKp(); // These functions query the pid for interal values. | |
| 49 | - byte GetKi(); // they were created mainly for the pid front-end, | |
| 50 | - byte GetKd(); // where it's important to know what is actually | |
| 48 | + int16_t GetKp(); // These functions query the pid for interal values. | |
| 49 | + int16_t GetKi(); // they were created mainly for the pid front-end, | |
| 50 | + int16_t GetKd(); // where it's important to know what is actually | |
| 51 | 51 | int GetMode(); // inside the PID. |
| 52 | 52 | int GetDirection(); // |
| 53 | 53 |
| @@ -54,13 +54,13 @@ | ||
| 54 | 54 | private: |
| 55 | 55 | void Initialize(); |
| 56 | 56 | |
| 57 | - byte dispKp; // * we'll hold on to the tuning parameters in user-entered | |
| 58 | - byte dispKi; // format for display purposes | |
| 59 | - byte dispKd; // | |
| 57 | + long dispKp; // * we'll hold on to the tuning parameters in user-entered | |
| 58 | + long dispKi; // format for display purposes | |
| 59 | + long dispKd; // | |
| 60 | 60 | |
| 61 | - byte kp; // * (P)roportional Tuning Parameter | |
| 62 | - byte ki; // * (I)ntegral Tuning Parameter | |
| 63 | - byte kd; // * (D)erivative Tuning Parameter | |
| 61 | + long kp; // * (P)roportional Tuning Parameter | |
| 62 | + long ki; // * (I)ntegral Tuning Parameter | |
| 63 | + long kd; // * (D)erivative Tuning Parameter | |
| 64 | 64 | |
| 65 | 65 | int controllerDirection; |
| 66 | 66 |
| @@ -130,8 +130,8 @@ | ||
| 130 | 130 | #define EEPROM_CONFIG8_MAP4 1653 |
| 131 | 131 | #define EEPROM_CONFIG8_XBINS4 1689 |
| 132 | 132 | #define EEPROM_CONFIG8_YBINS4 1695 |
| 133 | -#define EEPROM_CONFIG9_START 1710 | |
| 134 | -#define EEPROM_CONFIG9_END 1838 | |
| 133 | +#define EEPROM_CONFIG9_START 1710 | |
| 134 | +#define EEPROM_CONFIG9_END 1838 | |
| 135 | 135 | #define EEPROM_CONFIG10_START 1838 |
| 136 | 136 | #define EEPROM_CONFIG10_END 2030 |
| 137 | 137 | #define EEPROM_CONFIG12_XSIZE 2030 //[PJSC] |