Speeduino
Loading...
Searching...
No Matches
globals.h
Go to the documentation of this file.
1
25#ifndef GLOBALS_H
26#define GLOBALS_H
27#include <Arduino.h>
28#include "table2d.h"
29#include "table3d.h"
30#include <assert.h>
31#include "src/FastCRC/FastCRC.h"
32
33#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
34 #define BOARD_MAX_DIGITAL_PINS 54 //digital pins +1
35 #define BOARD_MAX_IO_PINS 70 //digital pins + analog channels + 1
36 #define BOARD_MAX_ADC_PINS 15 //Number of analog pins
37 #ifndef LED_BUILTIN
38 #define LED_BUILTIN 13
39 #endif
40 #define CORE_AVR
41 #define BOARD_H "board_avr2560.h"
42 #ifndef INJ_CHANNELS
43 #define INJ_CHANNELS 4
44 #endif
45 #ifndef IGN_CHANNELS
46 #define IGN_CHANNELS 5
47 #endif
48
49 #if defined(__AVR_ATmega2561__)
50 //This is a workaround to avoid having to change all the references to higher ADC channels. We simply define the channels (Which don't exist on the 2561) as being the same as A0-A7
51 //These Analog inputs should never be used on any 2561 board definition (Because they don't exist on the MCU), so it will not cause any issues
52 #define A8 A0
53 #define A9 A1
54 #define A10 A2
55 #define A11 A3
56 #define A12 A4
57 #define A13 A5
58 #define A14 A6
59 #define A15 A7
60 #endif
61
62 //#define TIMER5_MICROS
63
64#elif defined(CORE_TEENSY)
65 #if defined(__MK64FX512__) || defined(__MK66FX1M0__)
66 #define CORE_TEENSY35
67 #define BOARD_H "board_teensy35.h"
68 #elif defined(__IMXRT1062__)
69 #define CORE_TEENSY41
70 #define BOARD_H "board_teensy41.h"
71 #endif
72 #define INJ_CHANNELS 8
73 #define IGN_CHANNELS 8
74
75#elif defined(STM32_MCU_SERIES) || defined(ARDUINO_ARCH_STM32) || defined(STM32)
76 #define BOARD_H "board_stm32_official.h"
77 #define CORE_STM32
78
79 #define BOARD_MAX_ADC_PINS NUM_ANALOG_INPUTS-1 //Number of analog pins from core.
80 #if defined(STM32F407xx) //F407 can do 8x8 STM32F401/STM32F411 don't
81 #define INJ_CHANNELS 8
82 #define IGN_CHANNELS 8
83 #else
84 #define INJ_CHANNELS 4
85 #define IGN_CHANNELS 5
86 #endif
87#elif defined(__SAMD21G18A__)
88 #define BOARD_H "board_samd21.h"
89 #define CORE_SAMD21
90 #define CORE_SAM
91 #define INJ_CHANNELS 4
92 #define IGN_CHANNELS 4
93#elif defined(__SAMC21J18A__)
94 #define BOARD_H "board_samc21.h"
95 #define CORE_SAMC21
96 #define CORE_SAM
97#elif defined(__SAME51J19A__)
98 #define BOARD_H "board_same51.h"
99 #define CORE_SAME51
100 #define CORE_SAM
101 #define INJ_CHANNELS 8
102 #define IGN_CHANNELS 8
103#else
104 #error Incorrect board selected. Please select the correct board (Usually Mega 2560) and upload again
105#endif
106
107//This can only be included after the above section
108#include BOARD_H //Note that this is not a real file, it is defined in globals.h.
109
110//Handy bitsetting macros
111#define BIT_SET(a,b) ((a) |= (1U<<(b)))
112#define BIT_CLEAR(a,b) ((a) &= ~(1U<<(b)))
113#define BIT_CHECK(var,pos) !!((var) & (1U<<(pos)))
114#define BIT_TOGGLE(var,pos) ((var)^= 1UL << (pos))
115#define BIT_WRITE(var, pos, bitvalue) ((bitvalue) ? BIT_SET((var), (pos)) : bitClear((var), (pos)))
116
117#define CRANK_ANGLE_MAX (max(CRANK_ANGLE_MAX_IGN, CRANK_ANGLE_MAX_INJ))
118
119#define interruptSafe(c) (noInterrupts(); {c} interrupts();) //Wraps any code between nointerrupt and interrupt calls
120
121#define MICROS_PER_SEC INT32_C(1000000)
122#define MICROS_PER_MIN INT32_C(MICROS_PER_SEC*60U)
123#define MICROS_PER_HOUR INT32_C(MICROS_PER_MIN*60U)
124
125#define SERIAL_PORT_PRIMARY 0
126#define SERIAL_PORT_SECONDARY 3
127
128//Define the load algorithm
129#define LOAD_SOURCE_MAP 0
130#define LOAD_SOURCE_TPS 1
131#define LOAD_SOURCE_IMAPEMAP 2
132
133//Define bit positions within engine variable
134#define BIT_ENGINE_RUN 0 // Engine running
135#define BIT_ENGINE_CRANK 1 // Engine cranking
136#define BIT_ENGINE_ASE 2 // after start enrichment (ASE)
137#define BIT_ENGINE_WARMUP 3 // Engine in warmup
138#define BIT_ENGINE_ACC 4 // in acceleration mode (TPS accel)
139#define BIT_ENGINE_DCC 5 // in deceleration mode
140#define BIT_ENGINE_MAPACC 6 // MAP acceleration mode
141#define BIT_ENGINE_MAPDCC 7 // MAP deceleration mode
142
143//Define masks for Status1
144#define BIT_STATUS1_INJ1 0 //inj1
145#define BIT_STATUS1_INJ2 1 //inj2
146#define BIT_STATUS1_INJ3 2 //inj3
147#define BIT_STATUS1_INJ4 3 //inj4
148#define BIT_STATUS1_DFCO 4 //Deceleration fuel cutoff
149#define BIT_STATUS1_BOOSTCUT 5 //Fuel component of MAP based boost cut out
150#define BIT_STATUS1_TOOTHLOG1READY 6 //Used to flag if tooth log 1 is ready
151#define BIT_STATUS1_TOOTHLOG2READY 7 //Used to flag if tooth log 2 is ready (Log is not currently used)
152
153//Define masks for spark variable
154#define BIT_STATUS2_HLAUNCH 0 //Hard Launch indicator
155#define BIT_STATUS2_SLAUNCH 1 //Soft Launch indicator
156#define BIT_STATUS2_HRDLIM 2 //Hard limiter indicator
157#define BIT_STATUS2_SFTLIM 3 //Soft limiter indicator
158#define BIT_STATUS2_BOOSTCUT 4 //Spark component of MAP based boost cut out
159#define BIT_STATUS2_ERROR 5 // Error is detected
160#define BIT_STATUS2_IDLE 6 // idle on
161#define BIT_STATUS2_SYNC 7 // Whether engine has sync or not
162
163#define BIT_STATUS5_FLATSH 0 //Flat shift hard cut
164#define BIT_STATUS5_FLATSS 1 //Flat shift soft cut
165#define BIT_STATUS5_SPARK2_ACTIVE 2
166#define BIT_STATUS5_KNOCK_ACTIVE 3
167#define BIT_STATUS5_KNOCK_PULSE 4
168#define BIT_STATUS5_UNUSED6 5
169#define BIT_STATUS5_UNUSED7 6
170#define BIT_STATUS5_UNUSED8 7
171
172#define BIT_TIMER_1HZ 0
173#define BIT_TIMER_4HZ 1
174#define BIT_TIMER_10HZ 2
175#define BIT_TIMER_15HZ 3
176#define BIT_TIMER_30HZ 4
177#define BIT_TIMER_50HZ 5
178#define BIT_TIMER_200HZ 6
179#define BIT_TIMER_1KHZ 7
180
181#define BIT_STATUS3_RESET_PREVENT 0 //Indicates whether reset prevention is enabled
182#define BIT_STATUS3_NITROUS 1
183#define BIT_STATUS3_FUEL2_ACTIVE 2
184#define BIT_STATUS3_VSS_REFRESH 3
185#define BIT_STATUS3_HALFSYNC 4 //shows if there is only sync from primary trigger, but not from secondary.
186#define BIT_STATUS3_NSQUIRTS1 5
187#define BIT_STATUS3_NSQUIRTS2 6
188#define BIT_STATUS3_NSQUIRTS3 7
189
190#define BIT_STATUS4_WMI_EMPTY 0 //Indicates whether the WMI tank is empty
191#define BIT_STATUS4_VVT1_ERROR 1 //VVT1 cam angle within limits or not
192#define BIT_STATUS4_VVT2_ERROR 2 //VVT2 cam angle within limits or not
193#define BIT_STATUS4_FAN 3 //Fan Status
194#define BIT_STATUS4_BURNPENDING 4
195#define BIT_STATUS4_STAGING_ACTIVE 5
196#define BIT_STATUS4_COMMS_COMPAT 6
197#define BIT_STATUS4_ALLOW_LEGACY_COMMS 7
198
199#define BIT_AIRCON_REQUEST 0 //Indicates whether the A/C button is pressed
200#define BIT_AIRCON_COMPRESSOR 1 //Indicates whether the A/C compressor is running
201#define BIT_AIRCON_RPM_LOCKOUT 2 //Indicates the A/C is locked out due to the RPM being too high/low, or the post-high/post-low-RPM "stand-down" lockout period
202#define BIT_AIRCON_TPS_LOCKOUT 3 //Indicates the A/C is locked out due to high TPS, or the post-high-TPS "stand-down" lockout period
203#define BIT_AIRCON_TURNING_ON 4 //Indicates the A/C request is on (i.e. A/C button pressed), the lockouts are off, however the start delay has not yet elapsed. This gives the idle up time to kick in before the compressor.
204#define BIT_AIRCON_CLT_LOCKOUT 5 //Indicates the A/C is locked out either due to high coolant temp.
205#define BIT_AIRCON_FAN 6 //Indicates whether the A/C fan is running
206#define BIT_AIRCON_UNUSED8 7
207
208#define VALID_MAP_MAX 1022 //The largest ADC value that is valid for the MAP sensor
209#define VALID_MAP_MIN 2 //The smallest ADC value that is valid for the MAP sensor
210
211#ifndef UNIT_TEST
212#define TOOTH_LOG_SIZE 127U
213#else
214#define TOOTH_LOG_SIZE 1U
215#endif
216// Some code relies on TOOTH_LOG_SIZE being uint8_t.
217static_assert(TOOTH_LOG_SIZE<UINT8_MAX, "Check all uses of TOOTH_LOG_SIZE");
218
219#define O2_CALIBRATION_PAGE 2U
220#define IAT_CALIBRATION_PAGE 1U
221#define CLT_CALIBRATION_PAGE 0U
222
223// note the sequence of these defines which reference the bits used in a byte has moved when the third trigger & engine cycle was incorporated
224#define COMPOSITE_LOG_PRI 0
225#define COMPOSITE_LOG_SEC 1
226#define COMPOSITE_LOG_THIRD 2
227#define COMPOSITE_LOG_TRIG 3
228#define COMPOSITE_LOG_SYNC 4
229#define COMPOSITE_ENGINE_CYCLE 5
230
231#define EGO_TYPE_OFF 0
232#define EGO_TYPE_NARROW 1
233#define EGO_TYPE_WIDE 2
234
235#define INJ_TYPE_PORT 0
236#define INJ_TYPE_TBODY 1
237
238#define INJ_PAIRED 0
239#define INJ_SEMISEQUENTIAL 1
240#define INJ_BANKED 2
241#define INJ_SEQUENTIAL 3
242
243#define INJ_PAIR_13_24 0
244#define INJ_PAIR_14_23 1
245
246#define OUTPUT_CONTROL_DIRECT 0
247#define OUTPUT_CONTROL_MC33810 10
248
249#define IGN_MODE_WASTED 0U
250#define IGN_MODE_SINGLE 1U
251#define IGN_MODE_WASTEDCOP 2U
252#define IGN_MODE_SEQUENTIAL 3U
253#define IGN_MODE_ROTARY 4U
254
255#define SEC_TRIGGER_SINGLE 0
256#define SEC_TRIGGER_4_1 1
257#define SEC_TRIGGER_POLL 2
258#define SEC_TRIGGER_5_3_2 3
259#define SEC_TRIGGER_TOYOTA_3 4
260
261#define ROTARY_IGN_FC 0
262#define ROTARY_IGN_FD 1
263#define ROTARY_IGN_RX8 2
264
265#define BOOST_MODE_SIMPLE 0
266#define BOOST_MODE_FULL 1
267
268#define EN_BOOST_CONTROL_BARO 0
269#define EN_BOOST_CONTROL_FIXED 1
270
271#define WMI_MODE_SIMPLE 0
272#define WMI_MODE_PROPORTIONAL 1
273#define WMI_MODE_OPENLOOP 2
274#define WMI_MODE_CLOSEDLOOP 3
275
276#define HARD_CUT_FULL 0
277#define HARD_CUT_ROLLING 1
278
279#define EVEN_FIRE 0
280#define ODD_FIRE 1
281
282#define EGO_ALGORITHM_SIMPLE 0U
283#define EGO_ALGORITHM_INVALID1 1U
284#define EGO_ALGORITHM_PID 2U
285#define EGO_ALGORITHM_NONE 3U
286
287#define STAGING_MODE_TABLE 0
288#define STAGING_MODE_AUTO 1
289
290#define NITROUS_OFF 0
291#define NITROUS_STAGE1 1
292#define NITROUS_STAGE2 2
293#define NITROUS_BOTH 3
294
295#define PROTECT_CUT_OFF 0
296#define PROTECT_CUT_IGN 1
297#define PROTECT_CUT_FUEL 2
298#define PROTECT_CUT_BOTH 3
299#define PROTECT_IO_ERROR 7
300
301#define AE_MODE_TPS 0
302#define AE_MODE_MAP 1
303
304#define AE_MODE_MULTIPLIER 0
305#define AE_MODE_ADDER 1
306
307#define KNOCK_MODE_OFF 0
308#define KNOCK_MODE_DIGITAL 1
309#define KNOCK_MODE_ANALOG 2
310
311#define KNOCK_TRIGGER_HIGH 0
312#define KNOCK_TRIGGER_LOW 1
313
314#define FUEL2_MODE_OFF 0
315#define FUEL2_MODE_MULTIPLY 1
316#define FUEL2_MODE_ADD 2
317#define FUEL2_MODE_CONDITIONAL_SWITCH 3
318#define FUEL2_MODE_INPUT_SWITCH 4
319
320#define SPARK2_MODE_OFF 0
321#define SPARK2_MODE_MULTIPLY 1
322#define SPARK2_MODE_ADD 2
323#define SPARK2_MODE_CONDITIONAL_SWITCH 3
324#define SPARK2_MODE_INPUT_SWITCH 4
325
326#define FUEL2_CONDITION_RPM 0
327#define FUEL2_CONDITION_MAP 1
328#define FUEL2_CONDITION_TPS 2
329#define FUEL2_CONDITION_ETH 3
330
331#define SPARK2_CONDITION_RPM 0
332#define SPARK2_CONDITION_MAP 1
333#define SPARK2_CONDITION_TPS 2
334#define SPARK2_CONDITION_ETH 3
335
336#define RESET_CONTROL_DISABLED 0U
337#define RESET_CONTROL_PREVENT_WHEN_RUNNING 1U
338#define RESET_CONTROL_PREVENT_ALWAYS 2U
339#define RESET_CONTROL_SERIAL_COMMAND 3U
340
341#define OPEN_LOOP_BOOST 0
342#define CLOSED_LOOP_BOOST 1
343
344#define SOFT_LIMIT_FIXED 0
345#define SOFT_LIMIT_RELATIVE 1
346
347#define VVT_MODE_ONOFF 0
348#define VVT_MODE_OPEN_LOOP 1
349#define VVT_MODE_CLOSED_LOOP 2
350#define VVT_LOAD_MAP 0
351#define VVT_LOAD_TPS 1
352
353#define MULTIPLY_MAP_MODE_OFF 0
354#define MULTIPLY_MAP_MODE_BARO 1
355#define MULTIPLY_MAP_MODE_100 2
356
357#define FOUR_STROKE 0U
358#define TWO_STROKE 1U
359
360#define GOING_LOW 0
361#define GOING_HIGH 1
362
363#define BATTV_COR_MODE_WHOLE 0
364#define BATTV_COR_MODE_OPENTIME 1
365
366#define INJ1_CMD_BIT 0
367#define INJ2_CMD_BIT 1
368#define INJ3_CMD_BIT 2
369#define INJ4_CMD_BIT 3
370#define INJ5_CMD_BIT 4
371#define INJ6_CMD_BIT 5
372#define INJ7_CMD_BIT 6
373#define INJ8_CMD_BIT 7
374
375#define IGN1_CMD_BIT 0
376#define IGN2_CMD_BIT 1
377#define IGN3_CMD_BIT 2
378#define IGN4_CMD_BIT 3
379#define IGN5_CMD_BIT 4
380#define IGN6_CMD_BIT 5
381#define IGN7_CMD_BIT 6
382#define IGN8_CMD_BIT 7
383
384#define ENGINE_PROTECT_BIT_RPM 0
385#define ENGINE_PROTECT_BIT_MAP 1
386#define ENGINE_PROTECT_BIT_OIL 2
387#define ENGINE_PROTECT_BIT_AFR 3
388#define ENGINE_PROTECT_BIT_COOLANT 4
389
390
391#define CALIBRATION_TABLE_SIZE 512
392#define CALIBRATION_TEMPERATURE_OFFSET 40
394#define OFFSET_FUELTRIM 127U
395#define OFFSET_IGNITION 40
396
397#define SERIAL_BUFFER_THRESHOLD 32
398
399#define LOGGER_CSV_SEPARATOR_SEMICOLON 0
400#define LOGGER_CSV_SEPARATOR_COMMA 1
401#define LOGGER_CSV_SEPARATOR_TAB 2
402#define LOGGER_CSV_SEPARATOR_SPACE 3
403
404#define LOGGER_DISABLED 0
405#define LOGGER_CSV 1
406#define LOGGER_BINARY 2
407
408#define LOGGER_RATE_1HZ 0
409#define LOGGER_RATE_4HZ 1
410#define LOGGER_RATE_10HZ 2
411#define LOGGER_RATE_30HZ 3
412
413#define LOGGER_FILENAMING_OVERWRITE 0
414#define LOGGER_FILENAMING_DATETIME 1
415#define LOGGER_FILENAMING_SEQENTIAL 2
416
417extern const char TSfirmwareVersion[] PROGMEM;
418
419extern const byte data_structure_version; //This identifies the data structure when reading / writing. Now in use: CURRENT_DATA_VERSION (migration on-the fly) ?
420
421extern struct table3d16RpmLoad fuelTable; //16x16 fuel map
422extern struct table3d16RpmLoad fuelTable2; //16x16 fuel map
423extern struct table3d16RpmLoad ignitionTable; //16x16 ignition map
424extern struct table3d16RpmLoad ignitionTable2; //16x16 ignition map
425extern struct table3d16RpmLoad afrTable; //16x16 afr target map
426extern struct table3d8RpmLoad stagingTable; //8x8 fuel staging table
427extern struct table3d8RpmLoad boostTable; //8x8 boost map
428extern struct table3d8RpmLoad boostTableLookupDuty; //8x8 boost map
429extern struct table3d8RpmLoad vvtTable; //8x8 vvt map
430extern struct table3d8RpmLoad vvt2Table; //8x8 vvt map
431extern struct table3d8RpmLoad wmiTable; //8x8 wmi map
432
434
435extern trimTable3d trim1Table; //6x6 Fuel trim 1 map
436extern trimTable3d trim2Table; //6x6 Fuel trim 2 map
437extern trimTable3d trim3Table; //6x6 Fuel trim 3 map
438extern trimTable3d trim4Table; //6x6 Fuel trim 4 map
439extern trimTable3d trim5Table; //6x6 Fuel trim 5 map
440extern trimTable3d trim6Table; //6x6 Fuel trim 6 map
441extern trimTable3d trim7Table; //6x6 Fuel trim 7 map
442extern trimTable3d trim8Table; //6x6 Fuel trim 8 map
443
444extern struct table3d4RpmLoad dwellTable; //4x4 Dwell map
445extern struct table2D taeTable; //4 bin TPS Acceleration Enrichment map (2D)
446extern struct table2D maeTable;
447extern struct table2D WUETable; //10 bin Warm Up Enrichment map (2D)
448extern struct table2D ASETable; //4 bin After Start Enrichment map (2D)
449extern struct table2D ASECountTable; //4 bin After Start duration map (2D)
450extern struct table2D PrimingPulseTable; //4 bin Priming pulsewidth map (2D)
451extern struct table2D crankingEnrichTable; //4 bin cranking Enrichment map (2D)
452extern struct table2D dwellVCorrectionTable; //6 bin dwell voltage correction (2D)
453extern struct table2D injectorVCorrectionTable; //6 bin injector voltage correction (2D)
454extern struct table2D injectorAngleTable; //4 bin injector timing curve (2D)
455extern struct table2D IATDensityCorrectionTable; //9 bin inlet air temperature density correction (2D)
456extern struct table2D baroFuelTable; //8 bin baro correction curve (2D)
457extern struct table2D IATRetardTable; //6 bin ignition adjustment based on inlet air temperature (2D)
458extern struct table2D idleTargetTable; //10 bin idle target table for idle timing (2D)
459extern struct table2D idleAdvanceTable; //6 bin idle advance adjustment table based on RPM difference (2D)
460extern struct table2D CLTAdvanceTable; //6 bin ignition adjustment based on coolant temperature (2D)
461extern struct table2D rotarySplitTable; //8 bin ignition split curve for rotary leading/trailing (2D)
462extern struct table2D flexFuelTable; //6 bin flex fuel correction table for fuel adjustments (2D)
463extern struct table2D flexAdvTable; //6 bin flex fuel correction table for timing advance (2D)
464extern struct table2D flexBoostTable; //6 bin flex fuel correction table for boost adjustments (2D)
465extern struct table2D fuelTempTable; //6 bin fuel temperature correction table for fuel adjustments (2D)
466extern struct table2D knockWindowStartTable;
468extern struct table2D oilPressureProtectTable;
469extern struct table2D wmiAdvTable; //6 bin wmi correction table for timing advance (2D)
470extern struct table2D coolantProtectTable; //6 bin coolant temperature protection table for engine protection (2D)
471extern struct table2D fanPWMTable;
472extern struct table2D rollingCutTable;
473
474//These are for the direct port manipulation of the injectors, coils and aux outputs
475extern volatile PORT_TYPE *inj1_pin_port;
476extern volatile PINMASK_TYPE inj1_pin_mask;
477extern volatile PORT_TYPE *inj2_pin_port;
478extern volatile PINMASK_TYPE inj2_pin_mask;
479extern volatile PORT_TYPE *inj3_pin_port;
480extern volatile PINMASK_TYPE inj3_pin_mask;
481extern volatile PORT_TYPE *inj4_pin_port;
482extern volatile PINMASK_TYPE inj4_pin_mask;
483extern volatile PORT_TYPE *inj5_pin_port;
484extern volatile PINMASK_TYPE inj5_pin_mask;
485extern volatile PORT_TYPE *inj6_pin_port;
486extern volatile PINMASK_TYPE inj6_pin_mask;
487extern volatile PORT_TYPE *inj7_pin_port;
488extern volatile PINMASK_TYPE inj7_pin_mask;
489extern volatile PORT_TYPE *inj8_pin_port;
490extern volatile PINMASK_TYPE inj8_pin_mask;
491
492extern volatile PORT_TYPE *ign1_pin_port;
493extern volatile PINMASK_TYPE ign1_pin_mask;
494extern volatile PORT_TYPE *ign2_pin_port;
495extern volatile PINMASK_TYPE ign2_pin_mask;
496extern volatile PORT_TYPE *ign3_pin_port;
497extern volatile PINMASK_TYPE ign3_pin_mask;
498extern volatile PORT_TYPE *ign4_pin_port;
499extern volatile PINMASK_TYPE ign4_pin_mask;
500extern volatile PORT_TYPE *ign5_pin_port;
501extern volatile PINMASK_TYPE ign5_pin_mask;
502extern volatile PORT_TYPE *ign6_pin_port;
503extern volatile PINMASK_TYPE ign6_pin_mask;
504extern volatile PORT_TYPE *ign7_pin_port;
505extern volatile PINMASK_TYPE ign7_pin_mask;
506extern volatile PORT_TYPE *ign8_pin_port;
507extern volatile PINMASK_TYPE ign8_pin_mask;
508
509extern volatile PORT_TYPE *tach_pin_port;
510extern volatile PINMASK_TYPE tach_pin_mask;
511extern volatile PORT_TYPE *pump_pin_port;
512extern volatile PINMASK_TYPE pump_pin_mask;
513
514extern volatile PORT_TYPE *flex_pin_port;
515extern volatile PINMASK_TYPE flex_pin_mask;
516
517extern volatile PORT_TYPE *triggerPri_pin_port;
518extern volatile PINMASK_TYPE triggerPri_pin_mask;
519extern volatile PORT_TYPE *triggerSec_pin_port;
520extern volatile PINMASK_TYPE triggerSec_pin_mask;
521extern volatile PORT_TYPE *triggerThird_pin_port;
522extern volatile PINMASK_TYPE triggerThird_pin_mask;
523
524extern byte triggerInterrupt;
525extern byte triggerInterrupt2;
526extern byte triggerInterrupt3;
527
528
529extern byte fpPrimeTime; //The time (in seconds, based on currentStatus.secl) that the fuel pump started priming
530extern uint8_t softLimitTime; //The time (in 0.1 seconds, based on seclx10) that the soft limiter started
531extern volatile uint16_t mainLoopCount;
532extern uint32_t revolutionTime; //The time in uS that one revolution would take at current speed (The time tooth 1 was last seen, minus the time it was seen prior to that)
533extern volatile unsigned long timer5_overflow_count; //Increments every time counter 5 overflows. Used for the fast version of micros()
534extern volatile unsigned long ms_counter; //A counter that increments once per ms
536extern volatile uint32_t toothHistory[TOOTH_LOG_SIZE];
538extern volatile unsigned int toothHistoryIndex;
539extern unsigned long currentLoopTime;
540extern volatile uint16_t ignitionCount;
541//The below shouldn't be needed and probably should be cleaned up, but the Atmel SAM (ARM) boards use a specific type for the trigger edge values rather than a simple byte/int
542#if defined(CORE_SAMD21)
546#else
547 extern byte primaryTriggerEdge;
548 extern byte secondaryTriggerEdge;
549 extern byte tertiaryTriggerEdge;
550#endif
551extern int CRANK_ANGLE_MAX_IGN;
552extern int CRANK_ANGLE_MAX_INJ;
553extern volatile uint32_t runSecsX10;
554extern volatile uint32_t seclx10;
555extern volatile byte HWTest_INJ;
556extern volatile byte HWTest_INJ_Pulsed;
557extern volatile byte HWTest_IGN;
558extern volatile byte HWTest_IGN_Pulsed;
559extern byte maxIgnOutputs;
560extern byte maxInjOutputs;
561extern byte resetControl;
562extern volatile byte TIMER_mask;
563extern volatile byte LOOP_TIMER;
564
565//These functions all do checks on a pin to determine if it is already in use by another (higher importance) function
566#define pinIsInjector(pin) ( ((pin) == pinInjector1) || ((pin) == pinInjector2) || ((pin) == pinInjector3) || ((pin) == pinInjector4) || ((pin) == pinInjector5) || ((pin) == pinInjector6) || ((pin) == pinInjector7) || ((pin) == pinInjector8) )
567#define pinIsIgnition(pin) ( ((pin) == pinCoil1) || ((pin) == pinCoil2) || ((pin) == pinCoil3) || ((pin) == pinCoil4) || ((pin) == pinCoil5) || ((pin) == pinCoil6) || ((pin) == pinCoil7) || ((pin) == pinCoil8) )
568//#define pinIsOutput(pin) ( pinIsInjector((pin)) || pinIsIgnition((pin)) || ((pin) == pinFuelPump) || ((pin) == pinFan) || ((pin) == pinAirConComp) || ((pin) == pinAirConFan)|| ((pin) == pinVVT_1) || ((pin) == pinVVT_2) || ( ((pin) == pinBoost) && configPage6.boostEnabled) || ((pin) == pinIdle1) || ((pin) == pinIdle2) || ((pin) == pinTachOut) || ((pin) == pinStepperEnable) || ((pin) == pinStepperStep) )
569#define pinIsSensor(pin) ( ((pin) == pinCLT) || ((pin) == pinIAT) || ((pin) == pinMAP) || ((pin) == pinTPS) || ((pin) == pinO2) || ((pin) == pinBat) || (((pin) == pinFlex) && (configPage2.flexEnabled != 0)) )
570//#define pinIsUsed(pin) ( pinIsSensor((pin)) || pinIsOutput((pin)) || pinIsReserved((pin)) )
571
572
578struct statuses {
579 volatile bool hasSync : 1;
581 bool initialisationComplete : 1; //Tracks whether the setup() function has run completely
584 volatile bool fpPrimed : 1; //Tracks whether or not the fuel pump priming has been completed yet
585 volatile bool injPrimed : 1; //Tracks whether or not the injector priming has been completed yet
586 volatile bool tachoSweepEnabled : 1;
587 volatile bool tachoAlt : 1;
588
591 long longRPM;
594 long MAP;
597 byte baro;
598 byte TPS;
599 byte tpsADC;
601 byte TPSlast;
603 volatile int rpmDOT;
604 byte VE;
605 byte VE1;
606 byte VE2;
607 byte O2;
608 byte O2_2;
611 int IAT;
614 int O2ADC;
638 volatile byte ethanolPct;
639 volatile int8_t fuelTemp;
640 unsigned long AEEndTime;
641 volatile byte status1;
642 volatile byte status2;
643 volatile byte status3;
644 volatile byte status4;
645 volatile byte status5;
647 unsigned int PW1;
648 unsigned int PW2;
649 unsigned int PW3;
650 unsigned int PW4;
651 unsigned int PW5;
652 unsigned int PW6;
653 unsigned int PW7;
654 unsigned int PW8;
655 volatile byte runSecs;
656 volatile byte secl;
661 unsigned int clutchEngagedRPM;
666 bool testActive; // Not in use ? Replaced by testOutputs ?
668 byte idleLoad;
674 byte nSquirts;
681 volatile byte syncLossCounter;
683 volatile byte knockCount;
685 byte compositeTriggerUsed; // 0 means composite logger disabled, 2 means use secondary input (1st cam), 3 means use tertiary input (2nd cam), 4 means log both cams together
686 int16_t vvt1Angle; //Has to be a long for PID calcs (CL VVT control)
688 long vvt1Duty; //Has to be a long for PID calcs (CL VVT control)
693 byte gear;
698 byte wmiPW;
699 int16_t vvt2Angle; //Has to be a long for PID calcs (CL VVT control)
701 long vvt2Duty; //Has to be a long for PID calcs (CL VVT control)
703 byte TS_SD_Status; //TunerStudios SD card status
705};
706
707static inline bool HasAnySync(const statuses &status) {
708 return status.hasSync || BIT_CHECK(status.status3, BIT_STATUS3_HALFSYNC);
709}
710
718struct config2 {
719
721 byte aeColdPct; //AE cold clt modifier %
722 byte aeColdTaperMin; //AE cold modifier, taper start temp (full modifier, was ASE in early versions)
723 byte aeMode : 2;
724 byte battVCorMode : 1;
727 byte aeApplyMode : 1;
728 byte multiplyMAP : 2;
729 byte wueValues[10];
732 byte tachoPin : 6;
733 byte tachoDiv : 2;
734 byte tachoDuration; //The duration of the tacho pulse in mS
737 byte aeTime;
741 //Display config bits
742 byte displayB1 : 4; //23
743 byte displayB2 : 4;
744
745 byte reqFuel; //24
747 byte injTiming : 1;
749 byte includeAFR : 1; //< Enable AFR compensation ? (See also @ref config2.incorporateAFR)
750 byte hardCutType : 1;
751 byte ignAlgorithm : 3;
752 byte indInjAng : 1;
753 byte injOpen;
755
756 //config1 in ini
757 byte mapSample : 2;
758 byte strokes : 1;
759 byte injType : 1;
760 byte nCylinders : 4;
761
762 //config2 in ini
764 byte fixAngEnable : 1;
765 byte nInjectors : 4;
766
767
768 //config3 in ini
769 byte engineType : 1;
770 byte flexEnabled : 1;
771 byte legacyMAP : 1;
772 byte baroCorr : 1; // Unused ?
773 byte injLayout : 2;
775 byte perToothIgn : 1;
776 byte dfcoEnabled : 1;
777
780 byte flexFreqLow; //Lowest valid frequency reading from the flex sensor
781 byte flexFreqHigh; //Highest valid frequency reading from the flex sensor
782
784 byte tpsMin;
785 byte tpsMax;
786 int8_t mapMin; //Must be signed
788 byte fpPrime;
789 byte stoich;
793
794 byte idleUpPin : 6;
797
801
805
806 int8_t baroMin; //Must be signed
808
809 int8_t EMAPMin; //Must be signed
811
812 byte fanWhenOff : 1;
814 byte useDwellMap : 1;
815 byte fanEnable : 2;
816 byte rtc_mode : 2; // Unused ?
817 byte incorporateAFR : 1;
818 byte asePct[4];
819 byte aseCount[4];
820 byte aseBins[4];
821 byte primePulse[4];//Priming pulsewidth values (mS, copied to @ref PrimingPulseTable)
822 byte primeBins[4]; //Priming temperatures (source,x-axis)
823
824 byte CTPSPin : 6;
825 byte CTPSPolarity : 1;
826 byte CTPSEnabled : 1;
827
830 byte idleAdvDelay : 5;
831
834
835 byte injAngRPM[4];
836
840
841 //VSS Stuff
842 byte vssMode : 2;
843 byte vssPin : 6;
844
853
857
860
863
867
870 byte canWBO : 2 ;
871 byte vssAuxCh : 4;
872
874
875#if defined(CORE_AVR)
876 };
877#else
878 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
879#endif
880
881#define IDLEADVANCE_MODE_OFF 0U
882#define IDLEADVANCE_MODE_ADDED 1U
883#define IDLEADVANCE_MODE_SWITCHED 2U
884
885#define IDLEADVANCE_ALGO_TPS 0U
886#define IDLEADVANCE_ALGO_CTPS 1U
887
891struct config4 {
892
897
898 byte TrigEdge : 1;
899 byte TrigSpeed : 1;
900 byte IgInv : 1;
901 byte TrigPattern : 5;
902
903 byte TrigEdgeSec : 1;
904 byte fuelPumpPin : 6;
905 byte useResync : 1;
906
907 byte sparkDur;
908 byte trigPatternSec : 7;
909 byte PollLevelPolarity : 1; //for poll level cam trigger. Sets if the cam trigger is supposed to be high or low for revolution one.
910 uint8_t bootloaderCaps; //Capabilities of the bootloader over stock. e.g., 0=Stock, 1=Reset protection, etc.
911
915
916 byte StgCycles; //The number of initial cycles before the ignition should fire when first cranking
917
918 byte boostType : 1;
919 byte useDwellLim : 1; //Whether the dwell limiter is off or on
920 byte sparkMode : 3;
922 byte triggerFilter : 2; //The mode of trigger filter being used (0=Off, 1=Light (Not currently used), 2=Normal, 3=Aggressive)
923 byte ignCranklock : 1; //Whether or not the ignition timing during cranking is locked to a CAS (crank) pulse. Only currently valid for Basic distributor and 4G63.
924
929 byte crankRPM;
935 byte taeBins[4];
936 byte taeValues[4];
937 byte wueBins[10];
940 byte iatRetBins[6];
941 byte iatRetValues[6];
942 byte dfcoRPM;
943 byte dfcoHyster; //Hysteris RPM for DFCO
944 byte dfcoTPSThresh; //TPS must be below this figure for DFCO to engage (Unit: ...)
945
946 byte ignBypassEnabled : 1; //Whether or not the ignition bypass is enabled
947 byte ignBypassPin : 6; //Pin the ignition bypass is activated on
948 byte ignBypassHiLo : 1; //Whether this should be active high or low.
949
955 uint8_t ADCFILTER_MAP; //This is only used on Instantaneous MAP readings and is intentionally very weak to allow for faster response
957
958 byte cltAdvBins[6];
959 byte cltAdvValues[6];
961 byte maeBins[4];
962 byte maeRates[4];
968
969 byte idleAdvBins[6];
971
973
975 byte vvt2PWMdir : 1;
979 byte unusedBits4 : 1;
984
985#if defined(CORE_AVR)
986 };
987#else
988 } __attribute__((__packed__)); //The 32 bi systems require all structs to be fully packed
989#endif
990
994struct config6 {
995
996 byte egoAlgorithm : 2;
997 byte egoType : 2;
998 byte boostEnabled : 1;
999 byte vvtEnabled : 1;
1001
1002 byte egoKP;
1003 byte egoKI;
1004 byte egoKD;
1005 byte egoTemp;
1007 byte vvtMode : 2;
1008 byte vvtLoadSource : 2;
1009 byte vvtPWMdir : 1;
1010 byte vvtCLUseHold : 1; //Whether or not to use a hold duty cycle (Most cases are Yes)
1014 byte ego_min;
1015 byte ego_max;
1017 byte egoRPM;
1019 byte vvt1Pin : 6;
1020 byte useExtBaro : 1;
1021 byte boostMode : 1;
1022 byte boostPin : 6;
1023 byte tachoMode : 1;
1024 byte useEMAP : 1;
1025 byte voltageCorrectionBins[6]; //X axis bins for voltage correction tables
1026 byte injVoltageCorrectionValues[6]; //Correction table for injector PW vs battery voltage
1027 byte airDenBins[9];
1030 byte vvtFreq;
1032 // Launch stuff, see beginning of speeduino.ino main loop
1033 byte launchPin : 6;
1034 byte launchEnabled : 1;
1035 byte launchHiLo : 1; //
1036
1038 int8_t lnchRetard; //Allow for negative advance value (ATDC)
1041
1042 //PID values for idle needed to go here as out of room in the idle page
1046
1051
1052 byte lnchPullRes : 1;
1053 byte iacPWMrun : 1;
1055 byte flatSEnable : 1;
1056 byte baroPin : 4;
1060
1061 byte iacCLValues[10]; //Closed loop target RPM value
1062 byte iacOLStepVal[10]; //Open loop step values for stepper motors
1063 byte iacOLPWMVal[10]; //Open loop duty values for PMWM valves
1064 byte iacBins[10]; //Temperature Bins for the above 3 curves
1065 byte iacCrankSteps[4]; //Steps to use when cranking (Stepper motor)
1066 byte iacCrankDuty[4]; //Duty cycle to use on PWM valves when cranking
1067 byte iacCrankBins[4]; //Temperature Bins for the above 2 curves
1068
1069 byte iacAlgorithm : 3; //Valid values are: "None", "On/Off", "PWM", "PWM Closed Loop", "Stepper", "Stepper Closed Loop"
1070 byte iacStepTime : 3; //How long to pulse the stepper for to ensure the step completes (ms)
1071 byte iacChannels : 1; //How many outputs to use in PWM mode (0 = 1 channel, 1 = 2 channels)
1072 byte iacPWMdir : 1; //Direction of the PWM valve. 0 = Normal = Higher RPM with more duty. 1 = Reverse = Lower RPM with more duty
1073
1074 byte iacFastTemp; //Fast idle temp when using a simple on/off valve
1075
1076 byte iacStepHome; //When using a stepper motor, the number of steps to be taken on startup to home the motor
1077 byte iacStepHyster; //Hysteresis temperature (*10). Eg 2.2C = 22
1078
1079 byte fanInv : 1; // Fan output inversion bit
1080 byte fanUnused : 1;
1081 byte fanPin : 6;
1082 byte fanSP; // Cooling fan start temperature
1083 byte fanHyster; // Fan hysteresis
1084 byte fanFreq; // Fan PWM frequency
1085 byte fanPWMBins[4]; //Temperature Bins for the PWM fan control
1086
1087#if defined(CORE_AVR)
1088 };
1089#else
1090 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
1091#endif
1092
1096struct config9 {
1097 byte enable_secondarySerial:1; //enable secondary serial
1098 byte intcan_available:1; //enable internal can module
1100 byte secondarySerialProtocol:4; //protocol for secondary serial. 0=Generic (Fixed list), 1=Generic (ini based list), 2=CAN, 3=msDroid, 4=Real Dash
1102
1103 byte caninput_sel[16]; //bit status on/Can/analog_local/digtal_local if input is enabled
1104 uint16_t caninput_source_can_address[16]; //u16 [15] array holding can address of input
1105 uint8_t caninput_source_start_byte[16]; //u08 [15] array holds the start byte number(value of 0-7)
1106 uint16_t caninput_source_num_bytes; //u16 bit status of the number of bytes length 1 or 2
1107
1109 //byte unused:2
1110 //...
1117
1120 byte egoMAPMax; //needs to be multiplied by 2 to get the proper value
1121 byte egoMAPMin; //needs to be multiplied by 2 to get the proper value
1122 byte speeduino_tsCanId:4; //speeduino TS canid (0-14)
1123 uint16_t true_address; //speeduino 11bit can address
1124 uint16_t realtime_base_address; //speeduino 11 bit realtime base address
1125 uint16_t obd_address; //speeduino OBD diagnostic address
1126 uint8_t Auxinpina[16]; //analog pin number when internal aux in use
1127 uint8_t Auxinpinb[16]; // digital pin number when internal aux in use
1128
1129 byte iacStepperInv : 1; //stepper direction of travel to allow reversing. 0=normal, 1=inverted.
1130 byte iacCoolTime : 3; // how long to wait for the stepper to cool between steps
1131
1133 byte blankField : 1;
1134 byte iacStepperPower : 1; //Whether or not to power the stepper motor when not in use
1135
1136 byte iacMaxSteps; // Step limit beyond which the stepper won't be driven. Should always be less than homing steps. Stored div 3 as per home steps.
1137 byte idleAdvStartDelay; //delay for idle advance engage
1138
1145
1146 byte PWMFanDuty[4];
1147 byte hardRevMode : 2;
1150
1157
1159
1160 byte afrProtectEnabled : 2; /* < AFR protection enabled status. 0 = disabled, 1 = fixed mode, 2 = table mode */
1161 byte afrProtectMinMAP; /* < Minimum MAP. Stored value is divided by 2. Increments of 2 kPa, maximum 511 (?) kPa */
1162 byte afrProtectMinRPM; /* < Minimum RPM. Stored value is divided by 100. Increments of 100 RPM, maximum 25500 RPM */
1163 byte afrProtectMinTPS; /* < Minimum TPS. */
1164 byte afrProtectDeviation; /* < Maximum deviation from AFR target table. Stored value is multiplied by 10 */
1165 byte afrProtectCutTime; /* < Time in ms before cut. Stored value is divided by 100. Maximum of 2550 ms */
1166 byte afrProtectReactivationTPS; /* Disable engine protection cut once below this TPS percentage */
1167
1168#if defined(CORE_AVR)
1169 };
1170#else
1171 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
1172#endif
1173
1178struct config10 {
1179 byte crankingEnrichBins[4]; //Bytes 0-4
1180 byte crankingEnrichValues[4]; //Bytes 4-7
1181
1182 //Byte 8
1183 byte rotaryType : 2;
1185 byte stagingMode : 1;
1186 byte EMAPPin : 4;
1187
1188 byte rotarySplitValues[8]; //Bytes 9-16
1189 byte rotarySplitBins[8]; //Bytes 17-24
1190
1191 uint16_t boostSens; //Bytes 25-26
1192 byte boostIntv; //Byte 27
1195 byte lnchCtrlTPS; //Byte 32
1196
1197 uint8_t flexBoostBins[6]; //Bytes 33-38
1198 int16_t flexBoostAdj[6]; //kPa to be added to the boost target @ current ethanol (negative values allowed). Bytes 39-50
1199 uint8_t flexFuelBins[6]; //Bytes 51-56
1200 uint8_t flexFuelAdj[6]; //Fuel % @ current ethanol (typically 100% @ 0%, 163% @ 100%). Bytes 57-62
1201 uint8_t flexAdvBins[6]; //Bytes 63-68
1202 uint8_t flexAdvAdj[6]; //Additional advance (in degrees) @ current ethanol (typically 0 @ 0%, 10-20 @ 100%). NOTE: THIS SHOULD BE A SIGNED VALUE BUT 2d TABLE LOOKUP NOT WORKING WITH IT CURRENTLY!
1203 //And another three corn rows die.
1204 //Bytes 69-74
1205
1206 //Byte 75
1207 byte n2o_enable : 2;
1209 byte n2o_minCLT; //Byte 76
1210 byte n2o_maxMAP; //Byte 77
1211 byte n2o_minTPS; //Byte 78
1212 byte n2o_maxAFR; //Byte 79
1213
1214 //Byte 80
1218 byte n2o_stage1_minRPM; //Byte 81
1219 byte n2o_stage1_maxRPM; //Byte 82
1220 byte n2o_stage1_adderMin; //Byte 83
1221 byte n2o_stage1_adderMax; //Byte 84
1222 byte n2o_stage1_retard; //Byte 85
1223
1224 //Byte 86
1227 byte n2o_stage2_minRPM; //Byte 87
1228 byte n2o_stage2_maxRPM; //Byte 88
1229 byte n2o_stage2_adderMin; //Byte 89
1230 byte n2o_stage2_adderMax; //Byte 90
1231 byte n2o_stage2_retard; //Byte 91
1232
1233 //Byte 92
1234 byte knock_mode : 2;
1235 byte knock_pin : 6;
1236
1237 //Byte 93
1242 byte knock_count : 3;
1243
1244 byte knock_threshold; //Byte 94
1245 byte knock_maxMAP; //Byte 95
1246 byte knock_maxRPM; //Byte 96
1247 byte knock_window_rpms[6]; //Bytes 97-102
1248 byte knock_window_angle[6]; //Bytes 103-108
1249 byte knock_window_dur[6]; //Bytes 109-114
1250
1251 byte knock_maxRetard; //Byte 115
1252 byte knock_firstStep; //Byte 116
1253 byte knock_stepSize; //Byte 117
1254 byte knock_stepTime; //Byte 118
1255
1256 byte knock_duration; //Time after knock retard starts that it should start recovering. Byte 119
1257 byte knock_recoveryStepTime; //Byte 120
1258 byte knock_recoveryStep; //Byte 121
1259
1260 //Byte 122
1262 byte fuel2Mode : 3;
1264
1265 //Bytes 123-124
1267
1268 //Byte 125
1272
1273 byte vvtCLholdDuty; //Byte 126
1274 byte vvtCLKP; //Byte 127
1275 byte vvtCLKI; //Byte 128
1276 byte vvtCLKD; //Byte 129
1277 int16_t vvtCL0DutyAng; //Bytes 130-131
1280
1281 byte crankingEnrichTaper; //Byte 134
1282
1287
1290
1295
1298
1299 byte wmiEnabled : 1; // Byte 149
1300 byte wmiMode : 6;
1301
1303
1304 byte wmiTPS; // Byte 150
1305 byte wmiRPM; // Byte 151
1306 byte wmiMAP; // Byte 152
1307 byte wmiMAP2; // Byte 153
1308 byte wmiIAT; // Byte 154
1309 int8_t wmiOffset; // Byte 155
1310
1311 byte wmiIndicatorEnabled : 1; // 156
1314
1315 byte wmiEmptyEnabled : 1; // 157
1316 byte wmiEmptyPin : 6;
1318
1319 byte wmiEnabledPin; // 158
1320
1321 byte wmiAdvBins[6]; //Bytes 159-164
1322 byte wmiAdvAdj[6]; //Additional advance (in degrees)
1323 //Bytes 165-170
1326 byte vvt2Pin : 6;
1327 byte vvt2Enabled : 1;
1329
1331 byte fuelTempValues[6]; //180
1332
1333 //Byte 186
1335 byte spark2Mode : 3;
1337
1338 //Bytes 187-188
1340
1341 //Byte 189
1345
1346 //Byte 190
1348
1349 //Byte 191
1351
1352#if defined(CORE_AVR)
1353 };
1354#else
1355 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
1356#endif
1365
1370struct config13 {
1378 uint8_t unused_13[8]; // Unused
1381 //89bytes
1383
1385
1387
1388 byte onboard_log_csv_separator :2; //";", ",", "tab", "space"
1389 byte onboard_log_file_style :2; // "Disabled", "CSV", "Binary", "INVALID"
1390 byte onboard_log_file_rate :2; // "1Hz", "4Hz", "10Hz", "30Hz"
1391 byte onboard_log_filenaming :2; // "Overwrite", "Date-time", "Sequential", "INVALID"
1392 byte onboard_log_storage :2; // "sd-card", "INVALID", "INVALID", "INVALID" ;In the future maybe an onboard spi flash can be used, or switch between SDIO vs SPI sd card interfaces.
1393 byte onboard_log_trigger_boot :1; // "Disabled", "On boot"
1394 byte onboard_log_trigger_RPM :1; // "Disabled", "Enabled"
1395 byte onboard_log_trigger_prot :1; // "Disabled", "Enabled"
1396 byte onboard_log_trigger_Vbat :1; // "Disabled", "Enabled"
1397 byte onboard_log_trigger_Epin :2; // "Disabled", "polling", "toggle" , "INVALID"
1398 uint16_t onboard_log_tr1_duration; // Duration of logging that starts on boot
1399 byte onboard_log_tr2_thr_on; // "RPM", 100.0, 0.0, 0, 10000, 0
1400 byte onboard_log_tr2_thr_off; // "RPM", 100.0, 0.0, 0, 10000, 0
1401 byte onboard_log_tr3_thr_RPM :1; // "Disabled", "Enabled"
1402 byte onboard_log_tr3_thr_MAP :1; // "Disabled", "Enabled"
1403 byte onboard_log_tr3_thr_Oil :1; // "Disabled", "Enabled"
1404 byte onboard_log_tr3_thr_AFR :1; // "Disabled", "Enabled"
1405 byte onboard_log_tr4_thr_on; // "V", 0.1, 0.0, 0.0, 15.90, 2 ; * ( 1 byte)
1406 byte onboard_log_tr4_thr_off; // "V", 0.1, 0.0, 0.0, 15.90, 2 ; * ( 1 byte)
1407 byte onboard_log_tr5_Epin_pin :6; // "pin", 0, 0, 0, 1, 255, 0 ;
1409
1412
1413#if defined(CORE_AVR)
1414 };
1415#else
1416 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
1417#endif
1418
1423struct config15 {
1425 byte unused15_1 : 7; //7bits unused
1427 byte boostControlEnableThreshold; //if fixed value enable set threshold here.
1428
1429 //Byte 83 - Air conditioning binary points
1437
1438 //Bytes 84-97 - Air conditioning analog points
1456
1457 int8_t rollingProtRPMDelta[4]; // Signed RPM value representing how much below the RPM limit. Divided by 10
1459
1460 //Bytes 106-255
1462
1463#if defined(CORE_AVR)
1464 };
1465#else
1466 } __attribute__((__packed__)); //The 32 bit systems require all structs to be fully packed
1467#endif
1468
1469extern byte pinInjector1; //Output pin injector 1
1470extern byte pinInjector2; //Output pin injector 2
1471extern byte pinInjector3; //Output pin injector 3
1472extern byte pinInjector4; //Output pin injector 4
1473extern byte pinInjector5; //Output pin injector 5
1474extern byte pinInjector6; //Output pin injector 6
1475extern byte pinInjector7; //Output pin injector 7
1476extern byte pinInjector8; //Output pin injector 8
1477extern byte injectorOutputControl; //Specifies whether the injectors are controlled directly (Via an IO pin) or using something like the MC33810
1478extern byte pinCoil1; //Pin for coil 1
1479extern byte pinCoil2; //Pin for coil 2
1480extern byte pinCoil3; //Pin for coil 3
1481extern byte pinCoil4; //Pin for coil 4
1482extern byte pinCoil5; //Pin for coil 5
1483extern byte pinCoil6; //Pin for coil 6
1484extern byte pinCoil7; //Pin for coil 7
1485extern byte pinCoil8; //Pin for coil 8
1486extern byte ignitionOutputControl; //Specifies whether the coils are controlled directly (Via an IO pin) or using something like the MC33810
1487extern byte pinTrigger; //The CAS pin
1488extern byte pinTrigger2; //The Cam Sensor pin known as secondary input
1489extern byte pinTrigger3; //the 2nd cam sensor pin known as tertiary input
1490extern byte pinTPS;//TPS input pin
1491extern byte pinMAP; //MAP sensor pin
1492extern byte pinEMAP; //EMAP sensor pin
1493extern byte pinMAP2; //2nd MAP sensor (Currently unused)
1494extern byte pinIAT; //IAT sensor pin
1495extern byte pinCLT; //CLS sensor pin
1496extern byte pinO2; //O2 Sensor pin
1497extern byte pinO2_2; //second O2 pin
1498extern byte pinBat; //Battery voltage pin
1499extern byte pinDisplayReset; // OLED reset pin
1500extern byte pinTachOut; //Tacho output
1501extern byte pinFuelPump; //Fuel pump on/off
1502extern byte pinIdle1; //Single wire idle control
1503extern byte pinIdle2; //2 wire idle control (Not currently used)
1504extern byte pinIdleUp; //Input for triggering Idle Up
1505extern byte pinIdleUpOutput; //Output that follows (normal or inverted) the idle up pin
1506extern byte pinCTPS; //Input for triggering closed throttle state
1507extern byte pinFuel2Input; //Input for switching to the 2nd fuel table
1508extern byte pinSpark2Input; //Input for switching to the 2nd ignition table
1509extern byte pinSpareTemp1; // Future use only
1510extern byte pinSpareTemp2; // Future use only
1511extern byte pinSpareOut1; //Generic output
1512extern byte pinSpareOut2; //Generic output
1513extern byte pinSpareOut3; //Generic output
1514extern byte pinSpareOut4; //Generic output
1515extern byte pinSpareOut5; //Generic output
1516extern byte pinSpareOut6; //Generic output
1517extern byte pinSpareHOut1; //spare high current output
1518extern byte pinSpareHOut2; // spare high current output
1519extern byte pinSpareLOut1; // spare low current output
1520extern byte pinSpareLOut2; // spare low current output
1521extern byte pinSpareLOut3;
1522extern byte pinSpareLOut4;
1523extern byte pinSpareLOut5;
1524extern byte pinBoost;
1525extern byte pinVVT_1; // vvt output 1
1526extern byte pinVVT_2; // vvt output 2
1527extern byte pinFan; // Cooling fan output
1528extern byte pinStepperDir; //Direction pin for the stepper motor driver
1529extern byte pinStepperStep; //Step pin for the stepper motor driver
1530extern byte pinStepperEnable; //Turning the DRV8825 driver on/off
1531extern byte pinLaunch;
1532extern byte pinIgnBypass; //The pin used for an ignition bypass (Optional)
1533extern byte pinFlex; //Pin with the flex sensor attached
1534extern byte pinVSS;
1535extern byte pinBaro; //Pin that an external barometric pressure sensor is attached to (If used)
1536extern byte pinResetControl; // Output pin used control resetting the Arduino
1537extern byte pinFuelPressure;
1538extern byte pinOilPressure;
1539extern byte pinWMIEmpty; // Water tank empty sensor
1540extern byte pinWMIIndicator; // No water indicator bulb
1541extern byte pinWMIEnabled; // ON-OFF output to relay/pump/solenoid
1542extern byte pinMC33810_1_CS;
1543extern byte pinMC33810_2_CS;
1544extern byte pinSDEnable; //Input for manually enabling SD logging
1545#ifdef USE_SPI_EEPROM
1546 extern byte pinSPIFlash_CS;
1547#endif
1548extern byte pinAirConComp; // Air conditioning compressor output
1549extern byte pinAirConFan; // Stand-alone air conditioning fan output
1550extern byte pinAirConRequest; // Air conditioning request input
1551
1552/* global variables */ // from speeduino.ino
1553//#ifndef UNIT_TEST
1554
1555//#endif
1556
1557extern struct statuses currentStatus; //The global status object
1558extern struct config2 configPage2;
1559extern struct config4 configPage4;
1560extern struct config6 configPage6;
1561extern struct config9 configPage9;
1562extern struct config10 configPage10;
1563extern struct config13 configPage13;
1564extern struct config15 configPage15;
1565//extern byte cltCalibrationTable[CALIBRATION_TABLE_SIZE]; /**< An array containing the coolant sensor calibration values */
1566//extern byte iatCalibrationTable[CALIBRATION_TABLE_SIZE]; /**< An array containing the inlet air temperature sensor calibration values */
1567//extern byte o2CalibrationTable[CALIBRATION_TABLE_SIZE]; /**< An array containing the O2 sensor calibration values */
1568
1569extern uint16_t cltCalibration_bins[32];
1571extern uint16_t iatCalibration_bins[32];
1573extern uint16_t o2Calibration_bins[32];
1574extern uint8_t o2Calibration_values[32]; // Note 8-bit values
1575extern struct table2D cltCalibrationTable;
1576extern struct table2D iatCalibrationTable;
1577extern struct table2D o2CalibrationTable;
1579bool pinIsOutput(byte pin);
1580bool pinIsUsed(byte pin);
1581
1582#endif // GLOBALS_H
volatile PINMASK_TYPE pump_pin_mask
Definition globals.cpp:97
static bool HasAnySync(const statuses &status)
Definition globals.h:707
byte pinTrigger3
the 2nd cam sensor pin
Definition globals.cpp:176
byte pinStepperEnable
Definition globals.cpp:217
volatile uint16_t ignitionCount
Definition globals.cpp:126
byte pinMC33810_2_CS
Definition globals.cpp:230
int CRANK_ANGLE_MAX_IGN
Definition globals.cpp:136
int CRANK_ANGLE_MAX_INJ
The number of crank degrees that the system track over. 360 for wasted / timed batch and 720 for sequ...
Definition globals.cpp:137
byte pinVSS
Definition globals.cpp:221
struct table2D PrimingPulseTable
4 bin Priming pulsewidth map (2D)
Definition globals.cpp:35
byte pinSpareLOut4
Definition globals.cpp:209
byte triggerInterrupt
byte pinSpareLOut2
Definition globals.cpp:207
byte pinFuelPump
Definition globals.cpp:188
byte pinSpareOut6
Definition globals.cpp:203
byte pinCoil4
Pin for coil 4.
Definition globals.cpp:167
volatile PORT_TYPE * inj7_pin_port
Definition globals.cpp:72
volatile PINMASK_TYPE ign7_pin_mask
Definition globals.cpp:90
struct table3d8RpmLoad stagingTable
8x8 fuel staging table
Definition globals.cpp:15
struct table2D flexFuelTable
6 bin flex fuel correction table for fuel adjustments (2D)
Definition globals.cpp:47
struct table2D fuelTempTable
6 bin flex fuel correction table for fuel adjustments (2D)
Definition globals.cpp:50
struct table2D flexBoostTable
6 bin flex fuel correction table for boost adjustments (2D)
Definition globals.cpp:49
byte pinTrigger2
RPM2 (Typically the Cam Sensor) pin.
Definition globals.cpp:175
volatile PORT_TYPE * inj4_pin_port
Definition globals.cpp:66
byte pinTPS
Definition globals.cpp:177
uint16_t o2Calibration_bins[32]
Definition globals.cpp:258
byte injectorOutputControl
Definition globals.cpp:162
byte maxIgnOutputs
Definition globals.cpp:144
volatile PINMASK_TYPE ign2_pin_mask
Definition globals.cpp:80
struct statuses currentStatus
Definition auxiliaries.cpp:77
trimTable3d trim5Table
6x6 Fuel trim 5 map
Definition globals.cpp:25
const byte data_structure_version
Definition globals.cpp:8
volatile PORT_TYPE * flex_pin_port
Definition globals.cpp:99
byte pinFan
Cooling fan output (on/off? See: auxiliaries.ino)
Definition globals.cpp:214
volatile byte TIMER_mask
Definition globals.cpp:150
struct table2D fanPWMTable
Definition globals.cpp:56
struct table2D o2CalibrationTable
Definition globals.cpp:260
trimTable3d trim3Table
6x6 Fuel trim 3 map
Definition globals.cpp:23
byte pinBat
Definition globals.cpp:185
volatile uint32_t seclx10
Definition globals.cpp:139
byte pinTachOut
Definition globals.cpp:187
volatile PINMASK_TYPE inj5_pin_mask
Definition globals.cpp:69
byte pinO2_2
Definition globals.cpp:184
volatile PINMASK_TYPE flex_pin_mask
Definition globals.cpp:100
volatile PORT_TYPE * inj1_pin_port
volatile inj*_pin_port and inj*_pin_mask vars are for the direct port manipulation of the injectors,...
Definition globals.cpp:60
volatile PORT_TYPE * tach_pin_port
Definition globals.cpp:94
byte pinVVT_2
vvt (variable valve timing) output 2
Definition globals.cpp:213
struct table3d8RpmLoad vvt2Table
8x8 vvt2 map
Definition globals.cpp:19
struct table2D iatCalibrationTable
Definition globals.cpp:257
volatile unsigned int toothHistoryIndex
Current index to toothHistory array.
Definition globals.cpp:124
trimTable3d trim4Table
6x6 Fuel trim 4 map
Definition globals.cpp:24
byte pinAirConComp
Definition globals.cpp:235
struct table2D flexAdvTable
6 bin flex fuel correction table for timing advance (2D)
Definition globals.cpp:48
volatile PORT_TYPE * inj5_pin_port
Definition globals.cpp:68
volatile PINMASK_TYPE ign6_pin_mask
Definition globals.cpp:88
unsigned long currentLoopTime
Definition globals.cpp:125
volatile PINMASK_TYPE ign4_pin_mask
Definition globals.cpp:84
byte ignitionOutputControl
Definition globals.cpp:172
byte pinAirConFan
Definition globals.cpp:236
volatile uint32_t runSecsX10
Definition globals.cpp:138
volatile PINMASK_TYPE inj8_pin_mask
Definition globals.cpp:75
#define TOOTH_LOG_SIZE
Definition globals.h:212
uint16_t fixedCrankingOverride
Definition globals.cpp:117
struct table3d16RpmLoad afrTable
16x16 afr target map
Definition globals.cpp:14
volatile PORT_TYPE * inj2_pin_port
Definition globals.cpp:62
byte pinInjector3
Output pin injector 3.
Definition globals.cpp:156
byte triggerInterrupt2
byte pinInjector2
Output pin injector 2.
Definition globals.cpp:155
struct table2D idleAdvanceTable
6 bin idle advance adjustment table based on RPM difference (2D)
Definition globals.cpp:44
volatile byte HWTest_IGN_Pulsed
Definition globals.cpp:143
byte fpPrimeTime
The time (in seconds, based on statuses::secl) that the fuel pump started priming.
Definition globals.cpp:111
struct table3d16RpmLoad ignitionTable2
16x16 ignition map
Definition globals.cpp:13
volatile PORT_TYPE * ign8_pin_port
Definition globals.cpp:91
byte pinCTPS
Definition globals.cpp:193
byte pinMAP
Definition globals.cpp:178
byte pinCoil5
Pin for coil 5.
Definition globals.cpp:168
volatile PINMASK_TYPE inj4_pin_mask
Definition globals.cpp:67
bool pinIsOutput(byte pin)
Definition globals.cpp:263
byte pinWMIEnabled
Definition globals.cpp:228
byte maxInjOutputs
Definition globals.cpp:145
byte pinResetControl
Definition globals.cpp:223
byte secondaryTriggerEdge
Definition globals.cpp:133
byte pinSpareOut5
Definition globals.cpp:202
byte pinBoost
Definition globals.cpp:211
volatile PINMASK_TYPE ign5_pin_mask
Definition globals.cpp:86
byte resetControl
resetControl needs to be here (as global) because using the config page (4) directly can prevent burn...
Definition globals.cpp:148
byte pinIdleUp
Definition globals.cpp:191
byte pinIgnBypass
Definition globals.cpp:219
byte pinSpareTemp2
Definition globals.cpp:197
byte pinSpareOut3
Definition globals.cpp:200
byte pinCoil3
Pin for coil 3.
Definition globals.cpp:166
struct table2D knockWindowStartTable
Definition globals.cpp:51
volatile PORT_TYPE * pump_pin_port
Definition globals.cpp:96
volatile byte HWTest_INJ
Definition globals.cpp:140
byte pinBaro
Definition globals.cpp:222
byte pinCoil8
Pin for coil 8.
Definition globals.cpp:171
uint8_t o2Calibration_values[32]
Definition globals.cpp:259
#define BIT_CHECK(var, pos)
Definition globals.h:113
volatile PORT_TYPE * ign5_pin_port
Definition globals.cpp:85
byte pinCLT
Definition globals.cpp:182
struct table3d16RpmLoad fuelTable2
16x16 fuel map
Definition globals.cpp:11
byte pinLaunch
Definition globals.cpp:218
struct table2D crankingEnrichTable
4 bin cranking Enrichment map (2D)
Definition globals.cpp:36
volatile PORT_TYPE * ign7_pin_port
Definition globals.cpp:89
uint16_t iatCalibration_bins[32]
Definition globals.cpp:255
trimTable3d trim6Table
6x6 Fuel trim 6 map
Definition globals.cpp:26
byte pinEMAP
Definition globals.cpp:179
struct table2D ASECountTable
4 bin After Start duration map (2D)
Definition globals.cpp:34
byte pinO2
Definition globals.cpp:183
byte pinTrigger
RPM1 (Typically CAS=crankshaft angle sensor) pin.
Definition globals.cpp:174
struct table2D CLTAdvanceTable
6 bin ignition adjustment based on coolant temperature (2D)
Definition globals.cpp:45
byte pinInjector6
Output pin injector 6.
Definition globals.cpp:159
struct table2D dwellVCorrectionTable
6 bin dwell voltage correction (2D)
Definition globals.cpp:37
byte pinStepperDir
Definition globals.cpp:215
byte pinSpareTemp1
Definition globals.cpp:196
byte pinSpark2Input
Definition globals.cpp:195
struct table2D oilPressureProtectTable
Definition globals.cpp:53
byte pinFlex
Definition globals.cpp:220
#define BIT_STATUS3_HALFSYNC
Definition globals.h:185
struct table2D injectorVCorrectionTable
6 bin injector voltage correction (2D)
Definition globals.cpp:38
byte pinCoil1
Pin for coil 1.
Definition globals.cpp:164
byte pinIAT
Definition globals.cpp:181
byte pinWMIEmpty
Definition globals.cpp:226
byte pinSpareHOut2
Definition globals.cpp:205
struct config15 configPage15
Definition globals.cpp:246
struct table3d8RpmLoad wmiTable
8x8 wmi map
Definition globals.cpp:20
byte pinInjector1
Various pin numbering (Injectors, Ign outputs, CAS, Cam, Sensors. etc.) assignments.
Definition globals.cpp:154
struct config10 configPage10
Definition globals.cpp:244
volatile byte LOOP_TIMER
Definition globals.cpp:151
volatile PORT_TYPE * inj6_pin_port
Definition globals.cpp:70
volatile PORT_TYPE * triggerSec_pin_port
Definition globals.cpp:104
byte pinWMIIndicator
Definition globals.cpp:227
byte pinSpareLOut1
Definition globals.cpp:206
byte pinInjector5
Output pin injector 5.
Definition globals.cpp:158
byte pinStepperStep
Definition globals.cpp:216
volatile unsigned long timer5_overflow_count
Definition globals.cpp:115
trimTable3d trim7Table
6x6 Fuel trim 7 map
Definition globals.cpp:27
struct table2D knockWindowDurationTable
Definition globals.cpp:52
byte pinSpareLOut5
Definition globals.cpp:210
byte pinSpareOut4
Definition globals.cpp:201
byte pinIdle1
Definition globals.cpp:189
volatile PINMASK_TYPE inj6_pin_mask
Definition globals.cpp:71
volatile byte HWTest_IGN
Definition globals.cpp:142
struct table3d4RpmLoad dwellTable
4x4 Dwell map
Definition globals.cpp:29
byte pinDisplayReset
Definition globals.cpp:186
struct table2D wmiAdvTable
Definition globals.cpp:54
byte pinVVT_1
vvt (variable valve timing) output 1
Definition globals.cpp:212
struct table3d8RpmLoad boostTable
8x8 boost map
Definition globals.cpp:16
struct config9 configPage9
Definition globals.cpp:243
struct table2D rotarySplitTable
8 bin ignition split curve for rotary leading/trailing (2D)
Definition globals.cpp:46
volatile PINMASK_TYPE inj3_pin_mask
Definition globals.cpp:65
struct table2D IATDensityCorrectionTable
9 bin inlet air temperature density correction (2D)
Definition globals.cpp:40
struct table2D IATRetardTable
6 bin ignition adjustment based on inlet air temperature (2D)
Definition globals.cpp:42
struct table2D coolantProtectTable
Definition globals.cpp:55
struct table2D injectorAngleTable
4 bin injector angle curve (2D)
Definition globals.cpp:39
volatile PORT_TYPE * ign3_pin_port
Definition globals.cpp:81
uint8_t softLimitTime
Definition globals.cpp:112
struct table2D taeTable
4 bin TPS Acceleration Enrichment map (2D)
Definition globals.cpp:30
byte pinIdle2
Definition globals.cpp:190
struct table3d16RpmLoad fuelTable
16x16 fuel map
Definition globals.cpp:10
volatile PINMASK_TYPE triggerThird_pin_mask
Definition globals.cpp:107
volatile PINMASK_TYPE triggerPri_pin_mask
Definition globals.cpp:103
volatile PINMASK_TYPE triggerSec_pin_mask
Definition globals.cpp:105
volatile PORT_TYPE * inj3_pin_port
Definition globals.cpp:64
byte triggerInterrupt3
volatile PORT_TYPE * inj8_pin_port
Definition globals.cpp:74
uint16_t cltCalibration_values[32]
Definition globals.cpp:253
byte pinSpareOut1
Definition globals.cpp:198
volatile byte HWTest_INJ_Pulsed
Definition globals.cpp:141
const char TSfirmwareVersion[]
Definition globals.cpp:6
byte pinCoil6
Pin for coil 6.
Definition globals.cpp:169
volatile uint8_t compositeLogHistory[TOOTH_LOG_SIZE]
Definition globals.cpp:121
byte pinInjector8
Output pin injector 8.
Definition globals.cpp:161
struct table2D maeTable
Definition globals.cpp:31
byte pinInjector7
Output pin injector 7.
Definition globals.cpp:160
volatile PINMASK_TYPE inj7_pin_mask
Definition globals.cpp:73
byte pinAirConRequest
Definition globals.cpp:237
struct config13 configPage13
Definition globals.cpp:245
byte pinSpareLOut3
Definition globals.cpp:208
volatile unsigned long ms_counter
Definition globals.cpp:116
byte primaryTriggerEdge
Definition globals.cpp:132
struct config6 configPage6
Definition globals.cpp:242
volatile uint16_t mainLoopCount
Definition globals.cpp:113
byte pinMAP2
Definition globals.cpp:180
byte pinSpareOut2
Definition globals.cpp:199
struct table2D idleTargetTable
10 bin idle target table for idle timing (2D)
Definition globals.cpp:43
struct config2 configPage2
Definition globals.cpp:240
byte pinMC33810_1_CS
Definition globals.cpp:229
volatile PORT_TYPE * ign2_pin_port
Definition globals.cpp:79
struct table3d8RpmLoad boostTableLookupDuty
8x8 boost map lookup table
Definition globals.cpp:17
byte pinFuel2Input
Definition globals.cpp:194
volatile PORT_TYPE * ign4_pin_port
Definition globals.cpp:83
byte pinFuelPressure
Definition globals.cpp:224
byte pinSDEnable
Definition globals.cpp:231
volatile uint32_t toothHistory[TOOTH_LOG_SIZE]
Tooth trigger history - delta time (in uS) from last tooth (Indexed by toothHistoryIndex)
Definition globals.cpp:120
volatile PINMASK_TYPE inj2_pin_mask
Definition globals.cpp:63
volatile PINMASK_TYPE ign1_pin_mask
Definition globals.cpp:78
bool pinIsUsed(byte pin)
Definition globals.cpp:316
trimTable3d trim2Table
6x6 Fuel trim 2 map
Definition globals.cpp:22
uint16_t cltCalibration_bins[32]
Definition globals.cpp:252
struct config4 configPage4
Definition globals.cpp:241
volatile PINMASK_TYPE tach_pin_mask
Definition globals.cpp:95
byte tertiaryTriggerEdge
Definition globals.cpp:134
volatile PORT_TYPE * ign6_pin_port
Definition globals.cpp:87
byte pinCoil2
Pin for coil 2.
Definition globals.cpp:165
byte pinSpareHOut1
Definition globals.cpp:204
volatile PINMASK_TYPE ign3_pin_mask
Definition globals.cpp:82
volatile PINMASK_TYPE ign8_pin_mask
Definition globals.cpp:92
byte pinOilPressure
Definition globals.cpp:225
volatile PORT_TYPE * triggerThird_pin_port
Definition globals.cpp:106
volatile PORT_TYPE * ign1_pin_port
Definition globals.cpp:77
byte pinIdleUpOutput
Definition globals.cpp:192
struct table2D WUETable
10 bin Warm Up Enrichment map (2D)
Definition globals.cpp:32
volatile PORT_TYPE * triggerPri_pin_port
Definition globals.cpp:102
byte pinInjector4
Output pin injector 4.
Definition globals.cpp:157
struct table2D cltCalibrationTable
Definition globals.cpp:254
struct table3d16RpmLoad ignitionTable
16x16 ignition map
Definition globals.cpp:12
volatile PINMASK_TYPE inj1_pin_mask
Definition globals.cpp:61
byte pinCoil7
Pin for coil 7.
Definition globals.cpp:170
trimTable3d trim1Table
6x6 Fuel trim 1 map
Definition globals.cpp:21
struct table2D rollingCutTable
Definition globals.cpp:57
uint16_t iatCalibration_values[32]
Definition globals.cpp:256
struct table2D ASETable
4 bin After Start Enrichment map (2D)
Definition globals.cpp:33
uint32_t revolutionTime
Definition globals.cpp:114
table3d6RpmLoad trimTable3d
Definition globals.h:433
trimTable3d trim8Table
6x6 Fuel trim 8 map
Definition globals.cpp:28
struct table2D baroFuelTable
8 bin baro correction curve (2D)
Definition globals.cpp:41
struct table3d8RpmLoad vvtTable
8x8 vvt map
Definition globals.cpp:18
static uint32_t rshift(uint32_t a)
Bitwise right shift - generic, unoptimized, case.
Definition bit_shifts.h:349
Definition globals.h:1360
uint8_t firstCompType
First cmp. op (COMPARATOR_* ops, see below)
Definition globals.h:1361
uint8_t bitwise
BITWISE_AND, BITWISE_OR, BITWISE_XOR.
Definition globals.h:1363
uint8_t secondCompType
Second cmp. op (0=COMPARATOR_EQUAL, 1=COMPARATOR_NOT_EQUAL,2=COMPARATOR_GREATER,3=COMPARATOR_GREATER_...
Definition globals.h:1362
Definition globals.h:1178
byte vvtCLKP
Definition globals.h:1274
byte rotaryType
Definition globals.h:1183
byte n2o_maxAFR
Definition globals.h:1212
byte fuelTempValues[6]
Definition globals.h:1331
int16_t flexBoostAdj[6]
Definition globals.h:1198
int8_t wmiOffset
Definition globals.h:1309
byte EMAPPin
Definition globals.h:1186
byte knock_window_angle[6]
Definition globals.h:1248
byte knock_maxRetard
Definition globals.h:1251
byte wmiAdvEnabled
Definition globals.h:1302
byte crankingEnrichValues[4]
Definition globals.h:1180
byte fuel2InputPolarity
Definition globals.h:1270
byte vvt2Pin
Definition globals.h:1326
byte fuel2InputPin
Definition globals.h:1269
byte rotarySplitValues[8]
Definition globals.h:1188
byte oilPressureProtRPM[4]
Definition globals.h:1296
byte spark2SwitchVariable
Definition globals.h:1336
uint16_t stagedInjSizeSec
Definition globals.h:1194
byte oilPressurePin
Definition globals.h:1286
byte spark2Mode
Definition globals.h:1335
byte crankingEnrichTaper
Definition globals.h:1281
byte wmiIAT
Definition globals.h:1308
int8_t fuelPressureMin
Definition globals.h:1291
byte wmiEmptyPolarity
Definition globals.h:1317
uint16_t fuel2SwitchValue
Definition globals.h:1266
byte oilPressureProtEnbl
Definition globals.h:1285
byte unused11_165
Definition globals.h:1289
byte knock_window_rpms[6]
Definition globals.h:1247
byte wmiEnabledPin
Definition globals.h:1319
byte n2o_stage1_retard
Definition globals.h:1222
byte fuelPressureEnable
Enable fuel pressure sensing from an analog pin (pinFuelPressure)
Definition globals.h:1283
uint8_t vvtCLMinAng
Definition globals.h:1278
uint16_t stagedInjSizePri
Definition globals.h:1193
byte fuel2Algorithm
Definition globals.h:1261
byte n2o_stage1_adderMin
Definition globals.h:1220
uint16_t spark2SwitchValue
Definition globals.h:1339
uint8_t flexAdvAdj[6]
Definition globals.h:1202
uint8_t vvtCLMaxAng
Definition globals.h:1279
byte n2o_stage2_unused
Definition globals.h:1226
byte knock_recoveryStepTime
Definition globals.h:1257
byte oilPressureProtTime
Definition globals.h:1347
uint8_t flexAdvBins[6]
Definition globals.h:1201
byte vvtCLholdDuty
Definition globals.h:1273
byte knock_window_dur[6]
Definition globals.h:1249
int8_t oilPressureMin
Definition globals.h:1293
byte knock_trigger
Definition globals.h:1238
byte fuelPressureMax
Definition globals.h:1292
byte knock_firstStep
Definition globals.h:1252
byte fuelTempBins[6]
Definition globals.h:1330
byte n2o_stage2_maxRPM
Definition globals.h:1228
byte wmiTPS
Definition globals.h:1304
byte wmiAdvBins[6]
Definition globals.h:1321
byte knock_unused
Definition globals.h:1241
int16_t vvtCL0DutyAng
Definition globals.h:1277
uint8_t flexFuelAdj[6]
Definition globals.h:1200
byte boostIntv
Definition globals.h:1192
byte n2o_stage2_pin
Definition globals.h:1225
byte wmiIndicatorEnabled
Definition globals.h:1311
byte crankingEnrichBins[4]
Definition globals.h:1179
byte n2o_stage1_unused
Definition globals.h:1217
byte lnchCtrlTPS
Definition globals.h:1195
byte knock_stepSize
Definition globals.h:1253
byte oilPressureMax
Definition globals.h:1294
byte spark2InputPin
Definition globals.h:1342
byte fuel2SwitchVariable
Definition globals.h:1263
byte wmiRPM
Definition globals.h:1305
byte n2o_stage2_adderMin
Definition globals.h:1229
byte vvtCLKI
Definition globals.h:1275
byte knock_threshold
Definition globals.h:1244
byte n2o_stage1_adderMax
Definition globals.h:1221
byte knock_pin
Definition globals.h:1235
byte knock_pullup
Definition globals.h:1239
byte n2o_stage1_minRPM
Definition globals.h:1218
byte n2o_minTPS
Definition globals.h:1211
byte vvt2Enabled
Definition globals.h:1327
uint16_t boostSens
Definition globals.h:1191
byte rotarySplitBins[8]
Definition globals.h:1189
byte knock_duration
Definition globals.h:1256
byte wmiMAP2
Definition globals.h:1307
byte spark2Algorithm
Definition globals.h:1334
byte n2o_stage1_pin
Definition globals.h:1215
byte vvtCLminDuty
Definition globals.h:1324
byte n2o_stage2_adderMax
Definition globals.h:1230
byte n2o_pin_polarity
Definition globals.h:1216
byte oilPressureEnable
Enable oil pressure sensing from an analog pin (pinOilPressure)
Definition globals.h:1284
byte lnchCtrlVss
Definition globals.h:1350
byte wmiAdvAdj[6]
Definition globals.h:1322
byte n2o_maxMAP
Definition globals.h:1210
byte knock_count
Definition globals.h:1242
byte n2o_minCLT
Definition globals.h:1209
byte n2o_enable
Definition globals.h:1207
byte knock_recoveryStep
Definition globals.h:1258
byte n2o_stage1_maxRPM
Definition globals.h:1219
byte n2o_arming_pin
Definition globals.h:1208
uint8_t flexFuelBins[6]
Definition globals.h:1199
byte wmiEnabled
Definition globals.h:1299
byte wmiMode
Definition globals.h:1300
byte n2o_stage2_retard
Definition globals.h:1231
byte n2o_stage2_minRPM
Definition globals.h:1227
byte knock_stepTime
Definition globals.h:1254
byte knock_maxMAP
Definition globals.h:1245
byte oilPressureProtMins[4]
Definition globals.h:1297
byte fuel2Mode
Definition globals.h:1262
byte wmiEmptyEnabled
Definition globals.h:1315
byte stagingMode
Definition globals.h:1185
byte TrigEdgeThrd
Definition globals.h:1328
byte fuel2InputPullup
Definition globals.h:1271
uint8_t flexBoostBins[6]
Definition globals.h:1197
byte knock_limiterDisable
Definition globals.h:1240
byte wmiIndicatorPolarity
Definition globals.h:1313
byte wmiMAP
Definition globals.h:1306
byte wmiEmptyPin
Definition globals.h:1316
byte stagingEnabled
Definition globals.h:1184
byte knock_mode
Definition globals.h:1234
byte knock_maxRPM
Definition globals.h:1246
byte spark2InputPullup
Definition globals.h:1344
byte wmiIndicatorPin
Definition globals.h:1312
byte vvtCLKD
Definition globals.h:1276
byte spark2InputPolarity
Definition globals.h:1343
byte fuelPressurePin
Definition globals.h:1288
byte vvtCLmaxDuty
Definition globals.h:1325
Definition globals.h:1370
byte onboard_log_tr3_thr_RPM
Definition globals.h:1401
byte onboard_log_tr4_thr_off
Definition globals.h:1406
int16_t secondTarget[8]
second target value to compare with bitwise op
Definition globals.h:1380
byte onboard_log_tr3_thr_AFR
Definition globals.h:1404
byte onboard_log_file_style
Definition globals.h:1389
byte hwTestInjDuration
Definition globals.h:1411
int16_t firstTarget[8]
first target value to compare with numeric comp
Definition globals.h:1379
byte onboard_log_tr3_thr_Oil
Definition globals.h:1403
byte onboard_log_trigger_RPM
Definition globals.h:1394
byte onboard_log_file_rate
Definition globals.h:1390
byte onboard_log_storage
Definition globals.h:1392
byte onboard_log_filenaming
Definition globals.h:1391
struct cmpOperation operation[8]
I/O variable comparison operations (See cmpOperation)
Definition globals.h:1382
byte hwTestIgnDuration
Definition globals.h:1410
uint8_t kindOfLimiting
Select which kind of output limiting are active (0 - minimum | 1 - maximum)
Definition globals.h:1372
byte onboard_log_tr3_thr_MAP
Definition globals.h:1402
byte onboard_log_tr4_thr_on
Definition globals.h:1405
byte onboard_log_tr2_thr_off
Definition globals.h:1400
byte onboard_log_tr2_thr_on
Definition globals.h:1399
byte onboard_log_trigger_boot
Definition globals.h:1393
byte onboard_log_tr5_Epin_pin
Definition globals.h:1407
uint8_t outputInverted
Invert (on/off) value before writing to output pin (for all programmable I/O:s).
Definition globals.h:1371
byte unused12_106_116[10]
Definition globals.h:1386
byte onboard_log_csv_separator
Definition globals.h:1388
uint8_t outputDelay[8]
Output write delay for each programmable I/O (Unit: 0.1S)
Definition globals.h:1374
byte onboard_log_trigger_Epin
Definition globals.h:1397
uint8_t firstDataIn[8]
Set of first I/O vars to compare.
Definition globals.h:1375
byte unused13_125_2
Definition globals.h:1408
uint16_t candID[8]
Actual CAN ID need 16bits, this is a placeholder.
Definition globals.h:1384
byte onboard_log_trigger_Vbat
Definition globals.h:1396
uint8_t outputPin[8]
Disable(0) or enable (set to valid pin number) Programmable Pin (output/target pin to set)
Definition globals.h:1373
uint8_t secondDataIn[8]
Set of second I/O vars to compare.
Definition globals.h:1376
uint8_t unused_13[8]
Definition globals.h:1378
byte onboard_log_trigger_prot
Definition globals.h:1395
uint8_t outputTimeLimit[8]
Output delay for each programmable I/O, kindOfLimiting bit dependent(Unit: 0.1S)
Definition globals.h:1377
uint16_t onboard_log_tr1_duration
Definition globals.h:1398
Definition globals.h:1423
byte airConMaxRPMdiv100
Definition globals.h:1445
byte airConUnused1
Definition globals.h:1436
byte airConPwmFanMinDuty
Definition globals.h:1455
byte airConFanPin
Definition globals.h:1452
byte airConEnable
Definition globals.h:1430
byte boostControlEnable
Definition globals.h:1424
byte airConClTempCut
Definition globals.h:1446
byte airConIdleSteps
Definition globals.h:1447
byte airConTurnsFanOn
Definition globals.h:1433
byte unused15_1
Definition globals.h:1425
byte airConFanPol
Definition globals.h:1435
byte airConIdleUpRPMAdder
Definition globals.h:1454
byte airConTPSCutTime
Definition globals.h:1448
byte airConReqPol
Definition globals.h:1432
byte airConFanEnabled
Definition globals.h:1434
byte airConTPSCut
Definition globals.h:1443
int8_t rollingProtRPMDelta[4]
Definition globals.h:1457
byte airConAfterStartDelay
Definition globals.h:1450
byte airConReqPin
Definition globals.h:1441
byte airConUnused3
Definition globals.h:1442
byte airConMinRPMdiv10
Definition globals.h:1444
byte rollingProtCutPercent[4]
Definition globals.h:1458
byte airConCompOnDelay
Definition globals.h:1449
byte airConRPMCutTime
Definition globals.h:1451
byte Unused15_106_255[150]
Definition globals.h:1461
byte boostDCWhenDisabled
Definition globals.h:1426
byte boostControlEnableThreshold
Definition globals.h:1427
byte airConUnused4
Definition globals.h:1453
byte airConCompPin
Definition globals.h:1439
byte airConUnused2
Definition globals.h:1440
byte airConCompPol
Definition globals.h:1431
Definition globals.h:718
byte aeColdTaperMax
AE cold modifier, taper end temp (no modifier applied, was primePulse in early versions)
Definition globals.h:778
byte aseCount[4]
Afterstart enrichment cycles. This is the number of ignition cycles that the afterstart enrichment % ...
Definition globals.h:819
byte displayB1
Definition globals.h:742
byte divider
Definition globals.h:746
byte injTiming
Injector timing (aka. injector staging) 0=simultaneous, 1=alternating.
Definition globals.h:747
byte idleUpOutputPin
Definition globals.h:856
byte tpsMax
Definition globals.h:785
byte iacRPMlimitHysteresis
Definition globals.h:862
byte fanEnable
Fan mode. 0=Off, 1=On/Off, 2=PWM.
Definition globals.h:815
byte wueValues[10]
Warm up enrichment array (10 bytes, transferred to WUETable)
Definition globals.h:729
byte dfcoMinCLT
Definition globals.h:839
byte crkngAddCLTAdv
Definition globals.h:748
byte fuelAlgorithm
Fuel algorithm - 0=Manifold pressure/MAP (LOAD_SOURCE_MAP, default, proven), 1=Throttle/TPS (LOAD_SOU...
Definition globals.h:763
byte iacCLminValue
Definition globals.h:802
byte tachoPin
Custom pin setting for tacho output (if != 0, override copied to pinTachOut, which defaults to board ...
Definition globals.h:732
byte idleUpPin
Definition globals.h:794
byte useDwellMap
Setting to change between fixed dwell value and dwell map (0=Fixed value from configPage4....
Definition globals.h:814
byte fanWhenCranking
Set whether the fan output will stay on when the engine is cranking (0=force off, 1=allow on)
Definition globals.h:813
byte strokes
Engine cycle type: four-stroke (0) / two-stroke (1)
Definition globals.h:758
byte maeMinChange
Definition globals.h:739
uint16_t vssPulsesPerKm
VSS (Vehicle speed sensor) pulses per Km.
Definition globals.h:845
byte dfcoEnabled
Whether or not DFCO (deceleration fuel cut-off) is turned on.
Definition globals.h:776
byte multiplyMAP
MAP value processing: 0 = off, 1 = div by currentStatus.baro, 2 = div by 100 (to gain usable value)
Definition globals.h:728
byte taeMinChange
Definition globals.h:738
byte rtc_mode
Definition globals.h:816
byte aeTaperMin
Definition globals.h:799
uint16_t EMAPMax
Definition globals.h:810
byte mapSwitchPoint
Definition globals.h:866
byte mapSample
MAP sampling method (0=Instantaneous, 1=Cycle Average, 2=Cycle Minimum, 4=Ign. event average,...
Definition globals.h:757
byte injAngRPM[4]
Definition globals.h:835
byte idleUpOutputInv
Definition globals.h:855
byte crankingPct
Cranking enrichment (See config10, updates.ino)
Definition globals.h:730
byte flexFreqLow
Definition globals.h:780
byte tpsMin
Definition globals.h:784
byte idleAdvVss
Definition globals.h:865
byte vssPin
VSS (Vehicle speed sensor) pin number.
Definition globals.h:843
byte iacTPSlimit
Definition globals.h:861
byte idleUpOutputEnabled
Definition globals.h:854
byte CTPSEnabled
Definition globals.h:826
uint16_t vssRatio4
Definition globals.h:850
byte reqFuel
Definition globals.h:745
uint16_t mapMax
Definition globals.h:787
byte fanWhenOff
Allow running fan with engine off: 0 = Only run fan when engine is running, 1 = Allow even with engin...
Definition globals.h:812
byte aeApplyMode
Acceleration enrichment calc mode: 0 = Multiply | 1 = Add (AE_MODE_ADDER)
Definition globals.h:727
byte idleAdvRPM
Definition globals.h:832
byte legacyMAP
Legacy MAP reading behaviour.
Definition globals.h:771
byte flexFreqHigh
Definition globals.h:781
byte injLayout
Definition globals.h:773
byte aseTaperTime
Definition globals.h:720
byte baroCorr
Definition globals.h:772
byte asePct[4]
Afterstart enrichment values (%)
Definition globals.h:818
byte idleUpAdder
Definition globals.h:798
byte fpPrime
Time (In seconds) that the fuel pump should be primed for on power up.
Definition globals.h:788
uint16_t vssRatio5
Definition globals.h:851
byte dutyLim
Definition globals.h:779
byte SoftLimitMode
Definition globals.h:725
uint16_t oddfire3
The ATDC angle of channel 3 for oddfire.
Definition globals.h:791
byte CTPSPin
Definition globals.h:824
byte boostMaxDuty
Definition globals.h:783
byte maeThresh
Definition globals.h:735
uint16_t injAng[4]
Definition globals.h:754
byte aeTime
Definition globals.h:737
byte aeColdPct
Definition globals.h:721
byte idleUpPolarity
Definition globals.h:795
byte canWBO
Definition globals.h:870
uint16_t oddfire4
The ATDC angle of channel 4 for oddfire.
Definition globals.h:792
byte aeColdTaperMin
Definition globals.h:722
byte pinMapping
The board / ping mapping number / id to be used (See: setPinMapping in init.ino)
Definition globals.h:731
byte vssMode
VSS (Vehicle speed sensor) mode (0=none, 1=CANbus, 2,3=Interrupt driven)
Definition globals.h:842
byte idleAdvAlgorithm
Definition globals.h:829
byte nCylinders
Number of cylinders.
Definition globals.h:760
byte useTachoSweep
Definition globals.h:726
int8_t baroMin
Definition globals.h:806
byte vssSmoothing
Definition globals.h:846
byte tachoSweepMaxRPM
Definition globals.h:858
int8_t EMAPMin
Definition globals.h:809
byte taeThresh
Definition globals.h:736
uint16_t vssRatio2
Definition globals.h:848
byte nInjectors
Number of injectors.
Definition globals.h:765
byte stoich
Stoichiometric ratio (x10, so e.g. 14.7 => 147)
Definition globals.h:789
byte boostMinDuty
Definition globals.h:804
byte iacCLmaxValue
Definition globals.h:803
byte injType
Injector type 0=Port (INJ_TYPE_PORT), 1=Throttle Body / TBI (INJ_TYPE_TBODY)
Definition globals.h:759
byte engineType
Engine crank/ign phasing type: 0=even fire, 1=odd fire.
Definition globals.h:769
uint16_t vssRatio3
Definition globals.h:849
byte idleAdvTPS
Definition globals.h:833
byte ignAlgorithm
Definition globals.h:751
byte fixAngEnable
Whether fixed/locked timing is enabled (0=disable, 1=enable, See configPage4.FixAng)
Definition globals.h:764
byte aseBins[4]
Afterstart enrichment temperatures (x-axis) for (target) enrichment values.
Definition globals.h:820
byte flexEnabled
Enable Flex fuel sensing (pin / interrupt)
Definition globals.h:770
byte battVCorMode
Definition globals.h:724
byte CTPSPolarity
Definition globals.h:825
byte tachoDiv
Whether to change the tacho speed ("half speed tacho" ?)
Definition globals.h:733
byte idleAdvEnabled
Definition globals.h:828
byte incorporateAFR
Enable AFR target (stoich/afrtgt) compensation in PW calculation.
Definition globals.h:817
byte indInjAng
Definition globals.h:752
int8_t mapMin
Definition globals.h:786
int8_t rtc_trim
Definition globals.h:864
byte idleUpEnabled
Definition globals.h:796
byte unused1_126_1
Definition globals.h:868
byte injOpen
Injector opening time (ms * 10)
Definition globals.h:753
byte primePulse[4]
Definition globals.h:821
byte aeTaperMax
Definition globals.h:800
uint16_t vssRatio6
Definition globals.h:852
byte tachoDuration
Definition globals.h:734
byte primingDelay
Definition globals.h:859
uint16_t vssRatio1
Definition globals.h:847
byte idleTaperTime
Definition globals.h:837
uint16_t oddfire2
The ATDC angle of channel 2 for oddfire.
Definition globals.h:790
byte aeMode
Definition globals.h:723
byte primeBins[4]
Definition globals.h:822
byte unused1_126_2
Definition globals.h:869
byte vssAuxCh
Definition globals.h:871
byte perToothIgn
Experimental / New ignition mode ... (?) (See decoders.ino)
Definition globals.h:775
byte idleAdvDelay
Definition globals.h:830
uint16_t baroMax
Definition globals.h:807
byte displayB2
Definition globals.h:743
byte hardCutType
Definition globals.h:750
byte dfcoDelay
Definition globals.h:838
byte includeAFR
Definition globals.h:749
byte decelAmount
Definition globals.h:873
Definition globals.h:891
uint8_t ADCFILTER_O2
Definition globals.h:953
int8_t CrankAng
Fixed start-up/cranking ignition angle (See: corrections.ino)
Definition globals.h:895
byte idleAdvBins[6]
Definition globals.h:969
uint8_t ADCFILTER_MAP
Definition globals.h:955
byte dwellErrCorrect
Definition globals.h:977
byte ignBypassHiLo
Definition globals.h:948
byte dfcoRPM
RPM at which DFCO turns off/on at.
Definition globals.h:942
byte resetControlPin
Definition globals.h:914
byte fuelPumpPin
Fuel pump pin (copied as override to pinFuelPump, defaults to board default, See: init....
Definition globals.h:904
byte vvtMinClt
Definition globals.h:982
byte engineProtectMaxRPM
Definition globals.h:972
byte taeBins[4]
TPS based acceleration enrichment bins (Unit: %/s)
Definition globals.h:935
byte StgCycles
Definition globals.h:916
uint8_t bootloaderCaps
Definition globals.h:910
byte dfcoTPSThresh
Definition globals.h:944
uint8_t ADCFILTER_BAT
Definition globals.h:954
byte triggerTeeth
The full count of teeth on the trigger wheel if there were no gaps.
Definition globals.h:927
byte TrigEdge
Primary (RPM1) Trigger Edge - 0 - RISING, 1 = FALLING (Copied from this config to primaryTriggerEdge)
Definition globals.h:898
byte IgInv
Ignition signal invert (?) (GOING_LOW=0 (default by init.ino) / GOING_HIGH=1 )
Definition globals.h:900
byte wueBins[10]
Warmup Enrichment bins (Values are in configPage2.wueValues OLD:configTable1)
Definition globals.h:937
uint8_t ADCFILTER_TPS
Definition globals.h:950
byte SoftLimMax
Time the soft limit can run (units 0.1S)
Definition globals.h:933
uint8_t ADCFILTER_BARO
Definition globals.h:956
byte crankRPM
RPM below which the engine is considered to be cranking.
Definition globals.h:929
byte floodClear
TPS (raw adc count? % ?) value that triggers flood clear mode (No fuel whilst cranking,...
Definition globals.h:930
byte vvtDelay
Definition globals.h:983
byte maeRates[4]
Definition globals.h:962
byte idleAdvValues[6]
Definition globals.h:970
byte cltAdvBins[6]
Definition globals.h:958
byte sparkDur
Spark duration in ms * 10.
Definition globals.h:907
byte vvt2PWMdir
Definition globals.h:975
byte dfcoHyster
Definition globals.h:943
byte taeValues[4]
TPS based acceleration enrichment rates (Unit: % to add), values matched to thresholds of taeBins.
Definition globals.h:936
byte iatRetBins[6]
Inlet Air Temp timing retard curve bins (Unit: ...)
Definition globals.h:940
uint8_t dwellCrank
Dwell time whilst cranking.
Definition globals.h:925
byte cltAdvValues[6]
Definition globals.h:959
byte SoftRevLim
Soft rev limit (RPM/100)
Definition globals.h:931
byte baroFuelValues[8]
Definition globals.h:967
byte baroFuelBins[8]
Definition globals.h:966
byte HardRevLim
Hard rev limit (RPM/100)
Definition globals.h:934
byte SoftLimRetard
Amount soft limit (ignition) retard (degrees)
Definition globals.h:932
byte useDwellLim
Definition globals.h:919
int16_t triggerAngle
Angle (ATDC) when tooth No:1 on the primary wheel sends signal (-360 to +360 deg.)
Definition globals.h:893
byte TrigAngMul
Multiplier for non evenly divisible tooth counts.
Definition globals.h:896
uint8_t ADCFILTER_CLT
Definition globals.h:951
byte ignBypassEnabled
Definition globals.h:946
byte boostType
Boost Control type: 0=Open loop (OPEN_LOOP_BOOST), 1=closed loop (CLOSED_LOOP_BOOST)
Definition globals.h:918
uint8_t ADCFILTER_IAT
Definition globals.h:952
byte maeBins[4]
Definition globals.h:961
byte FILTER_FLEX
Definition globals.h:981
byte sparkMode
Definition globals.h:920
int8_t batVoltCorrect
Definition globals.h:964
byte TrigSpeed
Primary (RPM1) Trigger speed - 0 = crank speed (CRANK_SPEED), 1 = cam speed (CAM_SPEED),...
Definition globals.h:899
byte unusedBits4
Definition globals.h:979
byte dwellLimit
Definition globals.h:938
uint8_t dwellRun
Dwell time whilst running.
Definition globals.h:926
byte iatRetValues[6]
Inlet Air Temp timing retard curve values (Unit: ...)
Definition globals.h:941
byte triggerMissingTeeth
The size of the tooth gap (ie number of missing teeth)
Definition globals.h:928
int16_t vvt2CL0DutyAng
Definition globals.h:974
byte trigPatternSec
Mode for Missing tooth secondary trigger - 0=single tooth cam wheel (SEC_TRIGGER_SINGLE),...
Definition globals.h:908
byte triggerFilter
Definition globals.h:922
byte useResync
Definition globals.h:905
byte TrigPattern
Decoder configured (DECODER_MISSING_TOOTH, DECODER_BASIC_DISTRIBUTOR, DECODER_GM7X,...
Definition globals.h:901
byte PollLevelPolarity
Definition globals.h:909
byte TrigEdgeSec
Secondary (RPM2) Trigger Edge (See RPM1)
Definition globals.h:903
byte ignCranklock
Definition globals.h:923
byte ignBypassPin
Definition globals.h:947
byte dwellCorrectionValues[6]
Correction table for dwell vs battery voltage.
Definition globals.h:939
byte inj4cylPairing
Definition globals.h:976
byte CANBroadcastProtocol
Definition globals.h:978
int8_t FixAng
Fixed Ignition angle value (enabled by configPage2.fixAngEnable, copied to ignFixValue,...
Definition globals.h:894
byte resetControlConfig
Definition globals.h:912
byte ANGLEFILTER_VVT
Definition globals.h:980
Definition globals.h:994
byte egoTemp
The temperature above which closed loop is enabled.
Definition globals.h:1005
byte flatSArm
Definition globals.h:1059
byte vvtFreq
Frequency of the boost PWM valve.
Definition globals.h:1030
byte iacCLValues[10]
Definition globals.h:1061
byte egoTPSMax
RPM must be above this for closed loop to function.
Definition globals.h:1018
byte tachoMode
Definition globals.h:1023
byte boostEnabled
Boost control enabled 0 =off, 1 = on.
Definition globals.h:998
byte idleFreq
Frequency of the vvt PWM valve.
Definition globals.h:1031
byte boostFreq
Definition globals.h:1029
byte boostMode
Definition globals.h:1021
byte iacBins[10]
Definition globals.h:1064
byte flatSEnable
Flat shift enable.
Definition globals.h:1055
byte fanFreq
Definition globals.h:1084
byte fanSP
Definition globals.h:1082
byte vvtLoadSource
Load source for VVT (TPS or MAP)
Definition globals.h:1008
byte lnchSoftLim
Definition globals.h:1037
byte egoType
EGO Sensor Type 0=Disabled/None, 1=Narrowband, 2=Wideband.
Definition globals.h:997
byte lnchHardLim
Definition globals.h:1039
byte egoLimit
Definition globals.h:1013
byte boostKI
Definition globals.h:1049
byte iacCrankSteps[4]
Definition globals.h:1065
byte vvt1Pin
TPS must be below this for closed loop to function.
Definition globals.h:1019
byte lnchPullRes
Definition globals.h:1052
byte egoRPM
Time in seconds after engine starts that closed loop becomes available.
Definition globals.h:1017
byte airDenRates[9]
Definition globals.h:1028
byte iacFastTemp
Definition globals.h:1074
byte idleKD
Definition globals.h:1045
byte iacAlgorithm
Definition globals.h:1069
byte voltageCorrectionBins[6]
Definition globals.h:1025
byte egoKP
Definition globals.h:1002
byte egoKI
Definition globals.h:1003
byte idleKI
Definition globals.h:1044
byte fanPin
Definition globals.h:1081
byte useEMAP
Whether to use fixed tacho pulse duration or match to dwell duration.
Definition globals.h:1024
byte fanInv
Definition globals.h:1079
byte egoAlgorithm
EGO Algorithm - Simple, PID, No correction.
Definition globals.h:996
byte engineProtectType
Definition globals.h:1000
byte iacStepHyster
Definition globals.h:1077
byte boostKD
Definition globals.h:1050
byte fanHyster
Definition globals.h:1083
byte iacOLStepVal[10]
Definition globals.h:1062
byte iacCrankBins[4]
Definition globals.h:1067
byte fanUnused
Definition globals.h:1080
byte vvtCLAlterFuelTiming
Definition globals.h:1011
byte baroPin
Definition globals.h:1056
byte ego_max
AFR must be above this for closed loop to function.
Definition globals.h:1015
byte iacPWMrun
Run the PWM idle valve before engine is cranked over (0 = off, 1 = on)
Definition globals.h:1053
byte vvtPWMdir
VVT direction (normal or reverse)
Definition globals.h:1009
byte launchPin
Launch (control ?) pin.
Definition globals.h:1033
byte egoCount
The number of ignition cycles per (ego AFR ?) step.
Definition globals.h:1006
byte lnchFuelAdd
Definition globals.h:1040
byte launchHiLo
Definition globals.h:1035
byte iacPWMdir
Definition globals.h:1072
byte iacOLPWMVal[10]
Definition globals.h:1063
byte useExtBaro
Definition globals.h:1020
byte iacChannels
Definition globals.h:1071
byte fuelTrimEnabled
Definition globals.h:1054
byte iacStepTime
Definition globals.h:1070
byte iacCrankDuty[4]
Definition globals.h:1066
byte vvtMode
Valid VVT modes are 'on/off', 'open loop' and 'closed loop'.
Definition globals.h:1007
byte ego_min
Maximum amount the closed loop EGO control will vary the fuelling.
Definition globals.h:1014
byte flatSSoftWin
Definition globals.h:1057
byte vvtEnabled
Definition globals.h:999
byte boostCutEnabled
Definition globals.h:1012
int8_t lnchRetard
Definition globals.h:1038
byte boostKP
Definition globals.h:1048
byte launchEnabled
Launch ...???... (control?) enabled.
Definition globals.h:1034
int8_t flatSRetard
Definition globals.h:1058
byte vvtCLUseHold
Definition globals.h:1010
byte egoKD
Definition globals.h:1004
byte fanPWMBins[4]
Definition globals.h:1085
byte injVoltageCorrectionValues[6]
Definition globals.h:1026
byte idleKP
Definition globals.h:1043
byte airDenBins[9]
Definition globals.h:1027
byte boostLimit
Boost limit (Kpa). Stored value is actual (kPa) value divided by 2, allowing kPa values up to 511.
Definition globals.h:1047
byte ego_sdelay
AFR must be below this for closed loop to function.
Definition globals.h:1016
byte iacStepHome
Definition globals.h:1076
byte boostPin
Boost control mode: 0=Simple (BOOST_MODE_SIMPLE) or 1=full (BOOST_MODE_FULL)
Definition globals.h:1022
Definition globals.h:1096
byte afrProtectMinMAP
Definition globals.h:1161
byte afrProtectDeviation
Definition globals.h:1164
byte unused10_179
Definition globals.h:1151
uint16_t caninput_source_can_address[16]
Definition globals.h:1104
byte enable_secondarySerial
Definition globals.h:1097
byte dfcoTaperFuel
Definition globals.h:1153
uint16_t canoutput_param_group[8]
Definition globals.h:1114
byte coolantProtTemp[6]
Definition globals.h:1149
byte afrProtectReactivationTPS
Definition globals.h:1166
byte boostByGear2
Definition globals.h:1140
byte iacCoolTime
Definition globals.h:1130
byte unused10_183
Definition globals.h:1156
byte speeduino_tsCanId
Definition globals.h:1122
byte coolantProtRPM[6]
Definition globals.h:1148
byte afrProtectEnabled
Definition globals.h:1160
byte hardRevMode
Definition globals.h:1147
byte dfcoTaperTime
Definition globals.h:1152
byte boostByGear4
Definition globals.h:1142
byte afrProtectMinTPS
Definition globals.h:1163
byte unused10_68
Definition globals.h:1111
byte boostByGear6
Definition globals.h:1144
byte afrProtectCutTime
Definition globals.h:1165
uint8_t canoutput_param_start_byte[8]
Definition globals.h:1115
byte idleAdvStartDelay
Definition globals.h:1137
byte unused10_111
Definition globals.h:1119
byte enable_intcan
Definition globals.h:1099
byte blankField
Definition globals.h:1133
uint16_t caninput_source_num_bytes
Definition globals.h:1106
uint8_t caninput_source_start_byte[16]
Definition globals.h:1105
byte secondarySerialProtocol
Definition globals.h:1100
byte iacStepperPower
Definition globals.h:1134
byte boostByGear5
Definition globals.h:1143
byte iacStepperInv
Definition globals.h:1129
uint8_t Auxinpina[16]
Definition globals.h:1126
byte canoutput_param_num_bytes[8]
Definition globals.h:1116
uint16_t obd_address
Definition globals.h:1125
byte PWMFanDuty[4]
Definition globals.h:1146
byte unused10_184
Definition globals.h:1158
byte canoutput_sel[8]
Definition globals.h:1113
byte unused9_0
Definition globals.h:1101
byte unused10_110
Definition globals.h:1118
byte caninput_sel[16]
Definition globals.h:1103
byte boostByGear1
Definition globals.h:1139
uint8_t Auxinpinb[16]
Definition globals.h:1127
byte intcan_available
Definition globals.h:1098
byte dfcoTaperEnable
Definition globals.h:1155
byte boostByGearEnabled
Definition globals.h:1132
uint16_t realtime_base_address
Definition globals.h:1124
byte egoMAPMax
Definition globals.h:1120
byte boostByGear3
Definition globals.h:1141
byte caninputEndianess
Definition globals.h:1108
byte afrProtectMinRPM
Definition globals.h:1162
uint16_t true_address
Definition globals.h:1123
byte iacMaxSteps
Definition globals.h:1136
byte enable_candata_out
Definition globals.h:1112
byte dfcoTaperAdvance
Definition globals.h:1154
byte egoMAPMin
Definition globals.h:1121
Definition globals.h:578
byte dwellCorrection
Definition globals.h:618
volatile byte syncLossCounter
Definition globals.h:681
byte ASEValue
Definition globals.h:690
int16_t vvt2Angle
Definition globals.h:699
byte testOutputs
Test Output bits (only first bit used/tested ?)
Definition globals.h:665
volatile bool hasSync
Definition globals.h:579
uint16_t canin[16]
16bit raw value of selected canin data for channels 0-15
Definition globals.h:669
byte oilPressure
Definition globals.h:695
uint8_t current_caninchannel
Definition globals.h:670
bool launchingSoft
Definition globals.h:658
int16_t EMAP
EMAP ... (See config6::useEMAP for EMAP enablement)
Definition globals.h:595
unsigned int PW3
In uS.
Definition globals.h:649
byte launchCorrection
Definition globals.h:630
unsigned int PW6
In uS.
Definition globals.h:652
bool idleUpActive
Definition globals.h:636
long vvt1Duty
Definition globals.h:688
int iatADC
Definition globals.h:612
bool CTPSActive
Definition globals.h:637
unsigned int PW8
In uS.
Definition globals.h:654
byte CLIdleTarget
Definition globals.h:635
byte vvt2TargetAngle
Definition globals.h:700
volatile byte status5
Status 5 ... (See also config10 Status 5* members and BIT_STATU5_* defines)
Definition globals.h:645
uint16_t EMAPADC
Definition globals.h:596
byte TPSlast
Definition globals.h:601
bool clutchTrigger
Definition globals.h:582
bool testActive
Definition globals.h:666
bool idleUpOutputActive
Definition globals.h:692
unsigned long AEEndTime
Definition globals.h:640
byte baroCorrection
Definition globals.h:629
bool flatShiftingHard
Definition globals.h:662
int16_t vvt1Angle
Definition globals.h:686
unsigned int PW4
In uS.
Definition globals.h:650
byte VE2
Definition globals.h:606
byte flexCorrection
Definition globals.h:631
bool toothLogEnabled
Definition globals.h:684
byte VE1
Definition globals.h:605
byte baro
Barometric pressure is simply the initial MAP reading, taken before the engine is running....
Definition globals.h:597
int IAT
Definition globals.h:611
int16_t mapDOT
Definition globals.h:602
byte O2_2
Definition globals.h:608
byte wueCorrection
Definition globals.h:626
byte batCorrection
Definition globals.h:627
int8_t advance
Definition globals.h:620
unsigned int PW1
In uS.
Definition globals.h:647
uint16_t dwell
dwell (coil primary winding/circuit on) time (in ms * 10 ? See correctionsDwell)
Definition globals.h:616
uint8_t engine
Engine status bits (See BIT_ENGINE_* defines on top of this file)
Definition globals.h:646
volatile byte knockCount
Definition globals.h:683
byte nSquirts
Number of injector squirts per cycle (per injector)
Definition globals.h:674
int8_t advance2
Definition globals.h:622
volatile byte status4
Status bits (See BIT_STATUS4_* defines on top of this file)
Definition globals.h:644
uint16_t vss
Definition globals.h:691
byte knockRetard
Definition globals.h:682
byte TS_SD_Status
Definition globals.h:703
uint16_t boostTarget
Definition globals.h:664
bool fuelPumpOn
Definition globals.h:680
byte gear
Definition globals.h:693
volatile bool injPrimed
Definition globals.h:585
volatile byte secl
Definition globals.h:656
byte airConStatus
Definition globals.h:704
int coolant
Definition globals.h:609
byte VE
Definition globals.h:604
int batADC
Definition globals.h:613
volatile uint16_t actualDwell
actual dwell time if new ignition mode is used (in uS)
Definition globals.h:617
byte fuelPressure
Definition globals.h:694
unsigned int clutchEngagedRPM
Definition globals.h:661
volatile uint32_t startRevolutions
Definition globals.h:663
unsigned int PW5
In uS.
Definition globals.h:651
volatile bool tachoAlt
Definition globals.h:587
uint16_t boostDuty
Boost Duty percentage value * 100 to give 2 points of precision.
Definition globals.h:667
bool previousClutchTrigger
Definition globals.h:583
int O2ADC
Definition globals.h:614
int cltADC
Definition globals.h:610
byte battery10
Definition globals.h:619
volatile byte runSecs
Definition globals.h:655
int8_t advance1
Definition globals.h:621
uint16_t RPM
RPM - Current Revs per minute.
Definition globals.h:589
int baroADC
Definition globals.h:593
long longRPM
RPM as long int (gets assigned to / maintained in statuses.RPM as well)
Definition globals.h:591
byte wmiPW
Definition globals.h:698
volatile int8_t fuelTemp
Definition globals.h:639
volatile uint32_t loopsPerSecond
Definition globals.h:657
byte vvt1TargetAngle
Definition globals.h:687
byte RPMdiv100
RPM value scaled (divided by 100) to fit a byte (0-255, e.g. 12000 => 120)
Definition globals.h:590
uint16_t corrections
Definition globals.h:623
long vvt2Duty
Definition globals.h:701
byte fanDuty
Definition globals.h:697
byte tpsADC
Definition globals.h:599
byte outputsStatus
Definition globals.h:702
int16_t fuelLoad2
Definition globals.h:677
byte afrTarget
Definition globals.h:634
volatile byte status3
Status bits (See BIT_STATUS3_* defines on top of this file)
Definition globals.h:643
bool launchingHard
Definition globals.h:659
volatile int rpmDOT
Definition globals.h:603
byte fuelTempCorrection
Definition globals.h:632
int16_t fuelLoad
Definition globals.h:676
byte nChannels
Definition globals.h:675
byte nitrous_status
Definition globals.h:673
unsigned int PW2
In uS.
Definition globals.h:648
int16_t ignLoad2
Definition globals.h:679
volatile bool fpPrimed
Definition globals.h:584
int16_t tpsDOT
Definition globals.h:600
byte TPS
Definition globals.h:598
uint16_t freeRAM
Definition globals.h:660
int16_t ignLoad
Definition globals.h:678
byte compositeTriggerUsed
Definition globals.h:685
byte egoCorrection
Definition globals.h:625
int16_t flexBoostCorrection
Definition globals.h:672
bool initialisationComplete
Definition globals.h:581
int8_t flexIgnCorrection
Definition globals.h:633
byte idleLoad
Either the current steps or current duty cycle for the idle control.
Definition globals.h:668
int O2_2ADC
Definition globals.h:615
byte iatCorrection
Definition globals.h:628
uint16_t injAngle
Definition globals.h:689
long MAP
Manifold absolute pressure. Has to be a long for PID calcs (Boost control)
Definition globals.h:594
volatile bool tachoSweepEnabled
Definition globals.h:586
uint16_t crankRPM
Definition globals.h:671
volatile byte ethanolPct
Definition globals.h:638
unsigned int PW7
In uS.
Definition globals.h:653
uint16_t AEamount
Definition globals.h:624
byte engineProtectStatus
Definition globals.h:696
byte O2
Definition globals.h:607
volatile byte status2
status 2/control indicator bits (launch control, boost cut, spark errors, See BIT_STATUS2_* defines)
Definition globals.h:642
uint16_t mapADC
Definition globals.h:592
volatile byte status1
Status bits (See BIT_STATUS1_* defines on top of this file)
Definition globals.h:641
Definition table2d.h:17
3D table data types and functions