From a480996cfc26246f859dbc2f743427ab0f664eed Mon Sep 17 00:00:00 2001 From: darren siepka Date: Fri, 29 Jun 2018 23:03:56 +0100 Subject: [PATCH 1/3] add option to use can channels for local input pins --- reference/speeduino.ini | 611 +++++++++++++++++++++++++++------------- speeduino/globals.h | 95 +++++-- speeduino/sensors.h | 3 +- speeduino/sensors.ino | 21 ++ speeduino/speeduino.ino | 86 +++--- 5 files changed, 558 insertions(+), 258 deletions(-) diff --git a/reference/speeduino.ini b/reference/speeduino.ini index 8d1e1a8c..44211d06 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -59,6 +59,22 @@ fuelLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 ignLoadMax = scalar, U08, "", 1, 0, 0, 511, 0 + AUXin00Alias = string, ASCII, 20 + AUXin01Alias = string, ASCII, 20 + AUXin02Alias = string, ASCII, 20 + AUXin03Alias = string, ASCII, 20 + AUXin04Alias = string, ASCII, 20 + AUXin05Alias = string, ASCII, 20 + AUXin06Alias = string, ASCII, 20 + AUXin07Alias = string, ASCII, 20 + AUXin08Alias = string, ASCII, 20 + AUXin09Alias = string, ASCII, 20 + AUXin10Alias = string, ASCII, 20 + AUXin11Alias = string, ASCII, 20 + AUXin12Alias = string, ASCII, 20 + AUXin13Alias = string, ASCII, 20 + AUXin14Alias = string, ASCII, 20 + AUXin15Alias = string, ASCII, 20 [Constants] @@ -114,7 +130,7 @@ endianness = little nPages = 10 - pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 128, 192 + pageSize = 288, 128, 288, 128, 288, 128, 240, 192, 192, 192 ;burnCommand = "B" ;pageActivate = "P\001", "P\002", "P\003", "P\004", "P\005", "P\006", "P\007", "P\010", "P\011", "P\012", "P\013" @@ -122,7 +138,7 @@ ;pageValueWrite = "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%2o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v", "W%o%v" ; New commands - ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 128, 192 + ;pageSize = 288, 128, 288, 128, 288, 128, 128, 160, 192, 192, 192 pageIdentifier = "\$tsCanId\x01", "\$tsCanId\x02", "\$tsCanId\x03", "\$tsCanId\x04", "\$tsCanId\x05", "\$tsCanId\x06", "\$tsCanId\x07", "\$tsCanId\x08", "\$tsCanId\x09", "\$tsCanId\x0A" burnCommand = "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i", "b%2i" pageReadCommand = "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v", "p%2i%2o%2c%v" @@ -142,8 +158,12 @@ #define PIN_OUT10inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - - #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" + #define PIN_16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + + #define ANALOG_PIN = "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" + #define DIGITAL_PIN = "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define ANALOG_DIG_PIN_LIST = $DIGITAL_PIN, $ANALOG_PIN, $PIN_16inv + #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" #define CAN_ADDRESS_HEX_inv255 = $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT10inv, "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define CAN_ADDRESS_HEX_00XX = "INVALID", "0x001", "0x002", "0x003", "0x004", "0x005", "0x006", "0x007", "0x008", "0x009", "0x00A", "0x00B", "0x00C", "0x00D", "0x00E", "0x00F", "0x010", "0x011", "0x012", "0x013", "0x014", "0x015", "0x016", "0x017", "0x018", "0x019", "0x01A", "0x01B", "0x01C", "0x01D", "0x01E", "0x01F", "0x020", "0x021", "0x022", "0x023", "0x024", "0x025", "0x026", "0x027", "0x028", "0x029", "0x02A", "0x02B", "0x02C", "0x02D", "0x02E", "0x02F", "0x030", "0x031", "0x032", "0x033", "0x034", "0x035", "0x036", "0x037", "0x038", "0x039", "0x03A", "0x03B", "0x03C", "0x03D", "0x03E", "0x03F", "0x040", "0x041", "0x042", "0x043", "0x044", "0x045", "0x046", "0x047", "0x048", "0x049", "0x04A", "0x04B", "0x04C", "0x04D", "0x04E", "0x04F", "0x050", "0x051", "0x052", "0x053", "0x054", "0x055", "0x056", "0x057", "0x058", "0x059", "0x05A", "0x05B", "0x05C", "0x05D", "0x05E", "0x05F" ,"0x060", "0x061", "0x062", "0x063", "0x064", "0x065", "0x066", "0x067", "0x068", "0x069", "0x06A", "0x06B", "0x06C", "0x06D", "0x06E", "0x06F", "0x070", "0x071", "0x072", "0x073", "0x074", "0x075", "0x076", "0x077", "0x078", "0x079", "0x07A", "0x07B", "0x07C", "0x07D", "0x07E", "0x07F", "0x080", "0x081", "0x082", "0x083", "0x084", "0x085", "0x086", "0x087", "0x088", "0x089", "0x08A", "0x08B", "0x08C", "0x08D", "0x08E", "0x08F" ,"0x090", "0x091", "0x092", "0x093", "0x094", "0x095", "0x096", "0x097", "0x098", "0x099", "0x09A", "0x09B", "0x09C", "0x09D", "0x09E", "0x09F", "0x0A0", "0x0A1", "0x0A2", "0x0A3", "0x0A4", "0x0A5", "0x0A6", "0x0A7", "0x0A8", "0x0A9", "0x0AA", "0x0AB", "0x0AC", "0x0AD", "0x0AE", "0x0AF", "0x0B0", "0x0B1", "0x0B2", "0x0B3", "0x0B4", "0x0B5", "0x0B6", "0x0B7", "0x0B8", "0x0B9", "0x0BA", "0x0BB", "0x0BC", "0x0BD", "0x0BE", "0x0BF" ,"0x0C0", "0x0C1", "0x0C2", "0x0C3", "0x0C4", "0x0C5", "0x0C6", "0x0C7", "0x0C8", "0x0C9", "0x0CA", "0x0CB", "0x0CC", "0x0CD", "0x0CE", "0x0CF", "0x0D0", "0x0D1", "0x0D2", "0x0D3", "0x0D4", "0x0D5", "0x0D6", "0x0D7", "0x0D8", "0x0D9", "0x0DA", "0x0DB", "0x0DC", "0x0DD", "0x0DE", "0x0DF", "0x0E0", "0x0E1", "0x0E2", "0x0E3", "0x0E4", "0x0E5", "0x0E6", "0x0E7", "0x0E8", "0x0E9", "0x0EA", "0x0EB", "0x0EC", "0x0ED", "0x0EE", "0x0EF" ,"0x0F0", "0x0F1", "0x0F2", "0x0F3", "0x0F4", "0x0F5", "0x0F6", "0x0F7", "0x0F8", "0x0F9", "0x0FA", "0x0FB", "0x0FC", "0x0FD", "0x0FE", "0x0FF" #define CAN_ADDRESS_HEX_01XX = "0x100", "0x101", "0x102", "0x103", "0x104", "0x105", "0x106", "0x107", "0x108", "0x109", "0x10A", "0x10B", "0x10C", "0x10D", "0x10E", "0x10F", "0x110", "0x111", "0x112", "0x113", "0x114", "0x115", "0x116", "0x117", "0x118", "0x119", "0x11A", "0x11B", "0x11C", "0x11D", "0x11E", "0x11F", "0x120", "0x121", "0x122", "0x123", "0x124", "0x125", "0x126", "0x127", "0x128", "0x129", "0x12A", "0x12B", "0x12C", "0x12D", "0x12E", "0x12F", "0x130", "0x131", "0x132", "0x133", "0x134", "0x135", "0x136", "0x137", "0x138", "0x139", "0x13A", "0x13B", "0x13C", "0x13D", "0x13E", "0x13F", "0x140", "0x141", "0x142", "0x143", "0x144", "0x145", "0x146", "0x147", "0x148", "0x149", "0x14A", "0x14B", "0x14C", "0x14D", "0x14E", "0x14F", "0x150", "0x151", "0x152", "0x153", "0x154", "0x155", "0x156", "0x157", "0x158", "0x159", "0x15A", "0x15B", "0x15C", "0x15D", "0x15E", "0x15F" ,"0x160", "0x161", "0x162", "0x163", "0x164", "0x165", "0x166", "0x167", "0x168", "0x169", "0x16A", "0x16B", "0x16C", "0x16D", "0x16E", "0x16F", "0x170", "0x171", "0x172", "0x173", "0x174", "0x175", "0x176", "0x177", "0x178", "0x179", "0x17A", "0x17B", "0x17C", "0x17D", "0x17E", "0x17F", "0x180", "0x181", "0x182", "0x183", "0x184", "0x185", "0x186", "0x187", "0x188", "0x189", "0x18A", "0x18B", "0x18C", "0x18D", "0x18E", "0x18F" ,"0x190", "0x191", "0x192", "0x193", "0x194", "0x195", "0x196", "0x197", "0x198", "0x199", "0x19A", "0x19B", "0x19C", "0x19D", "0x19E", "0x19F", "0x1A0", "0x1A1", "0x1A2", "0x1A3", "0x1A4", "0x1A5", "0x1A6", "0x1A7", "0x1A8", "0x1A9", "0x1AA", "0x1AB", "0x1AC", "0x1AD", "0x1AE", "0x1AF", "0x1B0", "0x1B1", "0x1B2", "0x1B3", "0x1B4", "0x1B5", "0x1B6", "0x1B7", "0x1B8", "0x1B9", "0x1BA", "0x1BB", "0x1BC", "0x1BD", "0x1BE", "0x1BF" ,"0x1C0", "0x1C1", "0x1C2", "0x1C3", "0x1C4", "0x1C5", "0x1C6", "0x1C7", "0x1C8", "0x1C9", "0x1CA", "0x1CB", "0x1CC", "0x1CD", "0x1CE", "0x1CF", "0x1D0", "0x1D1", "0x1D2", "0x1D3", "0x1D4", "0x1D5", "0x1D6", "0x1D7", "0x1D8", "0x1D9", "0x1DA", "0x1DB", "0x1DC", "0x1DD", "0x1DE", "0x1DF", "0x1E0", "0x1E1", "0x1E2", "0x1E3", "0x1E4", "0x1E5", "0x1E6", "0x1E7", "0x1E8", "0x1E9", "0x1EA", "0x1EB", "0x1EC", "0x1ED", "0x1EE", "0x1EF" ,"0x1F0", "0x1F1", "0x1F2", "0x1F3", "0x1F4", "0x1F5", "0x1F6", "0x1F7", "0x1F8", "0x1F9", "0x1FA", "0x1FB", "0x1FC", "0x1FD", "0x1FE", "0x1FF" @@ -558,7 +578,7 @@ page = 8 #endif ;-------------------------------------------------- -;CANBUS control (Page 9) +;CANBUS control and Auxillary io(Page 9) ;-------------------------------------------------- page = 9 #if CAN_COMMANDS @@ -567,148 +587,212 @@ page = 9 enable_canbus = bits, U08, 0, [0:1], "Disable", "On Via Secondary Serial", "INVALID", "INVALID" #endif enable_candata_in = bits, U08, 0, [2:2], "Off", "On" - - caninput_sel0 = bits, U16, 1, [0:0], "Off", "On" - caninput_sel1 = bits, U16, 1, [1:1], "Off", "On" - caninput_sel2 = bits, U16, 1, [2:2], "Off", "On" - caninput_sel3 = bits, U16, 1, [3:3], "Off", "On" - caninput_sel4 = bits, U16, 1, [4:4], "Off", "On" - caninput_sel5 = bits, U16, 1, [5:5], "Off", "On" - caninput_sel6 = bits, U16, 1, [6:6], "Off", "On" - caninput_sel7 = bits, U16, 1, [7:7], "Off", "On" - caninput_sel8 = bits, U16, 1, [8:8], "Off", "On" - caninput_sel9 = bits, U16, 1, [9:9], "Off", "On" - caninput_sel10 = bits, U16, 1, [10:10], "Off", "On" - caninput_sel11 = bits, U16, 1, [11:11], "Off", "On" - caninput_sel12 = bits, U16, 1, [12:12], "Off", "On" - caninput_sel13 = bits, U16, 1, [13:13], "Off", "On" - caninput_sel14 = bits, U16, 1, [14:14], "Off", "On" - caninput_sel15 = bits, U16, 1, [15:15], "Off", "On" - - ;caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 - caninput_source_can_address0 = bits, U16, 3, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address1 = bits, U16, 5, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address2 = bits, U16, 7, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address3 = bits, U16, 9, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address4 = bits, U16, 11, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address5 = bits, U16, 13, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address6 = bits, U16, 15, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address7 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address8 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address9 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address10 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address11 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address12 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address13 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address14 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX - caninput_source_can_address15 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX + #if CAN_COMMANDS + caninput_sel0 = bits, U08, 1, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel1 = bits, U08, 2, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel2 = bits, U08, 3, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel3 = bits, U08, 4, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel4 = bits, U08, 5, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel5 = bits, U08, 6, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel6 = bits, U08, 7, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel7 = bits, U08, 8, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel8 = bits, U08, 9, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel9 = bits, U08, 10, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel10 = bits, U08, 11, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel11 = bits, U08, 12, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel12 = bits, U08, 13, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel13 = bits, U08, 14, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel14 = bits, U08, 15, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + caninput_sel15 = bits, U08, 16, [0:1], "Off", "EXT / CAN", "Analog_local", "Digital_local" + #else + caninput_sel0 = bits, U08, 1, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel1 = bits, U08, 2, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel2 = bits, U08, 3, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel3 = bits, U08, 4, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel4 = bits, U08, 5, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel5 = bits, U08, 6, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel6 = bits, U08, 7, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel7 = bits, U08, 8, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel8 = bits, U08, 9, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel9 = bits, U08, 10, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel10 = bits, U08, 11, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel11 = bits, U08, 12, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel12 = bits, U08, 13, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel13 = bits, U08, 14, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel14 = bits, U08, 15, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + caninput_sel15 = bits, U08, 16, [0:1], "Off", "INVALID", "Analog_local", "Digital_local" + #endif + ;caninput_param_group = array , U16, 9, [ 8], "", 1, 0, 0, 65535, 0 + caninput_source_can_address0 = bits, U16, 17, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address1 = bits, U16, 19, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address2 = bits, U16, 21, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address3 = bits, U16, 23, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address4 = bits, U16, 25, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address5 = bits, U16, 27, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address6 = bits, U16, 29, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address7 = bits, U16, 31, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address8 = bits, U16, 33, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address9 = bits, U16, 35, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address10 = bits, U16, 37, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address11 = bits, U16, 39, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address12 = bits, U16, 41, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address13 = bits, U16, 43, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address14 = bits, U16, 45, [0:10], $CAN_ADDRESS_HEX + caninput_source_can_address15 = bits, U16, 47, [0:10], $CAN_ADDRESS_HEX - caninput_source_start_byte0 = bits, U08, 35, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte1 = bits, U08, 36, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte2 = bits, U08, 37, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte3 = bits, U08, 38, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte4 = bits, U08, 39, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte5 = bits, U08, 40, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte6 = bits, U08, 41, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte7 = bits, U08, 42, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte8 = bits, U08, 43, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte9 = bits, U08, 44, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte10 = bits, U08, 45, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte11 = bits, U08, 46, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte12 = bits, U08, 47, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte13 = bits, U08, 48, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte14 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_start_byte15 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte0 = bits, U08, 49, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte1 = bits, U08, 50, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte2 = bits, U08, 51, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte3 = bits, U08, 52, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte4 = bits, U08, 53, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte5 = bits, U08, 54, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte6 = bits, U08, 55, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte7 = bits, U08, 56, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte8 = bits, U08, 57, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte9 = bits, U08, 58, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte10 = bits, U08, 59, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte11 = bits, U08, 60, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte12 = bits, U08, 61, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte13 = bits, U08, 62, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte14 = bits, U08, 63, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + caninput_source_start_byte15 = bits, U08, 64, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - caninput_source_num_bytes0 = bits, U16, 51, [0:0], "1", "2" - caninput_source_num_bytes1 = bits, U16, 51, [1:1], "1", "2" - caninput_source_num_bytes2 = bits, U16, 51, [2:2], "1", "2" - caninput_source_num_bytes3 = bits, U16, 51, [3:3], "1", "2" - caninput_source_num_bytes4 = bits, U16, 51, [4:4], "1", "2" - caninput_source_num_bytes5 = bits, U16, 51, [5:5], "1", "2" - caninput_source_num_bytes6 = bits, U16, 51, [6:6], "1", "2" - caninput_source_num_bytes7 = bits, U16, 51, [7:7], "1", "2" - caninput_source_num_bytes8 = bits, U16, 51, [8:8], "1", "2" - caninput_source_num_bytes9 = bits, U16, 51, [9:9], "1", "2" - caninput_source_num_bytes10 = bits, U16, 51, [10:10], "1", "2" - caninput_source_num_bytes11 = bits, U16, 51, [11:11], "1", "2" - caninput_source_num_bytes12 = bits, U16, 51, [12:12], "1", "2" - caninput_source_num_bytes13 = bits, U16, 51, [13:13], "1", "2" - caninput_source_num_bytes14 = bits, U16, 51, [14:14], "1", "2" - caninput_source_num_bytes15 = bits, U16, 51, [15:15], "1", "2" + caninput_source_num_bytes0 = bits, U16, 65, [0:0], "1", "2" + caninput_source_num_bytes1 = bits, U16, 65, [1:1], "1", "2" + caninput_source_num_bytes2 = bits, U16, 65, [2:2], "1", "2" + caninput_source_num_bytes3 = bits, U16, 65, [3:3], "1", "2" + caninput_source_num_bytes4 = bits, U16, 65, [4:4], "1", "2" + caninput_source_num_bytes5 = bits, U16, 65, [5:5], "1", "2" + caninput_source_num_bytes6 = bits, U16, 65, [6:6], "1", "2" + caninput_source_num_bytes7 = bits, U16, 65, [7:7], "1", "2" + caninput_source_num_bytes8 = bits, U16, 65, [8:8], "1", "2" + caninput_source_num_bytes9 = bits, U16, 65, [9:9], "1", "2" + caninput_source_num_bytes10 = bits, U16, 65, [10:10], "1", "2" + caninput_source_num_bytes11 = bits, U16, 65, [11:11], "1", "2" + caninput_source_num_bytes12 = bits, U16, 65, [12:12], "1", "2" + caninput_source_num_bytes13 = bits, U16, 65, [13:13], "1", "2" + caninput_source_num_bytes14 = bits, U16, 65, [14:14], "1", "2" + caninput_source_num_bytes15 = bits, U16, 65, [15:15], "1", "2" - unused10_53 = scalar, U08, 53, "", 1, 0, 0, 255, 0 - unused10_54 = scalar, U08, 54, "", 1, 0, 0, 255, 0 - enable_candata_out = bits, U08, 55, [0:0], "Off", "On" - canoutput_sel0 = bits, U08, 56, [0:0], "Off", "On" - canoutput_sel1 = bits, U08, 57, [0:0], "Off", "On" - canoutput_sel2 = bits, U08, 58, [0:0], "Off", "On" - canoutput_sel3 = bits, U08, 59, [0:0], "Off", "On" - canoutput_sel4 = bits, U08, 60, [0:0], "Off", "On" - canoutput_sel5 = bits, U08, 61, [0:0], "Off", "On" - canoutput_sel6 = bits, U08, 62, [0:0], "Off", "On" - canoutput_sel7 = bits, U08, 63, [0:0], "Off", "On" - canoutput_param_group = array , U16, 64, [ 8], "", 1, 0, 0, 65535, 0 - canoutput_param_start_byte0 = bits, U08, 80, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte1 = bits, U08, 81, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte2 = bits, U08, 82, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte3 = bits, U08, 83, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte4 = bits, U08, 84, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte5 = bits, U08, 85, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte6 = bits, U08, 86, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_start_byte7 = bits, U08, 87, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" - canoutput_param_num_bytes0 = bits, U08, 88, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes1 = bits, U08, 89, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes2 = bits, U08, 90, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes3 = bits, U08, 91, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes4 = bits, U08, 92, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes5 = bits, U08, 93, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes6 = bits, U08, 94, [0:1], "INVALID", "1", "2", "INVALID" - canoutput_param_num_bytes7 = bits, U08, 95, [0:1], "INVALID", "1", "2", "INVALID" + unused10_67 = scalar, U08, 67, "", 1, 0, 0, 255, 0 + unused10_68 = scalar, U08, 68, "", 1, 0, 0, 255, 0 + + enable_candata_out = bits, U08, 69, [0:0], "Off", "On" + canoutput_sel0 = bits, U08, 70, [0:0], "Off", "On" + canoutput_sel1 = bits, U08, 71, [0:0], "Off", "On" + canoutput_sel2 = bits, U08, 72, [0:0], "Off", "On" + canoutput_sel3 = bits, U08, 73, [0:0], "Off", "On" + canoutput_sel4 = bits, U08, 74, [0:0], "Off", "On" + canoutput_sel5 = bits, U08, 75, [0:0], "Off", "On" + canoutput_sel6 = bits, U08, 76, [0:0], "Off", "On" + canoutput_sel7 = bits, U08, 77, [0:0], "Off", "On" + canoutput_param_group = array , U16, 78, [ 8], "", 1, 0, 0, 65535, 0 + canoutput_param_start_byte0 = bits, U08, 94, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte1 = bits, U08, 95, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte2 = bits, U08, 96, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte3 = bits, U08, 97, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte4 = bits, U08, 98, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte5 = bits, U08, 99, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte6 = bits, U08, 100, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_start_byte7 = bits, U08, 101, [0:2], "0", "1", "2", "3", "4", "5", "6", "7" + canoutput_param_num_bytes0 = bits, U08, 102, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes1 = bits, U08, 103, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes2 = bits, U08, 104, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes3 = bits, U08, 105, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes4 = bits, U08, 106, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes5 = bits, U08, 107, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes6 = bits, U08, 108, [0:1], "INVALID", "1", "2", "INVALID" + canoutput_param_num_bytes7 = bits, U08, 109, [0:1], "INVALID", "1", "2", "INVALID" - unused10_96 = scalar, U08, 96, "", 1, 0, 0, 255, 0 - unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0 - unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0 - unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0 + unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 + unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 + unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 + unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 - speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list - true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX - realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX - obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX - - - ;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0 - ;unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0 - ;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0 + speeduino_tsCanId = bits, U08, 114, [0:3], $tsCanId_list + true_address = bits, U16, 115, [0:10], $CAN_ADDRESS_HEX + realtime_base_address = bits, U16, 117, [0:10], $CAN_ADDRESS_HEX + obd_address = bits, U16, 119, [0:10], $CAN_ADDRESS_HEX ;AFR offset for WUE VeAnalyze ;wueAFRRates = array, U08, 107, [10], "%", 1.0, 0.0, 0.0, 255, 0 ;wueAFRBins = array, U08, 117, [10], "C", 1.0, -40, -40, 102.0, 0 - unused10_107 = scalar, U08, 107, "", 1, 0, 0, 255, 0 - unused10_108 = scalar, U08, 108, "", 1, 0, 0, 255, 0 - unused10_109 = scalar, U08, 109, "", 1, 0, 0, 255, 0 - unused10_110 = scalar, U08, 110, "", 1, 0, 0, 255, 0 - unused10_111 = scalar, U08, 111, "", 1, 0, 0, 255, 0 - unused10_112 = scalar, U08, 112, "", 1, 0, 0, 255, 0 - unused10_113 = scalar, U08, 113, "", 1, 0, 0, 255, 0 - unused10_114 = scalar, U08, 114, "", 1, 0, 0, 255, 0 - unused10_115 = scalar, U08, 115, "", 1, 0, 0, 255, 0 - unused10_116 = scalar, U08, 116, "", 1, 0, 0, 255, 0 - unused10_117 = scalar, U08, 117, "", 1, 0, 0, 255, 0 - unused10_118 = scalar, U08, 118, "", 1, 0, 0, 255, 0 - unused10_119 = scalar, U08, 119, "", 1, 0, 0, 255, 0 - unused10_120 = scalar, U08, 120, "", 1, 0, 0, 255, 0 - unused10_121 = scalar, U08, 121, "", 1, 0, 0, 255, 0 - unused10_122 = scalar, U08, 122, "", 1, 0, 0, 255, 0 - unused10_123 = scalar, U08, 123, "", 1, 0, 0, 255, 0 - unused10_124 = scalar, U08, 124, "", 1, 0, 0, 255, 0 - unused10_125 = scalar, U08, 125, "", 1, 0, 0, 255, 0 - unused10_126 = scalar, U08, 126, "", 1, 0, 0, 255, 0 - unused10_127 = scalar, U08, 127, "", 1, 0, 0, 255, 0 - + Auxin0pin = bits, U08, 121, [0:6], $ANALOG_DIG_PIN_LIST + Auxin1pin = bits, U08, 122, [0:6], $ANALOG_DIG_PIN_LIST + Auxin2pin = bits, U08, 123, [0:6], $ANALOG_DIG_PIN_LIST + Auxin3pin = bits, U08, 124, [0:6], $ANALOG_DIG_PIN_LIST + Auxin4pin = bits, U08, 125, [0:6], $ANALOG_DIG_PIN_LIST + Auxin5pin = bits, U08, 126, [0:6], $ANALOG_DIG_PIN_LIST + Auxin6pin = bits, U08, 127, [0:6], $ANALOG_DIG_PIN_LIST + Auxin7pin = bits, U08, 128, [0:6], $ANALOG_DIG_PIN_LIST + Auxin8pin = bits, U08, 129, [0:6], $ANALOG_DIG_PIN_LIST + Auxin9pin = bits, U08, 130, [0:6], $ANALOG_DIG_PIN_LIST + Auxin10pin = bits, U08, 131, [0:6], $ANALOG_DIG_PIN_LIST + Auxin11pin = bits, U08, 132, [0:6], $ANALOG_DIG_PIN_LIST + Auxin12pin = bits, U08, 133, [0:6], $ANALOG_DIG_PIN_LIST + Auxin13pin = bits, U08, 134, [0:6], $ANALOG_DIG_PIN_LIST + Auxin14pin = bits, U08, 135, [0:6], $ANALOG_DIG_PIN_LIST + Auxin15pin = bits, U08, 136, [0:6], $ANALOG_DIG_PIN_LIST + + unused10_137 = scalar, U08, 137, "", 1, 0, 0, 255, 0 + unused10_138 = scalar, U08, 138, "", 1, 0, 0, 255, 0 + unused10_139 = scalar, U08, 139, "", 1, 0, 0, 255, 0 + unused10_140 = scalar, U08, 140, "", 1, 0, 0, 255, 0 + unused10_141 = scalar, U08, 141, "", 1, 0, 0, 255, 0 + unused10_142 = scalar, U08, 142, "", 1, 0, 0, 255, 0 + unused10_143 = scalar, U08, 143, "", 1, 0, 0, 255, 0 + unused10_144 = scalar, U08, 144, "", 1, 0, 0, 255, 0 + unused10_145 = scalar, U08, 145, "", 1, 0, 0, 255, 0 + unused10_146 = scalar, U08, 146, "", 1, 0, 0, 255, 0 + unused10_147 = scalar, U08, 147, "", 1, 0, 0, 255, 0 + unused10_148 = scalar, U08, 148, "", 1, 0, 0, 255, 0 + unused10_149 = scalar, U08, 149, "", 1, 0, 0, 255, 0 + unused10_150 = scalar, U08, 150, "", 1, 0, 0, 255, 0 + unused10_151 = scalar, U08, 151, "", 1, 0, 0, 255, 0 + unused10_152 = scalar, U08, 152, "", 1, 0, 0, 255, 0 + unused10_153 = scalar, U08, 153, "", 1, 0, 0, 255, 0 + unused10_154 = scalar, U08, 154, "", 1, 0, 0, 255, 0 + unused10_155 = scalar, U08, 155, "", 1, 0, 0, 255, 0 + unused10_156 = scalar, U08, 156, "", 1, 0, 0, 255, 0 + unused10_157 = scalar, U08, 157, "", 1, 0, 0, 255, 0 + unused10_158 = scalar, U08, 158, "", 1, 0, 0, 255, 0 + unused10_159 = scalar, U08, 159, "", 1, 0, 0, 255, 0 + unused10_160 = scalar, U08, 160, "", 1, 0, 0, 255, 0 + unused10_161 = scalar, U08, 161, "", 1, 0, 0, 255, 0 + unused10_162 = scalar, U08, 162, "", 1, 0, 0, 255, 0 + unused10_163 = scalar, U08, 163, "", 1, 0, 0, 255, 0 + unused10_164 = scalar, U08, 164, "", 1, 0, 0, 255, 0 + unused10_165 = scalar, U08, 165, "", 1, 0, 0, 255, 0 + unused10_166 = scalar, U08, 166, "", 1, 0, 0, 255, 0 + unused10_167 = scalar, U08, 167, "", 1, 0, 0, 255, 0 + unused10_168 = scalar, U08, 168, "", 1, 0, 0, 255, 0 + unused10_169 = scalar, U08, 169, "", 1, 0, 0, 255, 0 + unused10_170 = scalar, U08, 170, "", 1, 0, 0, 255, 0 + unused10_171 = scalar, U08, 171, "", 1, 0, 0, 255, 0 + unused10_172 = scalar, U08, 172, "", 1, 0, 0, 255, 0 + unused10_173 = scalar, U08, 173, "", 1, 0, 0, 255, 0 + unused10_174 = scalar, U08, 174, "", 1, 0, 0, 255, 0 + unused10_175 = scalar, U08, 175, "", 1, 0, 0, 255, 0 + unused10_176 = scalar, U08, 176, "", 1, 0, 0, 255, 0 + unused10_177 = scalar, U08, 177, "", 1, 0, 0, 255, 0 + unused10_178 = scalar, U08, 178, "", 1, 0, 0, 255, 0 + unused10_179 = scalar, U08, 179, "", 1, 0, 0, 255, 0 + unused10_180 = scalar, U08, 180, "", 1, 0, 0, 255, 0 + unused10_181 = scalar, U08, 181, "", 1, 0, 0, 255, 0 + unused10_182 = scalar, U08, 182, "", 1, 0, 0, 255, 0 + unused10_183 = scalar, U08, 183, "", 1, 0, 0, 255, 0 + unused10_184 = scalar, U08, 184, "", 1, 0, 0, 255, 0 + unused10_185 = scalar, U08, 185, "", 1, 0, 0, 255, 0 + unused10_186 = scalar, U08, 186, "", 1, 0, 0, 255, 0 + unused10_187 = scalar, U08, 187, "", 1, 0, 0, 255, 0 + unused10_188 = scalar, U08, 188, "", 1, 0, 0, 255, 0 + unused10_189 = scalar, U08, 189, "", 1, 0, 0, 255, 0 + unused10_190 = scalar, U08, 190, "", 1, 0, 0, 255, 0 + unused10_191 = scalar, U08, 191, "", 1, 0, 0, 255, 0 + page = 10 #if CELSIUS crankingEnrichBins = array, U08, 0, [4], "C", 1.0, -40, -40, 215, 0 @@ -946,11 +1030,13 @@ menuDialog = main #if CAN_COMMANDS subMenu = can_serial3IO, "Canbus/Secondary Serial IO Interface" subMenu = std_separator - subMenu = Canin_config, "External Data Input Configuration", {enable_canbus} + subMenu = Canin_config, "External Auxillary Input Channel Configuration", {enable_canbus} + subMenu = Auxin_config, "Local Auxillary Input Channel Configuration" ;subMenu = std_separator ;subMenu = Canout_config, "Canbus Output Configuration" #else subMenu = serial3IO, "Secondary Serial IO Interface" + subMenu = Auxin_config, "Local Auxillary Input Channel Configuration" #endif menuDialog = main @@ -1062,22 +1148,38 @@ menuDialog = main true_address = "This is the 11bit Can address of the Speeduino ECU " realtime_base_address = "This is the 11bit CAN address of the realtime data broadcast from the Speeduino ECU. This MUST be at least 0x16 greater than the true address" ;obd_address = "The 11bit Can address that the Speeduino ECU responds to for OBD2 diagnostic requests" - caninput_sel0 = "This Enables CAN data input channel 0 " - caninput_sel1 = "This Enables CAN data input channel 1 " - caninput_sel2 = "This Enables CAN data input channel 2 " - caninput_sel3 = "This Enables CAN data input channel 3 " - caninput_sel4 = "This Enables CAN data input channel 4 " - caninput_sel5 = "This Enables CAN data input channel 5 " - caninput_sel6 = "This Enables CAN data input channel 6 " - caninput_sel7 = "This Enables CAN data input channel 7 " - caninput_sel8 = "This Enables CAN data input channel 8 " - caninput_sel9 = "This Enables CAN data input channel 9 " - caninput_sel10 = "This Enables CAN data input channel 10 " - caninput_sel11 = "This Enables CAN data input channel 11 " - caninput_sel12 = "This Enables CAN data input channel 12 " - caninput_sel13 = "This Enables CAN data input channel 13 " - caninput_sel14 = "This Enables CAN data input channel 14 " - caninput_sel15 = "This Enables CAN data input channel 15 " + AUXin00Alias = "The Ascii alias asigned to Aux input channel 0" + AUXin01Alias = "The Ascii alias asigned to Aux input channel 1" + AUXin02Alias = "The Ascii alias asigned to Aux input channel 2" + AUXin03Alias = "The Ascii alias asigned to Aux input channel 3" + AUXin04Alias = "The Ascii alias asigned to Aux input channel 4" + AUXin05Alias = "The Ascii alias asigned to Aux input channel 5" + AUXin06Alias = "The Ascii alias asigned to Aux input channel 6" + AUXin07Alias = "The Ascii alias asigned to Aux input channel 7" + AUXin08Alias = "The Ascii alias asigned to Aux input channel 8" + AUXin09Alias = "The Ascii alias asigned to Aux input channel 9" + AUXin10Alias = "The Ascii alias asigned to Aux input channel 10" + AUXin11Alias = "The Ascii alias asigned to Aux input channel 11" + AUXin12Alias = "The Ascii alias asigned to Aux input channel 12" + AUXin13Alias = "The Ascii alias asigned to Aux input channel 13" + AUXin14Alias = "The Ascii alias asigned to Aux input channel 14" + AUXin15Alias = "The Ascii alias asigned to Aux input channel 15" + caninput_sel0 = "This Enables External/CAN data or local analog/digital on input channel 0 " + caninput_sel1 = "This Enables External/CAN data or local analog/digital on input channel 1 " + caninput_sel2 = "This Enables External/CAN data or local analog/digital on input channel 2 " + caninput_sel3 = "This Enables External/CAN data or local analog/digital on input channel 3 " + caninput_sel4 = "This Enables External/CAN data or local analog/digital on input channel 4 " + caninput_sel5 = "This Enables External/CAN data or local analog/digital on input channel 5 " + caninput_sel6 = "This Enables External/CAN data or local analog/digital on input channel 6 " + caninput_sel7 = "This Enables External/CAN data or local analog/digital on input channel 7 " + caninput_sel8 = "This Enables External/CAN data or local analog/digital on input channel 8 " + caninput_sel9 = "This Enables External/CAN data or local analog/digital on input channel 9 " + caninput_sel10 = "This Enables External/CAN data or local analog/digital on input channel 10 " + caninput_sel11 = "This Enables External/CAN data or local analog/digital on input channel 11 " + caninput_sel12 = "This Enables External/CAN data or local analog/digital on input channel 12 " + caninput_sel13 = "This Enables External/CAN data or local analog/digital on input channel 13 " + caninput_sel14 = "This Enables External/CAN data or local analog/digital on input channel 14 " + caninput_sel15 = "This Enables External/CAN data or local analog/digital on input channel 15 " caninput_source_can_address0 = "The source 11bit CAN address of the data for channel 0" caninput_source_can_address1 = "The source 11bit CAN address of the data for channel 1" caninput_source_can_address2 = "The source 11bit CAN address of the data for channel 2" @@ -1671,6 +1773,25 @@ menuDialog = main panel = outputtest_spark ;panel = outputtest_io2 panel = outputtest_warningmessage + + dialog = canAuxinput_alias, "", yAxis + field = "Input Alias" + field = "", AUXin00Alias , {caninput_sel0} + field = "", AUXin01Alias , {caninput_sel1} + field = "", AUXin02Alias , {caninput_sel2} + field = "", AUXin03Alias , {caninput_sel3} + field = "", AUXin04Alias , {caninput_sel4} + field = "", AUXin05Alias , {caninput_sel5} + field = "", AUXin06Alias , {caninput_sel6} + field = "", AUXin07Alias , {caninput_sel7} + field = "", AUXin08Alias , {caninput_sel8} + field = "", AUXin09Alias , {caninput_sel9} + field = "", AUXin10Alias , {caninput_sel10} + field = "", AUXin11Alias , {caninput_sel11} + field = "", AUXin12Alias , {caninput_sel12} + field = "", AUXin13Alias , {caninput_sel13} + field = "", AUXin14Alias , {caninput_sel14} + field = "", AUXin15Alias , {caninput_sel15} dialog = caninput_sel, "" ;CAN inputs @@ -1694,65 +1815,67 @@ menuDialog = main dialog = caninput_parameter_group, "", yAxis field = " Source CAN Address" - field = "", caninput_source_can_address0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_can_address1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_can_address2, { caninput_sel2 && enable_candata_in } - field = "", caninput_source_can_address3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_can_address4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_can_address5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_can_address6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_can_address7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_can_address8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_can_address9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_can_address10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_can_address11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_can_address12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_can_address13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_can_address14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_can_address15, { caninput_sel15 && enable_candata_in } + field = "", caninput_source_can_address0, { caninput_sel0 == 1 && enable_candata_in } + field = "", caninput_source_can_address1, { caninput_sel1 == 1 && enable_candata_in } + field = "", caninput_source_can_address2, { caninput_sel2 == 1 && enable_candata_in } + field = "", caninput_source_can_address3, { caninput_sel3 == 1 && enable_candata_in } + field = "", caninput_source_can_address4, { caninput_sel4 == 1 && enable_candata_in } + field = "", caninput_source_can_address5, { caninput_sel5 == 1 && enable_candata_in } + field = "", caninput_source_can_address6, { caninput_sel6 == 1 && enable_candata_in } + field = "", caninput_source_can_address7, { caninput_sel7 == 1 && enable_candata_in } + field = "", caninput_source_can_address8, { caninput_sel8 == 1 && enable_candata_in } + field = "", caninput_source_can_address9, { caninput_sel9 == 1 && enable_candata_in } + field = "", caninput_source_can_address10, { caninput_sel10 == 1 && enable_candata_in } + field = "", caninput_source_can_address11, { caninput_sel11 == 1 && enable_candata_in } + field = "", caninput_source_can_address12, { caninput_sel12 == 1 && enable_candata_in } + field = "", caninput_source_can_address13, { caninput_sel13 == 1 && enable_candata_in } + field = "", caninput_source_can_address14, { caninput_sel14 == 1 && enable_candata_in } + field = "", caninput_source_can_address15, { caninput_sel15 == 1 && enable_candata_in } dialog = caninput_parameter_start_byte, "", yAxis field = " source data start byte" - field = "", caninput_source_start_byte0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_start_byte1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_start_byte2, { caninput_sel2 && enable_candata_in } - field = "", caninput_source_start_byte3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_start_byte4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_start_byte5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_start_byte6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_start_byte7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_start_byte8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_start_byte9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_start_byte10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_start_byte11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_start_byte12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_start_byte13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_start_byte14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_start_byte15, { caninput_sel15 && enable_candata_in } + field = "", caninput_source_start_byte0, { caninput_sel0 == 1 && enable_candata_in } + field = "", caninput_source_start_byte1, { caninput_sel1 == 1 && enable_candata_in } + field = "", caninput_source_start_byte2, { caninput_sel2 == 1 && enable_candata_in } + field = "", caninput_source_start_byte3, { caninput_sel3 == 1 && enable_candata_in } + field = "", caninput_source_start_byte4, { caninput_sel4 == 1 && enable_candata_in } + field = "", caninput_source_start_byte5, { caninput_sel5 == 1 && enable_candata_in } + field = "", caninput_source_start_byte6, { caninput_sel6 == 1 && enable_candata_in } + field = "", caninput_source_start_byte7, { caninput_sel7 == 1 && enable_candata_in } + field = "", caninput_source_start_byte8, { caninput_sel8 == 1 && enable_candata_in } + field = "", caninput_source_start_byte9, { caninput_sel9 == 1 && enable_candata_in } + field = "", caninput_source_start_byte10, { caninput_sel10 == 1 && enable_candata_in } + field = "", caninput_source_start_byte11, { caninput_sel11 == 1 && enable_candata_in } + field = "", caninput_source_start_byte12, { caninput_sel12 == 1 && enable_candata_in } + field = "", caninput_source_start_byte13, { caninput_sel13 == 1 && enable_candata_in } + field = "", caninput_source_start_byte14, { caninput_sel14 == 1 && enable_candata_in } + field = "", caninput_source_start_byte15, { caninput_sel15 == 1 && enable_candata_in } dialog = caninput_parameter_num_byte, "", yAxis field = "Input Parameter Number of Bytes" - field = "", caninput_source_num_bytes0, { caninput_sel0 && enable_candata_in } - field = "", caninput_source_num_bytes1, { caninput_sel1 && enable_candata_in } - field = "", caninput_source_num_bytes2, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_num_bytes3, { caninput_sel3 && enable_candata_in } - field = "", caninput_source_num_bytes4, { caninput_sel4 && enable_candata_in } - field = "", caninput_source_num_bytes5, { caninput_sel5 && enable_candata_in } - field = "", caninput_source_num_bytes6, { caninput_sel6 && enable_candata_in } - field = "", caninput_source_num_bytes7, { caninput_sel7 && enable_candata_in } - field = "", caninput_source_num_bytes8, { caninput_sel8 && enable_candata_in } - field = "", caninput_source_num_bytes9, { caninput_sel9 && enable_candata_in } - field = "", caninput_source_num_bytes10, { caninput_sel10 && enable_candata_in } - field = "", caninput_source_num_bytes11, { caninput_sel11 && enable_candata_in } - field = "", caninput_source_num_bytes12, { caninput_sel12 && enable_candata_in } - field = "", caninput_source_num_bytes13, { caninput_sel13 && enable_candata_in } - field = "", caninput_source_num_bytes14, { caninput_sel14 && enable_candata_in } - field = "", caninput_source_num_bytes15, { caninput_sel15 && enable_candata_in } + field = "", caninput_source_num_bytes0, { caninput_sel0 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes1, { caninput_sel1 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes2, { caninput_sel3 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes3, { caninput_sel3 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes4, { caninput_sel4 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes5, { caninput_sel5 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes6, { caninput_sel6 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes7, { caninput_sel7 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes8, { caninput_sel8 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes9, { caninput_sel9 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes10, { caninput_sel10 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes11, { caninput_sel11 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes12, { caninput_sel12 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes13, { caninput_sel13 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes14, { caninput_sel14 == 1 && enable_candata_in } + field = "", caninput_source_num_bytes15, { caninput_sel15 == 1 && enable_candata_in } dialog = caninconfig_blank1,"" field = "" dialog = Canin_config1, "", xAxis + panel = canAuxinput_alias + panel = caninconfig_blank1 panel = caninput_sel panel = caninconfig_blank1 panel = caninput_parameter_group @@ -1768,8 +1891,27 @@ menuDialog = main topicHelp = "http://speeduino.com/wiki/index.php/Secondary_Serial_IO_interface#Read_external_analog_data" panel = Canin_config2, North panel = Canin_config1, South - - dialog = canoutput_sel, "" + + dialog = canAuxoutput_alias, "", yAxis + field = "Input Alias" + field = "", AUXin00Alias , {caninput_sel0} + field = "", AUXin01Alias , {caninput_sel1} + field = "", AUXin02Alias , {caninput_sel2} + field = "", AUXin03Alias , {caninput_sel3} + field = "", AUXin04Alias , {caninput_sel4} + field = "", AUXin05Alias , {caninput_sel5} + field = "", AUXin06Alias , {caninput_sel6} + field = "", AUXin07Alias , {caninput_sel7} + field = "", AUXin08Alias , {caninput_sel8} + field = "", AUXin09Alias , {caninput_sel9} + field = "", AUXin10Alias , {caninput_sel10} + field = "", AUXin11Alias , {caninput_sel11} + field = "", AUXin12Alias , {caninput_sel12} + field = "", AUXin13Alias , {caninput_sel13} + field = "", AUXin14Alias , {caninput_sel14} + field = "", AUXin15Alias , {caninput_sel15} + + dialog = canoutput_sel, "", yAxis ;CAN outputs field = "CAN Output Channel on/off" field = "CAN Output 0", canoutput_sel0, { enable_candata_out} @@ -1850,7 +1992,9 @@ menuDialog = main field = "" dialog = Canout_config1, "", xAxis - panel = canoutput_sel + panel = canAuxoutput_alias + panel = canoutconfig_blank1 + panel = canoutput_sel panel = canoutconfig_blank1 panel = canoutput_parameter_group panel = canoutconfig_blank1 @@ -1884,6 +2028,67 @@ menuDialog = main field = "Control Type", resetControl field = "Control Pin", resetControlPin + dialog = Auxinput_pin_selection, "Pin", yAxis + field = "", Auxin0pin , {caninput_sel0 == 2 || caninput_sel0 == 3 } + field = "", Auxin1pin , {caninput_sel1 == 2 || caninput_sel0 == 3} + field = "", Auxin2pin , {caninput_sel2 == 2 || caninput_sel0 == 3} + field = "", Auxin3pin , {caninput_sel3 == 2 || caninput_sel0 == 3} + field = "", Auxin4pin , {caninput_sel4 == 2 || caninput_sel0 == 3} + field = "", Auxin5pin , {caninput_sel5 == 2 || caninput_sel0 == 3} + field = "", Auxin6pin , {caninput_sel6 == 2 || caninput_sel0 == 3} + field = "", Auxin7pin , {caninput_sel7 == 2 || caninput_sel0 == 3} + field = "", Auxin8pin , {caninput_sel8 == 2 || caninput_sel0 == 3} + field = "", Auxin9pin , {caninput_sel9 == 2 || caninput_sel0 == 3} + field = "", Auxin10pin , {caninput_sel10 == 2 || caninput_sel0 == 3} + field = "", Auxin11pin , {caninput_sel11 == 2 || caninput_sel0 == 3} + field = "", Auxin12pin , {caninput_sel12 == 2 || caninput_sel0 == 3} + field = "", Auxin13pin , {caninput_sel13 == 2 || caninput_sel0 == 3} + field = "", Auxin14pin , {caninput_sel14 == 2 || caninput_sel0 == 3} + field = "", Auxin15pin , {caninput_sel15 == 2 || caninput_sel0 == 3} + + dialog = Auxinput_alias, "", yAxis + field = "Input Alias" + field = "", AUXin00Alias , {caninput_sel0} + field = "", AUXin01Alias , {caninput_sel1} + field = "", AUXin02Alias , {caninput_sel2} + field = "", AUXin03Alias , {caninput_sel3} + field = "", AUXin04Alias , {caninput_sel4} + field = "", AUXin05Alias , {caninput_sel5} + field = "", AUXin06Alias , {caninput_sel6} + field = "", AUXin07Alias , {caninput_sel7} + field = "", AUXin08Alias , {caninput_sel8} + field = "", AUXin09Alias , {caninput_sel9} + field = "", AUXin10Alias , {caninput_sel10} + field = "", AUXin11Alias , {caninput_sel11} + field = "", AUXin12Alias , {caninput_sel12} + field = "", AUXin13Alias , {caninput_sel13} + field = "", AUXin14Alias , {caninput_sel14} + field = "", AUXin15Alias , {caninput_sel15} + + dialog = Auxinput_channelenable, "", yAxis + field = " Aux Input Channel Enable" + field = "AUX Input 0", caninput_sel0 + field = "AUX Input 1", caninput_sel1 + field = "AUX Input 2", caninput_sel2 + field = "AUX Input 3", caninput_sel3 + field = "AUX Input 4", caninput_sel4 + field = "AUX Input 5", caninput_sel5 + field = "AUX Input 6", caninput_sel6 + field = "AUX Input 7", caninput_sel7 + field = "AUX Input 8", caninput_sel8 + field = "AUX Input 9", caninput_sel9 + field = "AUX Input 10", caninput_sel10 + field = "AUX Input 11", caninput_sel11 + field = "AUX Input 12", caninput_sel12 + field = "AUX Input 13", caninput_sel13 + field = "AUX Input 14", caninput_sel14 + field = "AUX Input 15", caninput_sel15 + + dialog = Auxin_config, "Auxillary Input Configuration",xAxis + panel = Auxinput_alias + panel = Auxinput_channelenable + panel = Auxinput_pin_selection + ;------------------------------------------------------------------------------- ; General help text diff --git a/speeduino/globals.h b/speeduino/globals.h index 914f9edb..469a97c8 100644 --- a/speeduino/globals.h +++ b/speeduino/globals.h @@ -191,7 +191,7 @@ const char TSfirmwareVersion[] = "Speeduino 2016.09"; const byte data_structure_version = 2; //This identifies the data structure when reading / writing. //const byte page_size = 64; -const int16_t npage_size[11] = {0,288,128,288,128,288,128,240,192,128,192}; +const int16_t npage_size[11] = {0,288,128,288,128,288,128,240,192,192,192}; //const byte page11_size = 128; #define MAP_PAGE_SIZE 288 @@ -653,39 +653,27 @@ struct config6 { struct config9 { byte enable_canbus:2; byte enable_candata_in:1; - uint16_t caninput_sel; //bit status on/off if input is enabled + byte caninput_sel[16]; //bit status on/Can/analog_local/digtal_local if input is enabled uint16_t caninput_source_can_address[16]; //u16 [15] array holding can address of input uint8_t caninput_source_start_byte[16]; //u08 [15] array holds the start byte number(value of 0-7) uint16_t caninput_source_num_bytes; //u16 bit status of the number of bytes length 1 or 2 - byte unused10_53; - byte unused10_54; + byte unused10_67; + byte unused10_68; byte enable_candata_out : 1; byte canoutput_sel[8]; uint16_t canoutput_param_group[8]; uint8_t canoutput_param_start_byte[8]; byte canoutput_param_num_bytes[8]; - byte unused10_97; - byte unused10_98; - byte unused10_99; - byte speeduino_tsCanId:4; //speeduino TS canid (0-14) - uint16_t true_address; //speeduino 11bit can address - uint16_t realtime_base_address; //speeduino 11 bit realtime base address - uint16_t obd_address; //speeduino OBD diagnostic address - byte unused10_107; - byte unused10_108; - byte unused10_109; byte unused10_110; byte unused10_111; byte unused10_112; byte unused10_113; - byte unused10_114; - byte unused10_115; - byte unused10_116; - byte unused10_117; - byte unused10_118; - byte unused10_119; - byte unused10_120; + byte speeduino_tsCanId:4; //speeduino TS canid (0-14) + uint16_t true_address; //speeduino 11bit can address + uint16_t realtime_base_address; //speeduino 11 bit realtime base address + uint16_t obd_address; //speeduino OBD diagnostic address + uint8_t Auxinpin[16]; byte unused10_121; byte unused10_122; byte unused10_123; @@ -693,6 +681,71 @@ struct config9 { byte unused10_125; byte unused10_126; byte unused10_127; + byte unused10_128; + byte unused10_129; + byte unused10_130; + byte unused10_131; + byte unused10_132; + byte unused10_133; + byte unused10_134; + byte unused10_135; + byte unused10_136; + byte unused10_137; + byte unused10_138; + byte unused10_139; + byte unused10_140; + byte unused10_141; + byte unused10_142; + byte unused10_143; + byte unused10_144; + byte unused10_145; + byte unused10_146; + byte unused10_147; + byte unused10_148; + byte unused10_149; + byte unused10_150; + byte unused10_151; + byte unused10_152; + byte unused10_153; + byte unused10_154; + byte unused10_155; + byte unused10_156; + byte unused10_157; + byte unused10_158; + byte unused10_159; + byte unused10_160; + byte unused10_161; + byte unused10_162; + byte unused10_163; + byte unused10_164; + byte unused10_165; + byte unused10_166; + byte unused10_167; + byte unused10_168; + byte unused10_169; + byte unused10_170; + byte unused10_171; + byte unused10_172; + byte unused10_173; + byte unused10_174; + byte unused10_175; + byte unused10_176; + byte unused10_177; + byte unused10_178; + byte unused10_179; + byte unused10_180; + byte unused10_181; + byte unused10_182; + byte unused10_183; + byte unused10_184; + byte unused10_185; + byte unused10_186; + byte unused10_187; + byte unused10_188; + byte unused10_189; + byte unused10_190; + byte unused10_191; + #if defined(CORE_AVR) }; #else diff --git a/speeduino/sensors.h b/speeduino/sensors.h index a8e3450e..a895c5e6 100644 --- a/speeduino/sensors.h +++ b/speeduino/sensors.h @@ -43,7 +43,8 @@ static inline void readMAP() __attribute__((always_inline)); void readTPS(); void readO2_2(); void flexPulse(); - +uint16_t readAuxanalog(uint8_t analogPin); +uint16_t readAuxdigital(uint8_t digitalPin); #if defined(ANALOG_ISR) //Analog ISR interrupt routine diff --git a/speeduino/sensors.ino b/speeduino/sensors.ino index 6681f900..8e8699da 100644 --- a/speeduino/sensors.ino +++ b/speeduino/sensors.ino @@ -318,3 +318,24 @@ void flexPulse() { ++flexCounter; } + +uint16_t readAuxanalog(uint8_t analogPin) + { + //read the Aux analog value for pin set by analogPin + unsigned int tempReading; + #if defined(ANALOG_ISR) + tempReading = fastMap1023toX(AnChannel[analogPin-A0], 511); //Get the current raw Auxanalog value + #else + tempReading = analogRead(analogPin); + tempReading = fastMap1023toX(analogRead(analogPin), 511); //Get the current raw Auxanalog value + #endif + return tempReading; + } + +uint16_t readAuxdigital(uint8_t digitalPin) + { + //read the Aux digital value for pin set by digitalPin + unsigned int tempReading; + tempReading = digitalRead(digitalPin); + return tempReading; + } diff --git a/speeduino/speeduino.ino b/speeduino/speeduino.ino index 9dda77c4..ecd7b7a7 100644 --- a/speeduino/speeduino.ino +++ b/speeduino/speeduino.ino @@ -963,45 +963,65 @@ void loop() if(eepromWritesPending == true) { writeAllConfig(); } //Check for any outstanding EEPROM writes. #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //ATmega2561 does not have Serial3 - //if Can interface is enabled then check for external data requests. - if (configPage9.enable_candata_in) //if external data input is enabled - { - if (configPage9.enable_canbus == 1) // megas only support can via secondary serial - { - for (byte caninChan = 0; caninChan <16 ; caninChan++) + //check through the Aux input channels if enabed for Can or local use + for (byte AuxinChan = 0; AuxinChan <16 ; AuxinChan++) + { + currentStatus.current_caninchannel = AuxinChan; + //currentStatus.canin[14] = currentStatus.current_caninchannel; + //currentStatus.canin[13] = ((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100); + if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 1) //if current input channel is enabled as canbus + { + if (configPage9.enable_candata_in) //if external data input is enabled + { + if (configPage9.enable_canbus == 1) // megas only support can via secondary serial { - currentStatus.current_caninchannel = caninChan; - //currentStatus.canin[14] = currentStatus.current_caninchannel; - currentStatus.canin[13] = ((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100); - if (BIT_CHECK(configPage9.caninput_sel,currentStatus.current_caninchannel)) //if current input channel bit is enabled - { - sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100)); - //send an R command for data from caninput_source_address[currentStatus.current_caninchannel] - } + sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100)); + //send an R command for data from caninput_source_address[currentStatus.current_caninchannel] } - } - } + } + } + else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin + { + //read analog channel specified + canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + } + else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin + { + //read digital channel specified + canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + } + } #elif defined(CORE_STM32) || defined(CORE_TEENSY) - //if serial3io is enabled then check for serial3 requests. - if (configPage9.enable_candata_in) - { - for (byte caninChan = 0; caninChan <16 ; caninChan++) - { - currentStatus.current_caninchannel = caninChan; - if (BIT_CHECK(configPage9.caninput_sel,currentStatus.current_caninchannel)) //if current input channel is enabled + //check through the Aux input channels if enabed for Can or local use + for (byte AuxinChan = 0; AuxinChan <16 ; AuxinChan++) + { + currentStatus.current_caninchannel = AuxinChan; + if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 1) //if current input channel is enabled as canbus + { + if (configPage9.enable_candata_in) + { + if (configPage9.enable_canbus == 1) //can via secondary serial { - if (configPage9.enable_canbus == 1) //can via secondary serial - { - sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+256)); //send an R command for data from paramgroup[currentStatus.current_caninchannel] - } - else if (configPage9.enable_canbus == 2) // can via internal can module - { - sendCancommand(3,configPage9.speeduino_tsCanId,currentStatus.current_caninchannel,0,configPage9.caninput_source_can_address[currentStatus.current_caninchannel]); //send via localcanbus the command for data from paramgroup[currentStatus.current_caninchannel] - } + sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+256)); //send an R command for data from paramgroup[currentStatus.current_caninchannel] } - } - } + else if (configPage9.enable_canbus == 2) // can via internal can module + { + sendCancommand(3,configPage9.speeduino_tsCanId,currentStatus.current_caninchannel,0,configPage9.caninput_source_can_address[currentStatus.current_caninchannel]); //send via localcanbus the command for data from paramgroup[currentStatus.current_caninchannel] + } + } + } + else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin + { + //read analog channel specified + canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + } + else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin + { + //read digital channel specified + canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + } + } #endif vvtControl(); idleControl(); //Perform any idle related actions. Even at higher frequencies, running 4x per second is sufficient. From a124f4d6b138b6df55857a6d47434154cedb7c4c Mon Sep 17 00:00:00 2001 From: darren siepka Date: Fri, 29 Jun 2018 23:38:41 +0100 Subject: [PATCH 2/3] fix minor typos --- speeduino/speeduino.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/speeduino/speeduino.ino b/speeduino/speeduino.ino index 370e8999..09278a4b 100644 --- a/speeduino/speeduino.ino +++ b/speeduino/speeduino.ino @@ -984,12 +984,12 @@ void loop() else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin { //read analog channel specified - canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); } else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin { //read digital channel specified - canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); } } @@ -1015,12 +1015,12 @@ void loop() else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin { //read analog channel specified - canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); } else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin { //read digital channel specified - canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); } } #endif From 8dd9ed9fbdbe44ff04694904250517b486beb1fd Mon Sep 17 00:00:00 2001 From: darren siepka Date: Wed, 4 Jul 2018 00:36:37 +0100 Subject: [PATCH 3/3] improve TS ini selection options fix bit masking storage table fix --- reference/speeduino.ini | 277 ++++++++++++++++++++++++++-------------- speeduino/globals.h | 35 +---- speeduino/speeduino.ino | 26 ++-- speeduino/storage.h | 10 +- speeduino/storage.ino | 2 +- 5 files changed, 200 insertions(+), 150 deletions(-) diff --git a/reference/speeduino.ini b/reference/speeduino.ini index 8f287a69..20d0000a 100644 --- a/reference/speeduino.ini +++ b/reference/speeduino.ini @@ -162,9 +162,9 @@ #define PIN_OUT16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define PIN_16inv = "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #define ANALOG_PIN = "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15" - #define DIGITAL_PIN = "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - #define ANALOG_DIG_PIN_LIST = $DIGITAL_PIN, $ANALOG_PIN, $PIN_16inv + #define ANALOG_PIN = "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A8", "A10", "A11", "A12", "A13", "A14", "A15", $PIN_16inv, $PIN_16inv, $PIN_16inv + #define DIGITAL_PIN = "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" + #define ANALOG_DIG_PIN_LIST = $DIGITAL_PIN, $ANALOG_PIN #define tsCanId_list = "CAN ID 0", "CAN ID 1", "CAN ID 2", "CAN ID 3", "CAN ID 4", "CAN ID 5", "CAN ID 6", "CAN ID 7", "CAN ID 8", "CAN ID 9", "CAN ID 10","CAN ID 11","CAN ID 12","CAN ID 13","CAN ID 14","INVALID" #define CAN_ADDRESS_HEX_inv255 = $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT16inv, $PIN_OUT10inv, "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" #define CAN_ADDRESS_HEX_00XX = "INVALID", "0x001", "0x002", "0x003", "0x004", "0x005", "0x006", "0x007", "0x008", "0x009", "0x00A", "0x00B", "0x00C", "0x00D", "0x00E", "0x00F", "0x010", "0x011", "0x012", "0x013", "0x014", "0x015", "0x016", "0x017", "0x018", "0x019", "0x01A", "0x01B", "0x01C", "0x01D", "0x01E", "0x01F", "0x020", "0x021", "0x022", "0x023", "0x024", "0x025", "0x026", "0x027", "0x028", "0x029", "0x02A", "0x02B", "0x02C", "0x02D", "0x02E", "0x02F", "0x030", "0x031", "0x032", "0x033", "0x034", "0x035", "0x036", "0x037", "0x038", "0x039", "0x03A", "0x03B", "0x03C", "0x03D", "0x03E", "0x03F", "0x040", "0x041", "0x042", "0x043", "0x044", "0x045", "0x046", "0x047", "0x048", "0x049", "0x04A", "0x04B", "0x04C", "0x04D", "0x04E", "0x04F", "0x050", "0x051", "0x052", "0x053", "0x054", "0x055", "0x056", "0x057", "0x058", "0x059", "0x05A", "0x05B", "0x05C", "0x05D", "0x05E", "0x05F" ,"0x060", "0x061", "0x062", "0x063", "0x064", "0x065", "0x066", "0x067", "0x068", "0x069", "0x06A", "0x06B", "0x06C", "0x06D", "0x06E", "0x06F", "0x070", "0x071", "0x072", "0x073", "0x074", "0x075", "0x076", "0x077", "0x078", "0x079", "0x07A", "0x07B", "0x07C", "0x07D", "0x07E", "0x07F", "0x080", "0x081", "0x082", "0x083", "0x084", "0x085", "0x086", "0x087", "0x088", "0x089", "0x08A", "0x08B", "0x08C", "0x08D", "0x08E", "0x08F" ,"0x090", "0x091", "0x092", "0x093", "0x094", "0x095", "0x096", "0x097", "0x098", "0x099", "0x09A", "0x09B", "0x09C", "0x09D", "0x09E", "0x09F", "0x0A0", "0x0A1", "0x0A2", "0x0A3", "0x0A4", "0x0A5", "0x0A6", "0x0A7", "0x0A8", "0x0A9", "0x0AA", "0x0AB", "0x0AC", "0x0AD", "0x0AE", "0x0AF", "0x0B0", "0x0B1", "0x0B2", "0x0B3", "0x0B4", "0x0B5", "0x0B6", "0x0B7", "0x0B8", "0x0B9", "0x0BA", "0x0BB", "0x0BC", "0x0BD", "0x0BE", "0x0BF" ,"0x0C0", "0x0C1", "0x0C2", "0x0C3", "0x0C4", "0x0C5", "0x0C6", "0x0C7", "0x0C8", "0x0C9", "0x0CA", "0x0CB", "0x0CC", "0x0CD", "0x0CE", "0x0CF", "0x0D0", "0x0D1", "0x0D2", "0x0D3", "0x0D4", "0x0D5", "0x0D6", "0x0D7", "0x0D8", "0x0D9", "0x0DA", "0x0DB", "0x0DC", "0x0DD", "0x0DE", "0x0DF", "0x0E0", "0x0E1", "0x0E2", "0x0E3", "0x0E4", "0x0E5", "0x0E6", "0x0E7", "0x0E8", "0x0E9", "0x0EA", "0x0EB", "0x0EC", "0x0ED", "0x0EE", "0x0EF" ,"0x0F0", "0x0F1", "0x0F2", "0x0F3", "0x0F4", "0x0F5", "0x0F6", "0x0F7", "0x0F8", "0x0F9", "0x0FA", "0x0FB", "0x0FC", "0x0FD", "0x0FE", "0x0FF" @@ -722,39 +722,56 @@ page = 9 ;wueAFRRates = array, U08, 107, [10], "%", 1.0, 0.0, 0.0, 255, 0 ;wueAFRBins = array, U08, 117, [10], "C", 1.0, -40, -40, 102.0, 0 - Auxin0pin = bits, U08, 121, [0:6], $ANALOG_DIG_PIN_LIST - Auxin1pin = bits, U08, 122, [0:6], $ANALOG_DIG_PIN_LIST - Auxin2pin = bits, U08, 123, [0:6], $ANALOG_DIG_PIN_LIST - Auxin3pin = bits, U08, 124, [0:6], $ANALOG_DIG_PIN_LIST - Auxin4pin = bits, U08, 125, [0:6], $ANALOG_DIG_PIN_LIST - Auxin5pin = bits, U08, 126, [0:6], $ANALOG_DIG_PIN_LIST - Auxin6pin = bits, U08, 127, [0:6], $ANALOG_DIG_PIN_LIST - Auxin7pin = bits, U08, 128, [0:6], $ANALOG_DIG_PIN_LIST - Auxin8pin = bits, U08, 129, [0:6], $ANALOG_DIG_PIN_LIST - Auxin9pin = bits, U08, 130, [0:6], $ANALOG_DIG_PIN_LIST - Auxin10pin = bits, U08, 131, [0:6], $ANALOG_DIG_PIN_LIST - Auxin11pin = bits, U08, 132, [0:6], $ANALOG_DIG_PIN_LIST - Auxin12pin = bits, U08, 133, [0:6], $ANALOG_DIG_PIN_LIST - Auxin13pin = bits, U08, 134, [0:6], $ANALOG_DIG_PIN_LIST - Auxin14pin = bits, U08, 135, [0:6], $ANALOG_DIG_PIN_LIST - Auxin15pin = bits, U08, 136, [0:6], $ANALOG_DIG_PIN_LIST + Auxin0pina = bits, U08, 121, [0:6], $ANALOG_PIN + Auxin1pina = bits, U08, 122, [0:6], $ANALOG_PIN + Auxin2pina = bits, U08, 123, [0:6], $ANALOG_PIN + Auxin3pina = bits, U08, 124, [0:6], $ANALOG_PIN + Auxin4pina = bits, U08, 125, [0:6], $ANALOG_PIN + Auxin5pina = bits, U08, 126, [0:6], $ANALOG_PIN + Auxin6pina = bits, U08, 127, [0:6], $ANALOG_PIN + Auxin7pina = bits, U08, 128, [0:6], $ANALOG_PIN + Auxin8pina = bits, U08, 129, [0:6], $ANALOG_PIN + Auxin9pina = bits, U08, 130, [0:6], $ANALOG_PIN + Auxin10pina = bits, U08, 131, [0:6], $ANALOG_PIN + Auxin11pina = bits, U08, 132, [0:6], $ANALOG_PIN + Auxin12pina = bits, U08, 133, [0:6], $ANALOG_PIN + Auxin13pina = bits, U08, 134, [0:6], $ANALOG_PIN + Auxin14pina = bits, U08, 135, [0:6], $ANALOG_PIN + Auxin15pina = bits, U08, 136, [0:6], $ANALOG_PIN - unused10_137 = scalar, U08, 137, "", 1, 0, 0, 255, 0 - unused10_138 = scalar, U08, 138, "", 1, 0, 0, 255, 0 - unused10_139 = scalar, U08, 139, "", 1, 0, 0, 255, 0 - unused10_140 = scalar, U08, 140, "", 1, 0, 0, 255, 0 - unused10_141 = scalar, U08, 141, "", 1, 0, 0, 255, 0 - unused10_142 = scalar, U08, 142, "", 1, 0, 0, 255, 0 - unused10_143 = scalar, U08, 143, "", 1, 0, 0, 255, 0 - unused10_144 = scalar, U08, 144, "", 1, 0, 0, 255, 0 - unused10_145 = scalar, U08, 145, "", 1, 0, 0, 255, 0 - unused10_146 = scalar, U08, 146, "", 1, 0, 0, 255, 0 - unused10_147 = scalar, U08, 147, "", 1, 0, 0, 255, 0 - unused10_148 = scalar, U08, 148, "", 1, 0, 0, 255, 0 - unused10_149 = scalar, U08, 149, "", 1, 0, 0, 255, 0 - unused10_150 = scalar, U08, 150, "", 1, 0, 0, 255, 0 - unused10_151 = scalar, U08, 151, "", 1, 0, 0, 255, 0 - unused10_152 = scalar, U08, 152, "", 1, 0, 0, 255, 0 + Auxin0pinb = bits, U08, 137, [0:6], $DIGITAL_PIN + Auxin1pinb = bits, U08, 138, [0:6], $DIGITAL_PIN + Auxin2pinb = bits, U08, 139, [0:6], $DIGITAL_PIN + Auxin3pinb = bits, U08, 140, [0:6], $DIGITAL_PIN + Auxin4pinb = bits, U08, 141, [0:6], $DIGITAL_PIN + Auxin5pinb = bits, U08, 142, [0:6], $DIGITAL_PIN + Auxin6pinb = bits, U08, 143, [0:6], $DIGITAL_PIN + Auxin7pinb = bits, U08, 144, [0:6], $DIGITAL_PIN + Auxin8pinb = bits, U08, 145, [0:6], $DIGITAL_PIN + Auxin9pinb = bits, U08, 146, [0:6], $DIGITAL_PIN + Auxin10pinb = bits, U08, 147, [0:6], $DIGITAL_PIN + Auxin11pinb = bits, U08, 148, [0:6], $DIGITAL_PIN + Auxin12pinb = bits, U08, 149, [0:6], $DIGITAL_PIN + Auxin13pinb = bits, U08, 150, [0:6], $DIGITAL_PIN + Auxin14pinb = bits, U08, 151, [0:6], $DIGITAL_PIN + Auxin15pinb = bits, U08, 152, [0:6], $DIGITAL_PIN + + ;unused10_137 = scalar, U08, 137, "", 1, 0, 0, 255, 0 + ;unused10_138 = scalar, U08, 138, "", 1, 0, 0, 255, 0 + ;unused10_139 = scalar, U08, 139, "", 1, 0, 0, 255, 0 + ;unused10_140 = scalar, U08, 140, "", 1, 0, 0, 255, 0 + ;unused10_141 = scalar, U08, 141, "", 1, 0, 0, 255, 0 + ;unused10_142 = scalar, U08, 142, "", 1, 0, 0, 255, 0 + ;unused10_143 = scalar, U08, 143, "", 1, 0, 0, 255, 0 + ;unused10_144 = scalar, U08, 144, "", 1, 0, 0, 255, 0 + ;unused10_145 = scalar, U08, 145, "", 1, 0, 0, 255, 0 + ;unused10_146 = scalar, U08, 146, "", 1, 0, 0, 255, 0 + ;unused10_147 = scalar, U08, 147, "", 1, 0, 0, 255, 0 + ;unused10_148 = scalar, U08, 148, "", 1, 0, 0, 255, 0 + ;unused10_149 = scalar, U08, 149, "", 1, 0, 0, 255, 0 + ;unused10_150 = scalar, U08, 150, "", 1, 0, 0, 255, 0 + ;unused10_151 = scalar, U08, 151, "", 1, 0, 0, 255, 0 + ;unused10_152 = scalar, U08, 152, "", 1, 0, 0, 255, 0 unused10_153 = scalar, U08, 153, "", 1, 0, 0, 255, 0 unused10_154 = scalar, U08, 154, "", 1, 0, 0, 255, 0 unused10_155 = scalar, U08, 155, "", 1, 0, 0, 255, 0 @@ -793,7 +810,8 @@ page = 9 unused10_188 = scalar, U08, 188, "", 1, 0, 0, 255, 0 unused10_189 = scalar, U08, 189, "", 1, 0, 0, 255, 0 unused10_190 = scalar, U08, 190, "", 1, 0, 0, 255, 0 - unused10_191 = scalar, U08, 191, "", 1, 0, 0, 255, 0 + blankfield = bits, U08, 191, [0:0], "","" + ;unused10_191 = scalar, U08, 191, "", 1, 0, 0, 255, 0 page = 10 #if CELSIUS @@ -979,6 +997,22 @@ page = 10 controllerPriority = bootloaderCaps + defaultValue = AUXin00Alias Aux0 + defaultValue = AUXin01Alias Aux1 + defaultValue = AUXin02Alias Aux2 + defaultValue = AUXin03Alias Aux3 + defaultValue = AUXin04Alias Aux4 + defaultValue = AUXin05Alias Aux5 + defaultValue = AUXin06Alias Aux6 + defaultValue = AUXin07Alias Aux7 + defaultValue = AUXin08Alias Aux8 + defaultValue = AUXin09Alias Aux9 + defaultValue = AUXin10Alias Aux10 + defaultValue = AUXin11Alias Aux11 + defaultValue = AUXin12Alias Aux12 + defaultValue = AUXin13Alias Aux13 + defaultValue = AUXin14Alias Aux14 + defaultValue = AUXin15Alias Aux15 [Menu] @@ -2103,24 +2137,73 @@ menuDialog = main field = "Control Type", resetControl field = "Control Pin", resetControlPin - dialog = Auxinput_pin_selection, "Pin", yAxis - field = "", Auxin0pin , {caninput_sel0 == 2 || caninput_sel0 == 3 } - field = "", Auxin1pin , {caninput_sel1 == 2 || caninput_sel0 == 3} - field = "", Auxin2pin , {caninput_sel2 == 2 || caninput_sel0 == 3} - field = "", Auxin3pin , {caninput_sel3 == 2 || caninput_sel0 == 3} - field = "", Auxin4pin , {caninput_sel4 == 2 || caninput_sel0 == 3} - field = "", Auxin5pin , {caninput_sel5 == 2 || caninput_sel0 == 3} - field = "", Auxin6pin , {caninput_sel6 == 2 || caninput_sel0 == 3} - field = "", Auxin7pin , {caninput_sel7 == 2 || caninput_sel0 == 3} - field = "", Auxin8pin , {caninput_sel8 == 2 || caninput_sel0 == 3} - field = "", Auxin9pin , {caninput_sel9 == 2 || caninput_sel0 == 3} - field = "", Auxin10pin , {caninput_sel10 == 2 || caninput_sel0 == 3} - field = "", Auxin11pin , {caninput_sel11 == 2 || caninput_sel0 == 3} - field = "", Auxin12pin , {caninput_sel12 == 2 || caninput_sel0 == 3} - field = "", Auxin13pin , {caninput_sel13 == 2 || caninput_sel0 == 3} - field = "", Auxin14pin , {caninput_sel14 == 2 || caninput_sel0 == 3} - field = "", Auxin15pin , {caninput_sel15 == 2 || caninput_sel0 == 3} - + dialog = Auxinput_pin_selection, "", yAxis + field = " PIN" + displayOnlyField = "Off", blankfield, {caninput_sel0 == 0},{caninput_sel0 == 0} + field = "", caninput_source_can_address0, { caninput_sel0 == 1 && enable_candata_in }, {caninput_sel0 == 1} + field = "", Auxin0pina , {caninput_sel0 == 2 || caninput_sel0 == 3 }, {caninput_sel0 == 2} + field = "", Auxin0pinb , {caninput_sel0 == 2 || caninput_sel0 == 3 }, {caninput_sel0 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel1 == 0},{caninput_sel1 == 0} + field = "", caninput_source_can_address1, { caninput_sel1 == 1 && enable_candata_in }, {caninput_sel1 == 1} + field = "", Auxin1pina , {caninput_sel1 == 2 || caninput_sel1 == 3}, {caninput_sel1 == 2} + field = "", Auxin1pinb , {caninput_sel1 == 2 || caninput_sel1 == 3}, {caninput_sel1 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel2 == 0},{caninput_sel2 == 0} + field = "", caninput_source_can_address2, { caninput_sel2 == 1 && enable_candata_in }, {caninput_sel2 == 1} + field = "", Auxin2pina , {caninput_sel2 == 2 || caninput_sel2 == 3}, {caninput_sel2 == 2} + field = "", Auxin2pinb , {caninput_sel2 == 2 || caninput_sel2 == 3}, {caninput_sel2 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel3 == 0},{caninput_sel3 == 0} + field = "", caninput_source_can_address3, { caninput_sel3 == 1 && enable_candata_in }, {caninput_sel3 == 1} + field = "", Auxin3pina , {caninput_sel3 == 2 || caninput_sel3 == 3}, {caninput_sel3 == 2} + field = "", Auxin3pinb , {caninput_sel3 == 2 || caninput_sel3 == 3}, {caninput_sel3 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel4 == 0},{caninput_sel4 == 0} + field = "", caninput_source_can_address4, { caninput_sel4 == 1 && enable_candata_in }, {caninput_sel4 == 1} + field = "", Auxin4pina , {caninput_sel4 == 2 || caninput_sel4 == 3}, {caninput_sel4 == 2} + field = "", Auxin4pinb , {caninput_sel4 == 2 || caninput_sel4 == 3}, {caninput_sel4 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel5 == 0},{caninput_sel5 == 0} + field = "", caninput_source_can_address5, { caninput_sel5 == 1 && enable_candata_in }, {caninput_sel5 == 1} + field = "", Auxin5pina , {caninput_sel5 == 2 || caninput_sel5 == 3}, {caninput_sel5 == 2} + field = "", Auxin5pinb , {caninput_sel5 == 2 || caninput_sel5 == 3}, {caninput_sel5 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel6 == 0},{caninput_sel6 == 0} + field = "", caninput_source_can_address6, { caninput_sel6 == 1 && enable_candata_in }, {caninput_sel6 == 1} + field = "", Auxin6pina , {caninput_sel6 == 2 || caninput_sel6 == 3}, {caninput_sel6 == 2} + field = "", Auxin6pinb , {caninput_sel6 == 2 || caninput_sel6 == 3}, {caninput_sel6 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel7 == 0},{caninput_sel7 == 0} + field = "", caninput_source_can_address7, { caninput_sel7 == 1 && enable_candata_in }, {caninput_sel7 == 1} + field = "", Auxin7pina , {caninput_sel7 == 2 || caninput_sel7 == 3}, {caninput_sel7 == 2} + field = "", Auxin7pinb , {caninput_sel7 == 2 || caninput_sel7 == 3}, {caninput_sel7 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel8 == 8},{caninput_sel8 == 0} + field = "", caninput_source_can_address8, { caninput_sel8 == 1 && enable_candata_in }, {caninput_sel8 == 1} + field = "", Auxin8pina , {caninput_sel8 == 2 || caninput_sel8 == 3}, {caninput_sel8 == 2} + field = "", Auxin8pinb , {caninput_sel8 == 2 || caninput_sel8 == 3}, {caninput_sel8 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel9 == 0},{caninput_sel9 == 0} + field = "", caninput_source_can_address9, { caninput_sel9 == 1 && enable_candata_in }, {caninput_sel9 == 1} + field = "", Auxin9pina , {caninput_sel9 == 2 || caninput_sel9 == 3}, {caninput_sel9 == 2} + field = "", Auxin9pinb , {caninput_sel9 == 2 || caninput_sel9 == 3}, {caninput_sel9 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel10 == 0},{caninput_sel10 == 0} + field = "", caninput_source_can_address10, { caninput_sel10 == 1 && enable_candata_in }, {caninput_sel10 == 1} + field = "", Auxin10pina , {caninput_sel10 == 2 || caninput_sel10 == 3}, {caninput_sel10 == 2} + field = "", Auxin10pinb , {caninput_sel10 == 2 || caninput_sel10 == 3}, {caninput_sel10 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel11 == 0},{caninput_sel11 == 0} + field = "", caninput_source_can_address11, { caninput_sel11 == 1 && enable_candata_in }, {caninput_sel11 == 1} + field = "", Auxin11pina , {caninput_sel11 == 2 || caninput_sel11 == 3}, {caninput_sel11 == 2} + field = "", Auxin11pinb , {caninput_sel11 == 2 || caninput_sel11 == 3}, {caninput_sel11 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel12 == 0},{caninput_sel12 == 0} + field = "", caninput_source_can_address12, { caninput_sel12 == 1 && enable_candata_in }, {caninput_sel12 == 1} + field = "", Auxin12pina , {caninput_sel12 == 2 || caninput_sel12 == 3}, {caninput_sel12 == 2} + field = "", Auxin12pinb , {caninput_sel12 == 2 || caninput_sel12 == 3}, {caninput_sel12 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel13 == 0},{caninput_sel13 == 0} + field = "", caninput_source_can_address13, { caninput_sel13 == 1 && enable_candata_in }, {caninput_sel13 == 1} + field = "", Auxin13pina , {caninput_sel13 == 2 || caninput_sel13 == 3}, {caninput_sel13 == 2} + field = "", Auxin13pinb , {caninput_sel13 == 2 || caninput_sel13 == 3}, {caninput_sel13 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel14 == 0},{caninput_sel14 == 0} + field = "", caninput_source_can_address14, { caninput_sel14 == 1 && enable_candata_in }, {caninput_sel14 == 1} + field = "", Auxin14pina , {caninput_sel14 == 2 || caninput_sel14 == 3}, {caninput_sel14 == 2} + field = "", Auxin14pinb , {caninput_sel14 == 2 || caninput_sel14 == 3}, {caninput_sel14 == 3} + displayOnlyField = "Off", blankfield, {caninput_sel15 == 0},{caninput_sel15 == 0} + field = "", caninput_source_can_address15, { caninput_sel15 == 1 && enable_candata_in }, {caninput_sel15 == 1} + field = "", Auxin15pina , {caninput_sel15 == 2 || caninput_sel15 == 3}, {caninput_sel15 == 2} + field = "", Auxin15pinb , {caninput_sel15 == 2 || caninput_sel15 == 3}, {caninput_sel15 == 3} + dialog = Auxinput_alias, "", yAxis field = "Input Alias" field = "", AUXin00Alias , {caninput_sel0} @@ -2557,25 +2640,23 @@ cmdtestspk450dc = "E\x03\x0C" #endif flexGauge = flex, "Flex sensor", "%", 0, 100, -1, -1, 999, 999, 0, 0 - #if CAN_COMMANDS - gaugeCategory = "CanBus Inputs" - CanGauge0 = canin_gauge0, "Can In0" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge1 = canin_gauge1, "Can In1" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge2 = canin_gauge2, "Can In2" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge3 = canin_gauge3, "Can In3" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge4 = canin_gauge4, "Can In4" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge5 = canin_gauge5, "Can In5" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge6 = canin_gauge6, "Can In6" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge7 = canin_gauge7, "Can In7" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge8 = canin_gauge8, "Can In8" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge9 = canin_gauge9, "Can In9" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge10 = canin_gauge10, "Can In10" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge11 = canin_gauge11, "Can In11" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge12 = canin_gauge12, "Can In12" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge13 = canin_gauge13, "Can In13" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge14 = canin_gauge14, "Can In14" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - CanGauge15 = canin_gauge15, "Can In15" "", 0, 1024, -1, -1, 1025, 1025, 0, 0 - #endif + gaugeCategory = "Auxillary Input Channels" + AuxInGauge0 = auxin_gauge0, { stringValue(AUXin00Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge1 = auxin_gauge1, { stringValue(AUXin01Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge2 = auxin_gauge2, { stringValue(AUXin02Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge3 = auxin_gauge3, { stringValue(AUXin03Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge4 = auxin_gauge4, { stringValue(AUXin04Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge5 = auxin_gauge5, { stringValue(AUXin05Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge6 = auxin_gauge6, { stringValue(AUXin06Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge7 = auxin_gauge7, { stringValue(AUXin07Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge8 = auxin_gauge8, { stringValue(AUXin08Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge9 = auxin_gauge9, { stringValue(AUXin09Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge10 = auxin_gauge10, { stringValue(AUXin10Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge11 = auxin_gauge11, { stringValue(AUXin11Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge12 = auxin_gauge12, { stringValue(AUXin12Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge13 = auxin_gauge13, { stringValue(AUXin13Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge14 = auxin_gauge14, { stringValue(AUXin14Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 + AuxInGauge15 = auxin_gauge15, { stringValue(AUXin15Alias) }, "", 0, 1024, -1, -1, 1025, 1025, 0, 0 gaugeCategory = "System Data" clockGauge = secl, "Clock", "Seconds", 0, 255, 10, 10, 245, 245, 0, 0 @@ -2701,22 +2782,22 @@ cmdtestspk450dc = "E\x03\x0C" testactive = bits, U08, 38, [1:1] afr2 = scalar, U08, 39, "O2", 0.100, 0.000 baro = scalar, U08, 40, "kpa", 1.000, 0.000 - canin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 - canin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 - canin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 - canin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 - canin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 - canin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 - canin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 - canin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 - canin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 - canin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 - canin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 - canin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 - canin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 - canin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 - canin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 - canin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 + auxin_gauge0 = scalar, U16, 41, "", 1.000, 0.000 + auxin_gauge1 = scalar, U16, 43, "", 1.000, 0.000 + auxin_gauge2 = scalar, U16, 45, "", 1.000, 0.000 + auxin_gauge3 = scalar, U16, 47, "", 1.000, 0.000 + auxin_gauge4 = scalar, U16, 49, "", 1.000, 0.000 + auxin_gauge5 = scalar, U16, 51, "", 1.000, 0.000 + auxin_gauge6 = scalar, U16, 53, "", 1.000, 0.000 + auxin_gauge7 = scalar, U16, 55, "", 1.000, 0.000 + auxin_gauge8 = scalar, U16, 57, "", 1.000, 0.000 + auxin_gauge9 = scalar, U16, 59, "", 1.000, 0.000 + auxin_gauge10 = scalar, U16, 61, "", 1.000, 0.000 + auxin_gauge11 = scalar, U16, 63, "", 1.000, 0.000 + auxin_gauge12 = scalar, U16, 65, "", 1.000, 0.000 + auxin_gauge13 = scalar, U16, 67, "", 1.000, 0.000 + auxin_gauge14 = scalar, U16, 69, "", 1.000, 0.000 + auxin_gauge15 = scalar, U16, 71, "", 1.000, 0.000 tpsADC = scalar, U08, 73, "ADC",1.000, 0.000 errors = scalar, U08, 74, "bits", 1.000, 0.000 errorNum = bits, U08, 74, [0:1] @@ -2837,16 +2918,14 @@ cmdtestspk450dc = "E\x03\x0C" entry = baro, "Baro Pressure",int, "%d" entry = nitrousOn, "Nitrous On", int, "%d", { n2o_enable > 0 } -#if CAN_COMMANDS - entry = canin_gauge0, "CanIn CH0", int, "%d" - entry = canin_gauge1, "CanIn CH1", int, "%d" - entry = canin_gauge2, "CanIn CH2", int, "%d" - entry = canin_gauge3, "CanIn CH3", int, "%d" - entry = canin_gauge4, "CanIn CH4", int, "%d" - entry = canin_gauge5, "CanIn CH5", int, "%d" - entry = canin_gauge6, "CanIn CH6", int, "%d" - entry = canin_gauge7, "CanIn CH7", int, "%d" -#endif + entry = auxin_gauge0, "AuxIn CH0", int, "%d" + entry = auxin_gauge1, "AuxIn CH1", int, "%d" + entry = auxin_gauge2, "AuxIn CH2", int, "%d" + entry = auxin_gauge3, "AuxIn CH3", int, "%d" + entry = auxin_gauge4, "AuxIn CH4", int, "%d" + entry = auxin_gauge5, "AuxIn CH5", int, "%d" + entry = auxin_gauge6, "AuxIn CH6", int, "%d" + entry = auxin_gauge7, "AuxIn CH7", int, "%d" [LoggerDefinition] diff --git a/speeduino/globals.h b/speeduino/globals.h index 714421dc..dc749f08 100644 --- a/speeduino/globals.h +++ b/speeduino/globals.h @@ -678,38 +678,9 @@ struct config9 { uint16_t true_address; //speeduino 11bit can address uint16_t realtime_base_address; //speeduino 11 bit realtime base address uint16_t obd_address; //speeduino OBD diagnostic address - uint8_t Auxinpin[16]; - byte unused10_121; - byte unused10_122; - byte unused10_123; - byte unused10_124; - byte unused10_125; - byte unused10_126; - byte unused10_127; - byte unused10_128; - byte unused10_129; - byte unused10_130; - byte unused10_131; - byte unused10_132; - byte unused10_133; - byte unused10_134; - byte unused10_135; - byte unused10_136; - byte unused10_137; - byte unused10_138; - byte unused10_139; - byte unused10_140; - byte unused10_141; - byte unused10_142; - byte unused10_143; - byte unused10_144; - byte unused10_145; - byte unused10_146; - byte unused10_147; - byte unused10_148; - byte unused10_149; - byte unused10_150; - byte unused10_151; + uint8_t Auxinpina[16]; //analog pin number when internal aux in use + uint8_t Auxinpinb[16]; // digital pin number when internal aux in use + byte unused10_152; byte unused10_153; byte unused10_154; diff --git a/speeduino/speeduino.ino b/speeduino/speeduino.ino index ce20710f..c994faef 100644 --- a/speeduino/speeduino.ino +++ b/speeduino/speeduino.ino @@ -967,9 +967,9 @@ void loop() //check through the Aux input channels if enabed for Can or local use for (byte AuxinChan = 0; AuxinChan <16 ; AuxinChan++) { - currentStatus.current_caninchannel = AuxinChan; - //currentStatus.canin[14] = currentStatus.current_caninchannel; - //currentStatus.canin[13] = ((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100); + currentStatus.current_caninchannel = AuxinChan; + //currentStatus.canin[14] = ((configPage9.Auxinpinb[currentStatus.current_caninchannel]&127)+1); + //currentStatus.canin[13] = (configPage9.caninput_sel[currentStatus.current_caninchannel]&3); if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 1) //if current input channel is enabled as canbus { if (configPage9.enable_candata_in) //if external data input is enabled @@ -981,15 +981,15 @@ void loop() } } } - else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin + else if ((configPage9.caninput_sel[currentStatus.current_caninchannel]&3) == 2) //if current input channel is enabled as analog local pin { //read analog channel specified - currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpina[currentStatus.current_caninchannel]&127); } - else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin + else if ((configPage9.caninput_sel[currentStatus.current_caninchannel]&3) == 3) //if current input channel is enabled as digital local pin { //read digital channel specified - currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital((configPage9.Auxinpinb[currentStatus.current_caninchannel]&127)+1); } } @@ -998,13 +998,13 @@ void loop() for (byte AuxinChan = 0; AuxinChan <16 ; AuxinChan++) { currentStatus.current_caninchannel = AuxinChan; - if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 1) //if current input channel is enabled as canbus + if ((configPage9.caninput_sel[currentStatus.current_caninchannel]&3) == 1) //if current input channel is enabled as canbus { if (configPage9.enable_candata_in) { if (configPage9.enable_canbus == 1) //can via secondary serial { - sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+256)); //send an R command for data from paramgroup[currentStatus.current_caninchannel] + sendCancommand(2,0,currentStatus.current_caninchannel,0,((configPage9.caninput_source_can_address[currentStatus.current_caninchannel]&2047)+0x100)); //send an R command for data from paramgroup[currentStatus.current_caninchannel] } else if (configPage9.enable_canbus == 2) // can via internal can module { @@ -1012,15 +1012,15 @@ void loop() } } } - else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 2) //if current input channel is enabled as analog local pin + else if ((configPage9.caninput_sel[currentStatus.current_caninchannel]&3) == 2) //if current input channel is enabled as analog local pin { //read analog channel specified - currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxanalog(configPage9.Auxinpina[currentStatus.current_caninchannel]&127); } - else if (configPage9.caninput_sel[currentStatus.current_caninchannel] == 3) //if current input channel is enabled as digital local pin + else if ((configPage9.caninput_sel[currentStatus.current_caninchannel]&3) == 3) //if current input channel is enabled as digital local pin { //read digital channel specified - currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital(configPage9.Auxinpin[currentStatus.current_caninchannel]); + currentStatus.canin[currentStatus.current_caninchannel] = readAuxdigital((configPage9.Auxinpinb[currentStatus.current_caninchannel]&127)+1); } } #endif diff --git a/speeduino/storage.h b/speeduino/storage.h index 51ddff72..10a56362 100644 --- a/speeduino/storage.h +++ b/speeduino/storage.h @@ -56,8 +56,8 @@ Current layout of EEPROM data (Version 3) is as follows (All sizes are in bytes) | 1441 |2 | X and Y size4 | | 1443 |36 | PAGE 9 MAP4 | | 1479 |6 | X and Y Bins4 | -| 1500 |128 | CANBUS config and data (Table 10_) | -| 1628 |192 | Table 11 - General settings | +| 1500 |192 | CANBUS config and data (Table 10_) | +| 1692 |192 | Table 11 - General settings | | | | 2559 |512 | Calibration data (O2) | | 3071 |512 | Calibration data (IAT) | @@ -127,9 +127,9 @@ Current layout of EEPROM data (Version 3) is as follows (All sizes are in bytes) #define EEPROM_CONFIG8_XBINS4 1689 #define EEPROM_CONFIG8_YBINS4 1695 #define EEPROM_CONFIG9_START 1710 -#define EEPROM_CONFIG9_END 1838 -#define EEPROM_CONFIG10_START 1838 -#define EEPROM_CONFIG10_END 2030 +#define EEPROM_CONFIG9_END 1902 +#define EEPROM_CONFIG10_START 1902 +#define EEPROM_CONFIG10_END 2094 //Calibration data is stored at the end of the EEPROM (This is in case any further calibration tables are needed as they are large blocks) #define EEPROM_LAST_BARO 2558 diff --git a/speeduino/storage.ino b/speeduino/storage.ino index f023f038..43bf91a5 100644 --- a/speeduino/storage.ino +++ b/speeduino/storage.ino @@ -353,7 +353,7 @@ void writeConfig(byte tableNum) case canbusPage: /*--------------------------------------------------- | Config page 10 (See storage.h for data layout) - | 128 byte long config table + | 192 byte long config table -----------------------------------------------------*/ pnt_configPage = (byte *)&configPage9; //Create a pointer to Page 10 in memory for(int x=EEPROM_CONFIG9_START; x