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 "table2d.h"
28#include "table3d.h"
29#include "statuses.h"
30#include "config_pages.h"
31#include "atomic.h"
32
33#define CRANK_ANGLE_MAX (max(CRANK_ANGLE_MAX_IGN, CRANK_ANGLE_MAX_INJ))
34
35#ifndef UNIT_TEST
36constexpr uint8_t TOOTH_LOG_SIZE = 127U;
37#else
38constexpr uint8_t TOOTH_LOG_SIZE = 1U;
39#endif
40
41#define INJ1_CMD_BIT 0
42#define INJ2_CMD_BIT 1
43#define INJ3_CMD_BIT 2
44#define INJ4_CMD_BIT 3
45#define INJ5_CMD_BIT 4
46#define INJ6_CMD_BIT 5
47#define INJ7_CMD_BIT 6
48#define INJ8_CMD_BIT 7
49
50#define IGN1_CMD_BIT 0
51#define IGN2_CMD_BIT 1
52#define IGN3_CMD_BIT 2
53#define IGN4_CMD_BIT 3
54#define IGN5_CMD_BIT 4
55#define IGN6_CMD_BIT 5
56#define IGN7_CMD_BIT 6
57#define IGN8_CMD_BIT 7
58
59extern struct table3d16RpmLoad fuelTable; //16x16 fuel map
60extern struct table3d16RpmLoad fuelTable2; //16x16 fuel map
61extern struct table3d16RpmLoad ignitionTable; //16x16 ignition map
62extern struct table3d16RpmLoad ignitionTable2; //16x16 ignition map
63extern struct table3d16RpmLoad afrTable; //16x16 afr target map
64extern struct table3d8RpmLoad stagingTable; //8x8 fuel staging table
65extern struct table3d8RpmLoad boostTable; //8x8 boost map
66extern struct table3d8RpmLoad boostTableLookupDuty; //8x8 boost map
67extern struct table3d8RpmLoad vvtTable; //8x8 vvt map
68extern struct table3d8RpmLoad vvt2Table; //8x8 vvt map
69extern struct table3d8RpmLoad wmiTable; //8x8 wmi map
70
72
73extern trimTable3d trim1Table; //6x6 Fuel trim 1 map
74extern trimTable3d trim2Table; //6x6 Fuel trim 2 map
75extern trimTable3d trim3Table; //6x6 Fuel trim 3 map
76extern trimTable3d trim4Table; //6x6 Fuel trim 4 map
77extern trimTable3d trim5Table; //6x6 Fuel trim 5 map
78extern trimTable3d trim6Table; //6x6 Fuel trim 6 map
79extern trimTable3d trim7Table; //6x6 Fuel trim 7 map
80extern trimTable3d trim8Table; //6x6 Fuel trim 8 map
81
82extern struct table3d4RpmLoad dwellTable; //4x4 Dwell map
83
84extern uint8_t softLimitTime; //The time (in 0.1 seconds, based on seclx10) that the soft limiter started
85extern volatile uint16_t mainLoopCount;
86extern volatile unsigned long ms_counter; //A counter that increments once per ms
88extern volatile uint32_t toothHistory[TOOTH_LOG_SIZE];
90extern volatile unsigned int toothHistoryIndex;
91extern unsigned long currentLoopTime;
92extern volatile uint16_t ignitionCount;
95extern volatile uint32_t runSecsX10;
96extern volatile uint32_t seclx10;
97extern volatile byte HWTest_INJ;
98extern volatile byte HWTest_INJ_Pulsed;
99extern volatile byte HWTest_IGN;
100extern volatile byte HWTest_IGN_Pulsed;
102extern byte pinInjector1; //Output pin injector 1
103extern byte pinInjector2; //Output pin injector 2
104extern byte pinInjector3; //Output pin injector 3
105extern byte pinInjector4; //Output pin injector 4
106extern byte pinInjector5; //Output pin injector 5
107extern byte pinInjector6; //Output pin injector 6
108extern byte pinInjector7; //Output pin injector 7
109extern byte pinInjector8; //Output pin injector 8
110extern byte pinCoil1; //Pin for coil 1
111extern byte pinCoil2; //Pin for coil 2
112extern byte pinCoil3; //Pin for coil 3
113extern byte pinCoil4; //Pin for coil 4
114extern byte pinCoil5; //Pin for coil 5
115extern byte pinCoil6; //Pin for coil 6
116extern byte pinCoil7; //Pin for coil 7
117extern byte pinCoil8; //Pin for coil 8
118extern byte pinTrigger; //The CAS pin
119extern byte pinTrigger2; //The Cam Sensor pin known as secondary input
120extern byte pinTrigger3; //the 2nd cam sensor pin known as tertiary input
121extern byte pinTPS;//TPS input pin
122extern byte pinMAP; //MAP sensor pin
123extern byte pinEMAP; //EMAP sensor pin
124extern byte pinMAP2; //2nd MAP sensor (Currently unused)
125extern byte pinIAT; //IAT sensor pin
126extern byte pinCLT; //CLS sensor pin
127extern byte pinO2; //O2 Sensor pin
128extern byte pinO2_2; //second O2 pin
129extern byte pinBat; //Battery voltage pin
130extern byte pinDisplayReset; // OLED reset pin
131extern byte pinTachOut; //Tacho output
132extern byte pinFuelPump; //Fuel pump on/off
133extern byte pinIdle1; //Single wire idle control
134extern byte pinIdle2; //2 wire idle control (Not currently used)
135extern byte pinIdleUp; //Input for triggering Idle Up
136extern byte pinIdleUpOutput; //Output that follows (normal or inverted) the idle up pin
137extern byte pinCTPS; //Input for triggering closed throttle state
138extern byte pinFuel2Input; //Input for switching to the 2nd fuel table
139extern byte pinSpark2Input; //Input for switching to the 2nd ignition table
140extern byte pinSpareTemp1; // Future use only
141extern byte pinSpareTemp2; // Future use only
142extern byte pinSpareOut1; //Generic output
143extern byte pinSpareOut2; //Generic output
144extern byte pinSpareOut3; //Generic output
145extern byte pinSpareOut4; //Generic output
146extern byte pinSpareOut5; //Generic output
147extern byte pinSpareOut6; //Generic output
148extern byte pinSpareHOut1; //spare high current output
149extern byte pinSpareHOut2; // spare high current output
150extern byte pinSpareLOut1; // spare low current output
151extern byte pinSpareLOut2; // spare low current output
152extern byte pinSpareLOut3;
153extern byte pinSpareLOut4;
154extern byte pinSpareLOut5;
155extern byte pinBoost;
156extern byte pinVVT_1; // vvt output 1
157extern byte pinVVT_2; // vvt output 2
158extern byte pinFan; // Cooling fan output
159extern byte pinStepperDir; //Direction pin for the stepper motor driver
160extern byte pinStepperStep; //Step pin for the stepper motor driver
161extern byte pinStepperEnable; //Turning the DRV8825 driver on/off
162extern byte pinLaunch;
163extern byte pinIgnBypass; //The pin used for an ignition bypass (Optional)
164extern byte pinFlex; //Pin with the flex sensor attached
165extern byte pinVSS;
166extern byte pinBaro; //Pin that an external barometric pressure sensor is attached to (If used)
167extern byte pinResetControl; // Output pin used control resetting the Arduino
168extern byte pinFuelPressure;
169extern byte pinOilPressure;
170extern byte pinWMIEmpty; // Water tank empty sensor
171extern byte pinWMIIndicator; // No water indicator bulb
172extern byte pinWMIEnabled; // ON-OFF output to relay/pump/solenoid
173extern byte pinMC33810_1_CS;
174extern byte pinMC33810_2_CS;
175extern byte pinSDEnable; //Input for manually enabling SD logging
176#ifdef USE_SPI_EEPROM
177 extern byte pinSPIFlash_CS;
178#endif
179extern byte pinAirConComp; // Air conditioning compressor output
180extern byte pinAirConFan; // Stand-alone air conditioning fan output
181extern byte pinAirConRequest; // Air conditioning request input
182
183/* global variables */ // from speeduino.ino
184//#ifndef UNIT_TEST
185
186//#endif
187
188extern struct statuses currentStatus; //The global status object
189extern struct config2 configPage2;
190extern struct config4 configPage4;
191extern struct config6 configPage6;
192extern struct config9 configPage9;
193extern struct config10 configPage10;
194extern struct config13 configPage13;
195extern struct config15 configPage15;
196
197bool pinIsOutput(byte pin);
198bool pinIsUsed(byte pin);
199
200#endif // GLOBALS_H
The tune page structs and related defines.
byte pinTrigger3
the 2nd cam sensor pin
Definition globals.cpp:67
byte pinStepperEnable
Definition globals.cpp:108
volatile uint16_t ignitionCount
Definition globals.cpp:38
byte pinMC33810_2_CS
Definition globals.cpp:121
byte pinVSS
Definition globals.cpp:112
byte pinSpareLOut4
Definition globals.cpp:100
byte pinSpareLOut2
Definition globals.cpp:98
byte pinFuelPump
Definition globals.cpp:79
table3d6RpmLoad trimTable3d
Definition globals.h:71
byte pinSpareOut6
Definition globals.cpp:94
byte pinCoil4
Pin for coil 4.
Definition globals.cpp:60
struct table3d8RpmLoad stagingTable
8x8 fuel staging table
Definition globals.cpp:11
byte pinTrigger2
RPM2 (Typically the Cam Sensor) pin.
Definition globals.cpp:66
byte pinTPS
Definition globals.cpp:68
struct statuses currentStatus
Definition globals.cpp:130
trimTable3d trim5Table
6x6 Fuel trim 5 map
Definition globals.cpp:21
byte pinFan
Cooling fan output (on/off? See: auxiliaries.ino)
Definition globals.cpp:105
trimTable3d trim3Table
6x6 Fuel trim 3 map
Definition globals.cpp:19
byte pinBat
Definition globals.cpp:76
volatile uint32_t seclx10
Definition globals.cpp:42
byte pinTachOut
Definition globals.cpp:78
constexpr uint8_t TOOTH_LOG_SIZE
Definition globals.h:36
byte pinO2_2
Definition globals.cpp:75
byte pinVVT_2
vvt (variable valve timing) output 2
Definition globals.cpp:104
struct table3d8RpmLoad vvt2Table
8x8 vvt2 map
Definition globals.cpp:15
volatile unsigned int toothHistoryIndex
Current index to toothHistory array.
Definition globals.cpp:36
trimTable3d trim4Table
6x6 Fuel trim 4 map
Definition globals.cpp:20
byte pinAirConComp
Definition globals.cpp:126
int16_t CRANK_ANGLE_MAX_IGN
Definition globals.cpp:39
unsigned long currentLoopTime
Definition globals.cpp:37
byte pinAirConFan
Definition globals.cpp:127
volatile uint32_t runSecsX10
Definition globals.cpp:41
uint16_t fixedCrankingOverride
Definition globals.cpp:31
struct table3d16RpmLoad afrTable
16x16 afr target map
Definition globals.cpp:10
byte pinInjector3
Output pin injector 3.
Definition globals.cpp:51
byte pinInjector2
Output pin injector 2.
Definition globals.cpp:50
volatile byte HWTest_IGN_Pulsed
Definition globals.cpp:46
struct table3d16RpmLoad ignitionTable2
16x16 ignition map
Definition globals.cpp:9
byte pinCTPS
Definition globals.cpp:84
byte pinMAP
Definition globals.cpp:69
byte pinCoil5
Pin for coil 5.
Definition globals.cpp:61
bool pinIsOutput(byte pin)
Definition globals.cpp:140
byte pinWMIEnabled
Definition globals.cpp:119
byte pinResetControl
Definition globals.cpp:114
byte pinSpareOut5
Definition globals.cpp:93
byte pinBoost
Definition globals.cpp:102
byte pinIdleUp
Definition globals.cpp:82
byte pinIgnBypass
Definition globals.cpp:110
byte pinSpareTemp2
Definition globals.cpp:88
byte pinSpareOut3
Definition globals.cpp:91
int16_t 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:40
byte pinCoil3
Pin for coil 3.
Definition globals.cpp:59
volatile byte HWTest_INJ
Definition globals.cpp:43
byte pinBaro
Definition globals.cpp:113
byte pinCoil8
Pin for coil 8.
Definition globals.cpp:64
byte pinCLT
Definition globals.cpp:73
struct table3d16RpmLoad fuelTable2
16x16 fuel map
Definition globals.cpp:7
byte pinLaunch
Definition globals.cpp:109
trimTable3d trim6Table
6x6 Fuel trim 6 map
Definition globals.cpp:22
byte pinEMAP
Definition globals.cpp:70
byte pinO2
Definition globals.cpp:74
byte pinTrigger
RPM1 (Typically CAS=crankshaft angle sensor) pin.
Definition globals.cpp:65
byte pinInjector6
Output pin injector 6.
Definition globals.cpp:54
byte pinStepperDir
Definition globals.cpp:106
byte pinSpareTemp1
Definition globals.cpp:87
byte pinSpark2Input
Definition globals.cpp:86
byte pinFlex
Definition globals.cpp:111
byte pinCoil1
Pin for coil 1.
Definition globals.cpp:57
byte pinIAT
Definition globals.cpp:72
byte pinWMIEmpty
Definition globals.cpp:117
byte pinSpareHOut2
Definition globals.cpp:96
struct config15 configPage15
Immediately below max RPM, there is a range within which we can apply a rolling cut.
Definition engineProtection.cpp:286
struct table3d8RpmLoad wmiTable
8x8 wmi map
Definition globals.cpp:16
byte pinInjector1
Various pin numbering (Injectors, Ign outputs, CAS, Cam, Sensors. etc.) assignments.
Definition globals.cpp:49
struct config10 configPage10
Definition auxiliaries.cpp:183
byte pinWMIIndicator
Definition globals.cpp:118
byte pinSpareLOut1
Definition globals.cpp:97
byte pinInjector5
Output pin injector 5.
Definition globals.cpp:53
byte pinStepperStep
Definition globals.cpp:107
trimTable3d trim7Table
6x6 Fuel trim 7 map
Definition globals.cpp:23
byte pinSpareLOut5
Definition globals.cpp:101
byte pinSpareOut4
Definition globals.cpp:92
byte pinIdle1
Definition globals.cpp:80
volatile byte HWTest_IGN
Definition globals.cpp:45
struct table3d4RpmLoad dwellTable
4x4 Dwell map
Definition globals.cpp:25
byte pinDisplayReset
Definition globals.cpp:77
byte pinVVT_1
vvt (variable valve timing) output 1
Definition globals.cpp:103
struct table3d8RpmLoad boostTable
8x8 boost map
Definition globals.cpp:12
struct config9 configPage9
Definition engineProtection.cpp:13
uint8_t softLimitTime
Definition globals.cpp:28
byte pinIdle2
Definition globals.cpp:81
struct table3d16RpmLoad fuelTable
16x16 fuel map
Definition globals.cpp:6
byte pinSpareOut1
Definition globals.cpp:89
volatile byte HWTest_INJ_Pulsed
Definition globals.cpp:44
byte pinCoil6
Pin for coil 6.
Definition globals.cpp:62
volatile uint8_t compositeLogHistory[TOOTH_LOG_SIZE]
Definition globals.cpp:33
byte pinInjector8
Output pin injector 8.
Definition globals.cpp:56
byte pinInjector7
Output pin injector 7.
Definition globals.cpp:55
byte pinAirConRequest
Definition globals.cpp:128
struct config13 configPage13
Definition globals.cpp:136
byte pinSpareLOut3
Definition globals.cpp:99
volatile unsigned long ms_counter
Definition globals.cpp:30
struct config6 configPage6
Definition auxiliaries.cpp:164
volatile uint16_t mainLoopCount
Definition globals.cpp:29
byte pinMAP2
Definition globals.cpp:71
byte pinSpareOut2
Definition globals.cpp:90
struct config2 configPage2
Definition corrections.cpp:59
byte pinMC33810_1_CS
Definition globals.cpp:120
struct table3d8RpmLoad boostTableLookupDuty
8x8 boost map lookup table
Definition globals.cpp:13
byte pinFuel2Input
Definition globals.cpp:85
byte pinFuelPressure
Definition globals.cpp:115
byte pinSDEnable
Definition globals.cpp:122
volatile uint32_t toothHistory[TOOTH_LOG_SIZE]
Tooth trigger history - delta time (in uS) from last tooth (Indexed by toothHistoryIndex)
Definition globals.cpp:32
bool pinIsUsed(byte pin)
Definition globals.cpp:195
trimTable3d trim2Table
6x6 Fuel trim 2 map
Definition globals.cpp:18
struct config4 configPage4
Definition corrections.cpp:56
byte pinCoil2
Pin for coil 2.
Definition globals.cpp:58
byte pinSpareHOut1
Definition globals.cpp:95
byte pinOilPressure
Definition globals.cpp:116
byte pinIdleUpOutput
Definition globals.cpp:83
byte pinInjector4
Output pin injector 4.
Definition globals.cpp:52
struct table3d16RpmLoad ignitionTable
16x16 ignition map
Definition globals.cpp:8
byte pinCoil7
Pin for coil 7.
Definition globals.cpp:63
trimTable3d trim1Table
6x6 Fuel trim 1 map
Definition globals.cpp:17
trimTable3d trim8Table
6x6 Fuel trim 8 map
Definition globals.cpp:24
struct table3d8RpmLoad vvtTable
8x8 vvt map
Definition globals.cpp:14
static TIntegral readSerialIntegralTimeout(void)
Reads an integral type, timing out if necessary.
Definition comms.cpp:175
The statuses struct and related defines.
Definition config_pages.h:650
Definition config_pages.h:846
Definition config_pages.h:895
Definition config_pages.h:171
Definition config_pages.h:356
Definition config_pages.h:455
Definition config_pages.h:572
The status struct with current values for all 'live' variables.
Definition statuses.h:36
3D table data types and functions