• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

PJSC(Pump Jet Solenoid Controller)はArduinoを使用したバイク用燃料噴射コントローラです。このプロジェクトは、オープンソースECUプロジェクト『Speeduino』をベースにしています。


Commit MetaInfo

Revision20 (tree)
Time2018-08-23 14:32:50
Authormaharu

Log Message

Marge Speeduino Jun.2018 code.

Change Summary

Incremental Difference

--- branches/Ver1.00_base/reference/PJSC.ini (revision 19)
+++ branches/Ver1.00_base/reference/PJSC.ini (revision 20)
@@ -6,7 +6,7 @@
66 MTversion = 2.25
77
88 queryCommand = "Q"
9- signature = "speeduino - PJSC v1.0"
9+ signature = "speeduino - PJSC v1.0" ;[PJSC]
1010 versionInfo = "S" ;This info is what is displayed to user
1111
1212 [TunerStudio]
@@ -47,9 +47,22 @@
4747
4848 idleUnits = bits, U08, [0:2], "None", "On/Off", "Duty Cycle", "Duty Cycle", "Steps", "Steps"
4949
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
5155 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"
5259
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+
5366 [Constants]
5467
5568 ;----------------------------------------------------------------------------
@@ -101,60 +114,60 @@
101114 ;
102115 ;----------------------------------------------------------------------------
103116
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]
109122
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"
114127
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"
122135
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]
129142
130143 ;[PJSC] blockingFactor = 2048
131144 ;[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
136149 ;[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
141154
142155 ;New for TS 3.0.08ish upwards, define lists of standard I/O options
143156
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"
146159
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
158171
159172 ;Page 1 is the fuel map and axis bins only
160173 page = 1
@@ -163,24 +176,21 @@
163176 ; name = scalar, type, offset, units, scale, translate, lo, hi, digits
164177 veTable = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0
165178 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
172181
173182
183+
174184 ;--------------------------------------------------
175185 ;Start Page 2
176186 ;Page 2 is all general settings (Previously part of page 1)
177187 ;--------------------------------------------------
178188 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
180190 unused2-2 = scalar, U08, 1, "kPa", 1.0, 0.0, 0.0, 255, 0
181191 asePct = scalar, U08, 2, "%", 1.0, 0.0, 0.0, 95.0, 0
182192 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
184194 crankingPct = scalar, U08, 14, "%", 1.0, 0.0, 0.0, 255, 0
185195 ;[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"
186196 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 @@
209219 multiplyMAP = bits, U08, 26, [1:1], "No", "Yes"
210220 includeAFR = bits, U08, 26, [2:2], "No", "Yes"
211221 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
213223 indInjAng = bits, U08, 26, [7:7], "Disabled", "Enabled"
214224 injOpen = scalar, U08, 27, "ms", 0.1, 0.0, 0.1, 25.5, 1
215225 inj1Ang = scalar, U16, 28, "deg", 1.0, 0.0, 0.0, 360, 0
@@ -224,14 +234,14 @@
224234 nCylinders = bits, U08, 36, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
225235
226236 ; 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"
229239 nInjectors = bits, U08, 37, [4:7], "INVALID","1","2","3","4","5","6","INVALID","8","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID"
230240
231241 ; Config3
232242 engineType = bits, U08, 38, [0:0], "Even fire", "Odd fire"
233243 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"
235245 baroCorr = bits, U08, 38, [3:3], "Off", "On"
236246 injLayout = bits, U08, 38, [4:5], "Paired", "Semi-Sequential", "INVALID", "Sequential"
237247 perToothIgn = bits, U08, 38, [6:6], "No", "Yes"
@@ -253,10 +263,12 @@
253263 oddfire3 = scalar, U16, 53, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte)
254264 oddfire4 = scalar, U16, 55, "deg", 1.0, 0.0, 0.0, 720, 0 ; * ( 2 byte)
255265
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
260272
261273 iacCLminDuty = scalar, U08, 61, "%", 1.0, 0.0, 0.0, 100.0, 0 ; Minimum and maximum duty cycles when using closed loop idle
262274 iacCLmaxDuty = scalar, U08, 62, "%", 1.0, 0.0, 0.0, 100.0, 0
@@ -322,13 +334,8 @@
322334 page = 3
323335 advTable1 = array, U08, 0,[16x16], "deg", 1.0, -40, -40, 215.0, 0
324336 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
325338
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-
332339 ;--------------------------------------------------
333340 ;Start Page 4
334341 ;These are primarily ignition related settings (Previously part of page 2)
@@ -362,7 +369,7 @@
362369 ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
363370 ; name = scalar, type, offset, units, scale, translate, lo, hi, digits
364371 ;Dwell control
365- unused4-12a = bits, U08, 12, [0:0], "INVALID", "NOTHING"
372+ boostType = bits, U08, 12, [0:0], "Open Loop", "Closed Loop"
366373 useDwellLim = bits, U08, 12, [1:1], "Off", "On"
367374 sparkMode = bits, U08, 12, [2:4], "Wasted Spark", "Single Channel", "Wasted COP", "Sequential", "Rotary", "INVALID", "INVALID", "INVALID"
368375 TrigFilter = bits, U08, 12, [5:6], "Off", "Weak", "Medium", "Aggressive"
@@ -406,9 +413,9 @@
406413 dfcoHyster = scalar, U08, 61, "RPM", 1.0, 0.0, 100, 255.0, 0
407414 dfcoTPSThresh= scalar, U08, 62, "%", 1.0, 0.0, 0, 100.0, 0
408415 ;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"
412419
413420 unused4-64 = array, U08, 64, [63], "%", 1.0, 0.0, 0.0, 255, 0
414421 ;--------------------------------------------------
@@ -477,8 +484,8 @@
477484
478485 ; Launch Control
479486 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"
482489
483490 lnchSoftLim = scalar, U08, 49, "rpm", 100, 0.0, 100, 25500, 0
484491 lnchRetard = scalar, S08, 50, "deg", 1.0, 0.0, -30, 40, 0
@@ -561,7 +568,7 @@
561568 ; #if BOOSTPSI
562569 ; boostTable = array, U08, 0,[8x8], "PSI", 0.29007547546041846, -50.6625, 0, 74, 0
563570 ; #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
565572 ; #endif
566573 rpmBinsBoost = array, U08, 64,[ 8], "RPM", 100.0, 0.0, 100, 25500, 0
567574 tpsBinsBoost = array, U08, 72,[ 8], "TPS", 1.0, 0.0, 0.0, 255.0, 0
@@ -798,8 +805,38 @@
798805 flexAdvBins = array, U08, 63, [6], "%", 1.0, 0.0, 0.0, 250.0, 0
799806 flexAdvAdj = array, U08, 69, [6], "Deg", 1.0, 0.0, 0.0, 250.0, 0
800807
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+
802819
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+
803840 ;--------------------------------------------------
804841 ;Page 12 is the fuel map and axis bins only [PJSC]
805842 ;--------------------------------------------------
@@ -819,7 +856,6 @@
819856 ;#exit
820857 #endif
821858
822-
823859 ;-------------------------------------------------------------------------------
824860
825861 [ConstantsExtensions]
@@ -829,7 +865,7 @@
829865 requiresPowerCycle = reqFuel
830866 requiresPowerCycle = numTeeth
831867 requiresPowerCycle = missingTeeth
832- requiresPowerCycle = trigPatternSec
868+ requiresPowerCycle = trigPatternSec
833869 requiresPowerCycle = injOpen
834870 requiresPowerCycle = IgInv
835871 requiresPowerCycle = fanInv
@@ -858,6 +894,9 @@
858894 requiresPowerCycle = stagingEnabled
859895 requiresPowerCycle = resetControl
860896 requiresPowerCycle = resetControlPin
897+ requiresPowerCycle = n2o_enable
898+ requiresPowerCycle = n2o_arming_pin
899+ requiresPowerCycle = n2o_pin_polarity
861900 requiresPowerCycle = pjscFreq ;[PJSC]
862901 requiresPowerCycle = squirtDeviceType ; |
863902 requiresPowerCycle = multiVEmapEnabled ; |
@@ -871,7 +910,7 @@
871910 defaultValue = pinLayout, 1
872911 defaultValue = TrigPattern, 0
873912 defaultValue = useResync, 1
874- defaultValue = trigPatternSec, 0
913+ defaultValue = trigPatternSec, 0
875914 defaultValue = sparkMode, 0
876915 defaultValue = indInjAng, 0
877916 defaultValue = inj1Ang, 355
@@ -908,14 +947,18 @@
908947 defaultValue = boostSens, 2000
909948 defaultValue = boostIntv, 30
910949 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
914955 defaultValue = VVTasOnOff, 0
915956 defaultValue = stagingEnabled, 0
916- defaultValue = lnchCtrlTPS, 0
957+ defaultValue = lnchCtrlTPS, 0
917958 defaultValue = resetControl, 0
918959 defaultValue = bootloaderCaps, 0
960+ defaultValue = taeTaperMin, 1000
961+ defaultValue = taeTaperMax, 5000
919962 ; defaultValue = obd_address, 0
920963
921964 defaultValue = multiVEmapEnabled, 0 ;[PJSC]
@@ -966,8 +1009,20 @@
9661009 defaultValue = perToothIgn, 0
9671010 defaultValue = resetControlPin, 0
9681011
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+
9691023 controllerPriority = bootloaderCaps
9701024
1025+
9711026 [Menu]
9721027
9731028 ;----------------------------------------------------------------------------
@@ -997,35 +1052,36 @@
9971052 menuDialog = main
9981053
9991054 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"
10061061
1062+
10071063 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
10141071 subMenu = veMapSelectDialog, "VE Table select" ;[PJSC]
10151072 subMenu = veTable1Dialog, "&VE Table 1", 0 ; V
10161073 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
10191075 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
10221078
10231079 ;[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"
10271083 ;[PJSC] subMenu = dwell_correction_curve, "Dwell Compensation"
1028-;[PJSC] subMenu = iat_retard_curve, "&IAT Retard"
1084+;[PJSC] subMenu = iat_retard_curve, "&IAT Retard"
10291085 ;[PJSC] subMenu = rotary_ignition, "Rotary Ignition", { sparkMode == 4 }
10301086
10311087 menu = "&Starting/Idle"
@@ -1038,6 +1094,8 @@
10381094 ;[PJSC v1.10] subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 }
10391095 ;[PJSC v1.10] subMenu = iacStep_curve, "Idle - Stepper Motor", 7, { iacAlgorithm == 4 }
10401096 ;[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 }
10411099 subMenu = idleSettings, "Idle Control", { muxout1selection == 1 || muxout2selection == 1 } ;[PJSC v1.10] For MUX selection
10421100 subMenu = iacClosedLoop_curve, "Idle - Closed loop targets", 7, { (iacAlgorithm == 3 || iacAlgorithm == 5) && (muxout1selection == 1 || muxout2selection == 1) } ; |
10431101 subMenu = iacPwm_curve, "Idle - PWM Duty Cycle", 7, { iacAlgorithm == 2 && (muxout1selection == 1 || muxout2selection == 1) } ; V
@@ -1044,14 +1102,13 @@
10441102 subMenu = iacPwmCrank_curve, "Idle - PWM Cranking Duty Cycle", 7, { iacAlgorithm == 2 && (muxout1selection == 1 || muxout2selection == 1) } ;[PJSC v1.10] For MUX selection
10451103
10461104 menu = "&Accessories"
1047- subMenu = muxoutSetting, "MUX Output Port Setting" ;[PJSC v1.10]
1048- subMenu = std_separator ;[PJSC v1.10]
10491105 ;[PJSC v1.10] subMenu = fanSettings, "Thermo Fan"
10501106 ;[PJSC v1.10] subMenu = LaunchControl, "Launch Control / Flat Shift"
10511107 ;[PJSC v1.10] subMenu = fuelpump, "Fuel Pump"
1108+;[PJSC v1.10] subMenu = NitrousControl, "Nitrous"
10521109 ;[PJSC v1.10] subMenu = std_separator
10531110 ;[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 }
10551112 ;[PJSC v1.10] subMenu = std_separator
10561113 ;[PJSC v1.10] subMenu = vvtSettings, "VVT Control"
10571114 ;[PJSC v1.10] subMenu = vvtTbl, "VVT duty cycle", 8, { vvtEnabled }
@@ -1071,9 +1128,6 @@
10711128
10721129 subMenu = std_separator ;[PJSC]
10731130 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]
10771131
10781132 subMenu = std_separator
10791133
@@ -1096,9 +1150,9 @@
10961150 menuDialog = main
10971151 menu = "3D &Tuning Maps"
10981152 ;[PJSC] subMenu = veTable1Map, "Fuel Table"
1099- subMenu = veTable1Map, "Fuel Table 1"
1100- subMenu = veTable2Map, "Fuel Table 2"
11011153 ;[PJSC] subMenu = sparkMap, "Spark Table", 3
1154+ subMenu = veTable1Map, "Fuel Table 1" ;[PJSC]
1155+ subMenu = veTable2Map, "Fuel Table 2" ;[PJSC]
11021156 subMenu = afrTable1Map, "AFR Target Table"
11031157
11041158 #if enablehardware_test
@@ -1107,7 +1161,7 @@
11071161 ;[PJSC v1.10] subMenu = outputtest1, "Test Output Hardware"
11081162 subMenu = outputtest1, "Output Test Mode - PWM" ;[PJSC v1.10]
11091163 subMenu = outputtest2, "Output Test Mode - Pulse" ;[PJSC v1.10]
1110-##endif
1164+#endif
11111165
11121166 menu = "Help"
11131167 subMenu = helpGeneral, "Speeduino Help"
@@ -1116,24 +1170,24 @@
11161170 [SettingContextHelp]
11171171 ; constantName = "Help Text"
11181172 ; 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. "
11271181
1128- TrigPattern = "The type of input trigger decoder to be used."
1182+ TrigPattern = "The type of input trigger decoder to be used."
11291183 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."
11301184 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."
11371191 TrigEdge = "The Trigger edge of the primary sensor.\nLeading.\nTrailing."
11381192 TrigEdgeSec = "The Trigger edge of the secondary (Cam) sensor.\nLeading.\nTrailing."
11391193 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 @@
11401194
11411195 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"
11421196 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"
11441200
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+
11451203 fanInv = ""
11461204 fanHyster = "The number of degrees of hysteresis to be used in controlling the fan. Recommended values are between 2 and 5"
11471205
@@ -1156,6 +1214,7 @@
11561214 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"
11571215 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"
11581216 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."
11591218
11601219 oddfire2 = "The ATDC angle of channel 2 for oddfire engines. This is relative to the TDC angle of channel 1"
11611220 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 @@
11661225 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"
11671226
11681227 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"
11691230 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"
11701231 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."
11711232 ignCranklock = "On certain low resolution ignition patterns, the cranking timing can be locked to occur when a pulse is recieved."
@@ -1181,6 +1242,9 @@
11811242 flexAdvAdj = "Additional advance (in degrees) for the current ethanol % (Typically 0 @ 0%, 10-20 @ 100%)"
11821243 flexBoostAdj = "Adjustment, in kPa, to the boost target for the current ethanol %. Negative values are allowed to lower boost at lower ethanol % if necessary."
11831244
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+
11841248 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"
11851249 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"
11861250 flatSRetard = "The absolute timing (BTDC) that will be used when within the soft limit window"
@@ -1271,11 +1335,11 @@
12711335 cmdtestspk350dc = "this will cycle the output at 50% Duty cycle"
12721336 cmdtestspk450dc = "this will cycle the output at 50% Duty cycle"
12731337
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"
12761340
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"
12791343 #if resetcontrol_adv
12801344 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."
12811345 #else
@@ -1421,13 +1485,15 @@
14211485 field = "Output speed", tachoDiv
14221486
14231487 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
14261492
14271493 dialog = accelEnrichments_south, "Decelleration Fuel Cutoff (DFCO)"
14281494 field = "Enabled", dfcoEnabled
14291495 field = "TPS Threshold", dfcoTPSThresh, { dfcoEnabled }
1430- field = "Cutoff RPM", dfcoRPM, { dfcoEnabled }
1496+ field = "Cutoff RPM", dfcoRPM, { dfcoEnabled }
14311497 field = "RPM Hysteresis", dfcoHyster, { dfcoEnabled }
14321498
14331499 dialog = accelEnrichments_north_south, ""
@@ -1482,18 +1548,18 @@
14821548 panel = veTable1Dialog_north, North ;[PJSC]
14831549 panel = veTable1Dialog_south, South ;[PJSC]
14841550
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]
14871561
1488- dialog = veTable2Dialog_south, ""
1489- field = "Multiply VE value by MAP", multiplyMAP
1490- field = "Include AFR directly", includeAFR, { egoType == 2 }
14911562
1492- dialog = veTable2Dialog, "VE Table 2"
1493- panel = veTable2Dialog_north, North
1494- panel = veTable2Dialog_south, South
1495-
1496-
14971563 dialog = injChars, "Injector Characteristics"
14981564 field = "Squirt Device", squirtDeviceType ;[PJSC]
14991565 field = "PJSC solenoid freq.", pjscFreq, { squirtDeviceType == 1 } ;[PJSC]
@@ -1520,19 +1586,19 @@
15201586 dialog = egoControl, ""
15211587 topicHelp = "http://speeduino.com/wiki/index.php/AFR/O2"
15221588 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) }
15281594
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) }
15361602
15371603 dialog = fanSettings,"Fan Settings",7
15381604 field = "Fan Mode", fanEnable
@@ -1559,8 +1625,8 @@
15591625 field = "Maximum valve duty", iacCLmaxDuty, { iacAlgorithm == 3 }
15601626
15611627 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
15641630 field = "#Fast Idle"
15651631 field = "Fast idle temp", iacFastTemp, { iacAlgorithm == 1 }
15661632 panel = pwm_idle
@@ -1567,6 +1633,11 @@
15671633 ;[PJSC] panel = stepper_idle
15681634 panel = closedloop_idle
15691635
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+
15701641 dialog = fuelpump, "Fuel pump"
15711642 field = "Fuel pump pin", fuelPumpPin
15721643 field = "Fuel pump prime duration", fpPrime
@@ -1607,7 +1678,6 @@
16071678 field = "Primary base teeth", numTeeth, { TrigPattern == 0 || TrigPattern == 2 || TrigPattern == 11 }
16081679 field = "Primary trigger speed", TrigSpeed, { TrigPattern == 0 }
16091680 field = "Missing teeth", missingTeeth, { TrigPattern == 0 }
1610- field = "Secondary teeth", missingTeeth, { TrigPattern == 2 }
16111681 field = "Trigger angle multiplier", TrigAngMul, { TrigPattern == 11 }
16121682 field = "Trigger Angle ", TrigAng
16131683 field = "This number represents the angle ATDC when "
@@ -1616,9 +1686,9 @@
16161686 field = "Skip Revolutions", SkipCycles
16171687 field = "Note: This is the number of revolutions that will be skipped during"
16181688 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) }
16221692 field = "Trigger Filter", TrigFilter
16231693 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
16241694 ;[PJSC v1.10] field = ""
@@ -1657,6 +1727,12 @@
16571727 field = "Boost Cut", boostCutType
16581728 field = "Boost Limit", boostLimit, { boostCutType }
16591729
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+
16601736 dialog = RevLimiterS, "Rev Limiter", 4
16611737 topicHelp = "http://speeduino.com/wiki/index.php/Rev_Limits"
16621738 field = "Rev Limiter"
@@ -1691,7 +1767,37 @@
16911767 field = "Soft rev window", flatSSoftWin, { flatSEnable }
16921768 field = "Soft limit absolute timing", flatSRetard, { flatSEnable }
16931769
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
16941777
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+
16951801 dialog = OLED, "OLED Display", 2
16961802 field = "Display Type", display
16971803 field = "#Note"
@@ -1761,19 +1867,20 @@
17611867 dialog = boostSettings, "Boost Control"
17621868 topicHelp = "http://speeduino.com/wiki/index.php/Boost_Control"
17631869 field = "Boost Control Enabled", boostEnabled
1870+ field = "Boost control type", boostType
17641871 field = "Boost output pin", boostPin, { boostEnabled }
17651872 field = "Boost solenoid freq.", boostFreq, { boostEnabled }
17661873
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 }
17691876 panel = boostCut
17701877 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 }
17771884
17781885
17791886 dialog = vvtSettings, "VVT Control"
@@ -2229,7 +2336,6 @@
22292336 cmdtestinjstart = "E\x02\x13" ;[PJSC v1.10]
22302337 cmdtestinjstop = "E\x02\x14" ;[PJSC v1.10]
22312338
2232-
22332339 cmdtestspk1on = "E\x03\x01"
22342340 cmdtestspk1off = "E\x03\x02"
22352341 cmdtestspk150dc = "E\x03\x03"
@@ -2406,11 +2512,8 @@
24062512 topicHelp = "http://speeduino.com/wiki/index.php/Tuning"
24072513 ; constant, variable
24082514 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: "
24142517 zBins = veTable
24152518
24162519 gridHeight = 2.0
@@ -2419,11 +2522,8 @@
24192522
24202523 table = sparkTbl, sparkMap, "Ignition Advance Table", 3
24212524 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: "
24272527 zBins = advTable1
24282528 gridHeight = 3.0
24292529 upDownLabel = "ADVANCED", "RETARDED"
@@ -2441,11 +2541,12 @@
24412541 upDownLabel = "RICHER", "LEANER"
24422542 gridOrient = 250, 0, 340
24432543
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
24492550 xBins = rpmBinsBoost, rpm
24502551 yBins = tpsBinsBoost, throttle
24512552 zBins = boostTable
@@ -2620,22 +2721,22 @@
26202721
26212722 #if CAN_COMMANDS
26222723 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
26392740 #endif
26402741
26412742 gaugeCategory = "System Data"
@@ -2663,7 +2764,7 @@
26632764 gauge5 = afrGauge
26642765 gauge6 = iatGauge
26652766 gauge7 = cltGauge
2666- gauge6 = batteryVoltage
2767+ gauge8 = batteryVoltage
26672768
26682769 ;----------------------------------------------------------------------------
26692770 ; Indicators
@@ -2687,6 +2788,7 @@
26872788 indicator = { sync }, "No Sync", "Sync", white, black, green, black
26882789 indicator = { resetLockOn }, "Reset Lock OFF","Reset Lock ON", red, black, green, black
26892790 indicator = { bootloaderCaps > 0 }, "Std. Boot", "Custom Boot", white, black, white, black
2791+ indicator = { nitrousOn }, "Nitrous Off", "Nitrous On", white, black, red, black
26902792
26912793 ;-------------------------------------------------------------------------------
26922794
@@ -2697,30 +2799,29 @@
26972799 ; you change it.
26982800
26992801 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
27032804
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
27242825 map = scalar, U16, 4, "kpa", 1.000, 0.000
27252826 iatRaw = scalar, U08, 6, "°C", 1.000, 0.000
27262827 coolantRaw = scalar, U08, 7, "°C", 1.000, 0.000
@@ -2744,14 +2845,14 @@
27442845 boostTarget = scalar, U08, 29, "kPa", 2.000, 0.000
27452846 boostDuty = scalar, U08, 30, "%", 1.000, 0.000
27462847 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]
27552856 rpmDOT = scalar, S16, 32, "rpm/s", 1.000, 0.000
27562857 flex = scalar, U08, 34, "%", 1.000, 0.000
27572858 flexFuelCor = scalar, U08, 35, "%", 1.000, 0.000
@@ -2759,51 +2860,55 @@
27592860
27602861 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
27612862 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]
27642865 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
27832884 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]
27862887 pulseWidth2 = scalar, U16, 75, "ms", 0.001, 0.000
27872888 pulseWidth3 = scalar, U16, 77, "ms", 0.001, 0.000
27882889 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
27902891 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]
27922894 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
27942896 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
28062910
2911+
28072912 #if CELSIUS
28082913 coolant = { coolantRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives
28092914 iat = { iatRaw - 40 } ; Temperature readings are offset by 40 to allow for negatives
@@ -2836,6 +2941,12 @@
28362941 map_inhg = { (baro - map) * 0.2953007 } ;in-Hg
28372942 map_vacboost = { map < baro ? -map_inhg : map_psi }
28382943
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+
28392950 ;-------------------------------------------------------------------------------
28402951
28412952 [Datalog]
@@ -2853,50 +2964,51 @@
28532964 ; Type - Data type of output, converted before writing.
28542965 ; Format - C-style output format of data.
28552966 ;
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"
28742985 ;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"
28782989 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"
28993010 entry = baro, "Baro Pressure",int, "%d"
3011+ entry = nitrousOn, "Nitrous On", int, "%d", { n2o_enable > 0 }
29003012 entry = valvePosition, "ExValve Pos", int, "%d", { exValveCaptureEnabled } ;[PJSC]
29013013 entry = sparkedAngle, "Spark Angle", int, "%d", { exTrigModeSelect == 1 } ;[PJSC]
29023014 entry = dutyFreq, "Duty Frequency", int, "%d", { dutyPulseCaptureEnabled } ;[PJSC]
@@ -2905,14 +3017,14 @@
29053017 entry = dutyRatio2, "Duty Ratio2", int, "%d", { dutyPulseCaptureEnabled2 } ;[PJSC]
29063018
29073019 #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"
29163028 #endif
29173029
29183030
--- branches/Ver1.00_base/speeduino/auxiliaries.h (revision 19)
+++ branches/Ver1.00_base/speeduino/auxiliaries.h (revision 20)
@@ -5,6 +5,7 @@
55 void boostControl();
66 void vvtControl();
77 void initialiseFan();
8+void nitrousControl();
89
910 #if defined(CORE_AVR)
1011 #define ENABLE_BOOST_TIMER() TIMSK1 |= (1 << OCIE1A)
@@ -59,12 +60,26 @@
5960 #define BOOST_PIN_HIGH() *boost_pin_port |= (boost_pin_mask)
6061 #define VVT_PIN_LOW() *vvt_pin_port &= ~(vvt_pin_mask)
6162 #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)
6270
63-
6471 volatile byte *boost_pin_port;
6572 volatile byte boost_pin_mask;
6673 volatile byte *vvt_pin_port;
6774 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;
6883
6984 volatile bool boost_pwm_state;
7085 unsigned int boost_pwm_max_count; //Used for variable PWM frequency
--- branches/Ver1.00_base/speeduino/comms.h (revision 19)
+++ branches/Ver1.00_base/speeduino/comms.h (revision 20)
@@ -14,9 +14,8 @@
1414 #define ve2MapPage 11 //[PJSC] Config Page 11
1515 #define ve2SetPage 12 //[PJSC] Config Page 12
1616
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
2019
2120 byte currentPage = 1;//Not the same as the speeduino config page numbers
2221 bool isMap = true;
--- branches/Ver1.00_base/speeduino/corrections.h (revision 19)
+++ branches/Ver1.00_base/speeduino/corrections.h (revision 20)
@@ -26,6 +26,7 @@
2626 static inline int8_t correctionFlexTiming(int8_t);
2727 static inline int8_t correctionIATretard(int8_t);
2828 static inline int8_t correctionSoftRevLimit(int8_t);
29+static inline int8_t correctionNitrous(int8_t);
2930 static inline int8_t correctionSoftLaunch(int8_t);
3031 static inline int8_t correctionSoftFlatShift(int8_t);
3132
--- branches/Ver1.00_base/speeduino/crankMaths.h (nonexistent)
+++ branches/Ver1.00_base/speeduino/crankMaths.h (revision 20)
@@ -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
--- branches/Ver1.00_base/speeduino/decoders.h (revision 19)
+++ branches/Ver1.00_base/speeduino/decoders.h (revision 20)
@@ -12,7 +12,7 @@
1212 #endif
1313
1414 static inline void addToothLogEntry(unsigned long);
15-static inline uint16_t stdGetRPM();
15+static inline uint16_t stdGetRPM(uint16_t degreesOver);
1616 static inline void setFilter(unsigned long);
1717 static inline int crankingGetRPM(byte);
1818 static inline void doPerToothTiming(uint16_t crankAngle);
@@ -28,7 +28,7 @@
2828 uint16_t getRPM_DualWheel();
2929 int getCrankAngle_DualWheel(int timePerDegree);
3030
31-void captureExtTrigger(); //[PJSC] For External Trigger
31+void captureExtTrigger(); //[PJSC] For External Trigger
3232 void captureDutyPulseONtime(); //[PJSC] For capturing duty pulse
3333 void captureDutyPulseOFFtime(); //[PJSC] For capturing duty pulse
3434 void captureDutyPulseONtime2(); //[PJSC] For capturing duty pulse
@@ -87,4 +87,7 @@
8787 #define LONG 0;
8888 #define SHORT 1;
8989
90+#define CRANK_SPEED 0
91+#define CAM_SPEED 1
92+
9093 #endif
--- branches/Ver1.00_base/speeduino/globals.h (revision 19)
+++ branches/Ver1.00_base/speeduino/globals.h (revision 20)
@@ -115,7 +115,7 @@
115115 #define BIT_TIMER_30HZ 4
116116
117117 #define BIT_STATUS3_RESET_PREVENT 0 //Indicates whether reset prevention is enabled
118-#define BIT_STATUS3_UNUSED1 1
118+#define BIT_STATUS3_NITROUS 1
119119 #define BIT_STATUS3_UNUSED2 2
120120 #define BIT_STATUS3_UNUSED3 3
121121 #define BIT_STATUS3_UNUSED4 4
@@ -174,23 +174,30 @@
174174 #define HARD_CUT_FULL 0
175175 #define HARD_CUT_ROLLING 1
176176
177-#define SIZE_BYTE 8
178-#define SIZE_INT 16
177+#define SIZE_BYTE 8
178+#define SIZE_INT 16
179179
180-#define EVEN_FIRE 0
181-#define ODD_FIRE 1
180+#define EVEN_FIRE 0
181+#define ODD_FIRE 1
182182
183183 #define EGO_ALGORITHM_SIMPLE 0
184184 #define EGO_ALGORITHM_PID 2
185185
186186 #define STAGING_MODE_TABLE 0
187-#define STAGING_MODE_AUTO 1
187+#define STAGING_MODE_AUTO 1
188188
189+#define NITROUS_OFF 0
190+#define NITROUS_STAGE1 1
191+#define NITROUS_STAGE2 2
192+
189193 #define RESET_CONTROL_DISABLED 0
190194 #define RESET_CONTROL_PREVENT_WHEN_RUNNING 1
191195 #define RESET_CONTROL_PREVENT_ALWAYS 2
192196 #define RESET_CONTROL_SERIAL_COMMAND 3
193197
198+#define OPEN_LOOP_BOOST 0
199+#define CLOSED_LOOP_BOOST 1
200+
194201 #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
195202 #define engineSquirtsPerCycle 2 //Would be 1 for a 2 stroke
196203
@@ -255,7 +262,7 @@
255262 struct table2D flexAdvTable; //6 bin flex fuel correction table for timing advance (2D)
256263 struct table2D flexBoostTable; //6 bin flex fuel correction table for boost adjustments (2D)
257264
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
259266 volatile byte *inj1_pin_port;
260267 volatile byte inj1_pin_mask;
261268 volatile byte *inj2_pin_port;
@@ -300,7 +307,7 @@
300307 volatile byte *triggerSec_pin_port;
301308 volatile byte triggerSec_pin_mask;
302309
303-volatile byte captureDutyPulseInterrupt; //[PJSC]
310+volatile byte captureDutyPulseInterrupt; //[PJSC] For capture duty pulse
304311 volatile byte captureDutyPulseInterrupt2; //[PJSC] For capture duty pulse
305312 volatile unsigned int tempPWvalue1; //[PJSC] Multi VE Map support
306313 volatile unsigned int tempPWvalue2; //[PJSC] Multi VE Map support
@@ -377,6 +384,7 @@
377384 byte flexIgnCorrection; //Amount of additional advance being applied based on flex
378385 byte afrTarget;
379386 byte idleDuty;
387+ bool idleUpActive;
380388 bool fanOn; //Whether or not the fan is turned on
381389 volatile byte ethanolPct; //Ethanol reading (if enabled). 0 = No ethanol, 100 = pure ethanol. Eg E85 = 85.
382390 unsigned long TAEEndTime; //The target end time used whenever TAE is turned on
@@ -411,9 +419,11 @@
411419 uint16_t crankRPM = 400; //The actual cranking RPM limit. Saves us multiplying it everytime from the config page
412420 volatile byte status3;
413421 int16_t flexBoostCorrection; //Amount of boost added based on flex
422+ byte nitrous_status;
414423 byte nSquirts;
415424 byte nChannels; //Number of fuel and ignition channels
416425 int16_t fuelLoad;
426+ int16_t ignLoad;
417427 byte exValvePosition; //[PJSC] For External Trigger
418428 byte exValvePositionADC; //[PJSC] For External Trigger
419429 int extTriggerAngle; //[PJSC] For External Trigger
@@ -503,7 +513,7 @@
503513
504514 //config2 in ini
505515 byte fuelAlgorithm : 3;
506- byte unused2_37d : 1;
516+ byte fixAngEnable : 1; //Whether fixed/locked timing is enabled
507517 byte nInjectors : 4; //Number of injectors
508518
509519
@@ -510,7 +520,7 @@
510520 //config3 in ini
511521 byte engineType : 1;
512522 byte flexEnabled : 1;
513- byte algorithm : 1; //"Speed Density", "Alpha-N"
523+ byte unused2_38c : 1; //"Speed Density", "Alpha-N"
514524 byte baroCorr : 1;
515525 byte injLayout : 2;
516526 byte perToothIgn : 1;
@@ -531,11 +541,15 @@
531541 uint16_t oddfire2; //The ATDC angle of channel 2 for oddfire
532542 uint16_t oddfire3; //The ATDC angle of channel 3 for oddfire
533543 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;
538544
545+ byte idleUpPin : 6;
546+ byte idleUpPolarity : 1;
547+ byte idleUpEnabled : 1;
548+
549+ byte idleUpAdder;
550+ byte taeTaperMin;
551+ byte taeTaperMax;
552+
539553 byte iacCLminDuty;
540554 byte iacCLmaxDuty;
541555 byte boostMinDuty;
@@ -614,7 +628,7 @@
614628
615629 byte StgCycles; //The number of initial cycles before the ignition should fire when first cranking
616630
617- byte dwellCont : 1; //Fixed duty dwell control
631+ byte boostType : 1; //Open or closed loop boost control
618632 byte useDwellLim : 1; //Whether the dwell limiter is off or on
619633 byte sparkMode : 3; //Spark output mode (Eg Wasted spark, single channel or Wasted COP)
620634 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 @@
829843 uint8_t flexAdvAdj[6]; //Additional advance (in degrees) @ current ethanol (typically 0 @ 0%, 10-20 @ 100%)
830844 //And another three corn rows die.
831845
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;
833852
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+
834872 #if defined(CORE_AVR)
835873 };
836874 #else
@@ -870,14 +908,15 @@
870908 byte pinFuelPump; //Fuel pump on/off
871909 byte pinIdle1; //Single wire idle control
872910 byte pinIdle2; //2 wire idle control (Not currently used)
911+byte pinIdleUp; //Input for triggering Idle Up
873912 byte pinSpareTemp1; // Future use only
874913 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
881920 byte pinSpareHOut1; //spare high current output
882921 byte pinSpareHOut2; // spare high current output
883922 byte pinSpareLOut1; // spare low current output
@@ -886,9 +925,9 @@
886925 byte pinSpareLOut4;
887926 byte pinSpareLOut5;
888927 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
892931 byte pinStepperDir; //Direction pin for the stepper motor driver
893932 byte pinStepperStep; //Step pin for the stepper motor driver
894933 byte pinStepperEnable; //Turning the DRV8825 driver on/off
@@ -919,7 +958,7 @@
919958 extern struct config6 configPage6;
920959 extern struct config9 configPage9;
921960 extern struct config10 configPage10;
922-extern struct config11 configPage11;
961+extern struct config11 configPage11; //[PJSC]
923962 //[PJSC]extern struct config12 configPage12; //[PJSC]
924963 extern unsigned long currentLoopTime; //The time the current loop started (uS)
925964 extern unsigned long previousLoopTime; //The time the previous loop started (uS)
--- branches/Ver1.00_base/speeduino/maths.h (revision 19)
+++ branches/Ver1.00_base/speeduino/maths.h (revision 20)
@@ -4,14 +4,6 @@
44 int fastMap1023toX(int, int);
55 unsigned long percentage(byte, unsigned long);
66
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)
157 #define DIV_ROUND_CLOSEST(n, d) ((((n) < 0) ^ ((d) < 0)) ? (((n) - (d)/2)/(d)) : (((n) + (d)/2)/(d)))
168
179 //This is a dedicated function that specifically handles the case of mapping 0-1023 values into a 0 to X range
--- branches/Ver1.00_base/speeduino/scheduler.h (revision 19)
+++ branches/Ver1.00_base/speeduino/scheduler.h (revision 20)
@@ -367,14 +367,15 @@
367367 #endif
368368
369369 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);
378379 void setIgnitionSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)());
379380 void setIgnitionSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)());
380381 void setIgnitionSchedule3(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)());
--- branches/Ver1.00_base/speeduino/src/PID_v1/PID_v1.cpp (revision 19)
+++ branches/Ver1.00_base/speeduino/src/PID_v1/PID_v1.cpp (revision 20)
@@ -29,12 +29,12 @@
2929 PID::SetOutputLimits(0, 255); //default output limit corresponds to
3030 //the arduino pwm limits
3131
32- //SampleTime = 100; //default Controller Sample Time is 0.1 seconds
32+ SampleTime = 100; //default Controller Sample Time is 0.1 seconds
3333
3434 PID::SetControllerDirection(ControllerDirection);
3535 PID::SetTunings(Kp, Ki, Kd);
3636
37- //lastTime = millis()-SampleTime;
37+ lastTime = millis()-SampleTime;
3838 }
3939
4040
@@ -62,8 +62,8 @@
6262 /*Compute PID Output*/
6363 long output = (kp * error)/100 + ITerm- (kd * dInput)/100;
6464
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; }
6767 *myOutput = output;
6868
6969 /*Remember some variables for next time*/
@@ -193,9 +193,9 @@
193193 * functions query the internal state of the PID. they're here for display
194194 * purposes. this are the functions the PID Front-end uses for example
195195 ******************************************************************************/
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;}
199199 int PID::GetMode(){ return inAuto ? AUTOMATIC : MANUAL;}
200200 int PID::GetDirection(){ return controllerDirection;}
201201
@@ -239,7 +239,7 @@
239239 if(timeChange >= SampleTime)
240240 {
241241 /*Compute all the working error variables*/
242- long input = *myInput;
242+ long input = *myInput;
243243 long error = *mySetpoint - input;
244244 ITerm += (ki * error)/1000; //Note that ki is multiplied by 1000 rather than 100, so it must be divided by 1000 here
245245 if(ITerm > outMax) { ITerm = outMax; }
--- branches/Ver1.00_base/speeduino/src/PID_v1/PID_v1.h (revision 19)
+++ branches/Ver1.00_base/speeduino/src/PID_v1/PID_v1.h (revision 20)
@@ -45,9 +45,9 @@
4545
4646
4747 //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
5151 int GetMode(); // inside the PID.
5252 int GetDirection(); //
5353
@@ -54,13 +54,13 @@
5454 private:
5555 void Initialize();
5656
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; //
6060
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
6464
6565 int controllerDirection;
6666
--- branches/Ver1.00_base/speeduino/storage.h (revision 19)
+++ branches/Ver1.00_base/speeduino/storage.h (revision 20)
@@ -130,8 +130,8 @@
130130 #define EEPROM_CONFIG8_MAP4 1653
131131 #define EEPROM_CONFIG8_XBINS4 1689
132132 #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
135135 #define EEPROM_CONFIG10_START 1838
136136 #define EEPROM_CONFIG10_END 2030
137137 #define EEPROM_CONFIG12_XSIZE 2030 //[PJSC]