Speeduino
Loading...
Searching...
No Matches
auxiliaries.h
Go to the documentation of this file.
1#ifndef AUX_H
2#define AUX_H
3
4#include "port_pin.h"
5#include "atomic.h"
6
7void initialiseAuxPWM(void);
8void boostControl(void);
9void boostDisable(void);
10void boostByGear(void);
11void vvtControl(void);
12void initialiseFan(void);
13void initialiseAirCon(void);
14void nitrousControl(void);
15void fanControl(void);
16void airConControl(void);
17bool READ_AIRCON_REQUEST(void);
18void wmiControl(void);
19
20#define SIMPLE_BOOST_P 1
21#define SIMPLE_BOOST_I 1
22#define SIMPLE_BOOST_D 1
23
24#if(defined(CORE_TEENSY) || defined(CORE_STM32))
25#define BOOST_PIN_LOW() (digitalWrite(pinBoost, LOW))
26#define BOOST_PIN_HIGH() (digitalWrite(pinBoost, HIGH))
27#define VVT1_PIN_LOW() (digitalWrite(pinVVT_1, LOW))
28#define VVT1_PIN_HIGH() (digitalWrite(pinVVT_1, HIGH))
29#define VVT2_PIN_LOW() (digitalWrite(pinVVT_2, LOW))
30#define VVT2_PIN_HIGH() (digitalWrite(pinVVT_2, HIGH))
31#define FAN_PIN_LOW() (digitalWrite(pinFan, LOW))
32#define FAN_PIN_HIGH() (digitalWrite(pinFan, HIGH))
33#define N2O_STAGE1_PIN_LOW() (digitalWrite(configPage10.n2o_stage1_pin, LOW))
34#define N2O_STAGE1_PIN_HIGH() (digitalWrite(configPage10.n2o_stage1_pin, HIGH))
35#define N2O_STAGE2_PIN_LOW() (digitalWrite(configPage10.n2o_stage2_pin, LOW))
36#define N2O_STAGE2_PIN_HIGH() (digitalWrite(configPage10.n2o_stage2_pin, HIGH))
37#define AIRCON_PIN_LOW() (digitalWrite(pinAirConComp, LOW))
38#define AIRCON_PIN_HIGH() (digitalWrite(pinAirConComp, HIGH))
39#define AIRCON_FAN_PIN_LOW() (digitalWrite(pinAirConFan, LOW))
40#define AIRCON_FAN_PIN_HIGH() (digitalWrite(pinAirConFan, HIGH))
41#define FUEL_PUMP_ON() { digitalWrite(pinFuelPump, HIGH); currentStatus.fuelPumpOn = true; }
42#define FUEL_PUMP_OFF() { digitalWrite(pinFuelPump, LOW); currentStatus.fuelPumpOn = false; }
43
44#else
45
46#define BOOST_PIN_LOW() ATOMIC() { *boost_pin_port &= ~(boost_pin_mask); }
47#define BOOST_PIN_HIGH() ATOMIC() { *boost_pin_port |= (boost_pin_mask); }
48#define VVT1_PIN_LOW() ATOMIC() { *vvt1_pin_port &= ~(vvt1_pin_mask); }
49#define VVT1_PIN_HIGH() ATOMIC() { *vvt1_pin_port |= (vvt1_pin_mask); }
50#define VVT2_PIN_LOW() ATOMIC() { *vvt2_pin_port &= ~(vvt2_pin_mask); }
51#define VVT2_PIN_HIGH() ATOMIC() { *vvt2_pin_port |= (vvt2_pin_mask); }
52#define N2O_STAGE1_PIN_LOW() ATOMIC() { *n2o_stage1_pin_port &= ~(n2o_stage1_pin_mask); }
53#define N2O_STAGE1_PIN_HIGH() ATOMIC() { *n2o_stage1_pin_port |= (n2o_stage1_pin_mask); }
54#define N2O_STAGE2_PIN_LOW() ATOMIC() { *n2o_stage2_pin_port &= ~(n2o_stage2_pin_mask); }
55#define N2O_STAGE2_PIN_HIGH() ATOMIC() { *n2o_stage2_pin_port |= (n2o_stage2_pin_mask); }
56#define FUEL_PUMP_ON() ATOMIC() { *pump_pin_port |= (pump_pin_mask); currentStatus.fuelPumpOn = true; }
57#define FUEL_PUMP_OFF() ATOMIC() { *pump_pin_port &= ~(pump_pin_mask); currentStatus.fuelPumpOn = false; }
58
59//Note the below macros cannot use ATOMIC() as they are called from within ternary operators. The ATOMIC is instead placed around the ternary call below
60#define FAN_PIN_LOW() *fan_pin_port &= ~(fan_pin_mask)
61#define FAN_PIN_HIGH() *fan_pin_port |= (fan_pin_mask)
62#define AIRCON_PIN_LOW() *aircon_comp_pin_port &= ~(aircon_comp_pin_mask)
63#define AIRCON_PIN_HIGH() *aircon_comp_pin_port |= (aircon_comp_pin_mask)
64#define AIRCON_FAN_PIN_LOW() *aircon_fan_pin_port &= ~(aircon_fan_pin_mask)
65#define AIRCON_FAN_PIN_HIGH() *aircon_fan_pin_port |= (aircon_fan_pin_mask)
66
67#endif
68
69#define AIRCON_ON() ATOMIC() { ((((configPage15.airConCompPol)==1)) ? AIRCON_PIN_LOW() : AIRCON_PIN_HIGH()); currentStatus.airconCompressorOn = true; }
70#define AIRCON_OFF() ATOMIC() { ((((configPage15.airConCompPol)==1)) ? AIRCON_PIN_HIGH() : AIRCON_PIN_LOW()); currentStatus.airconCompressorOn = false; }
71#define AIRCON_FAN_ON() ATOMIC() { ((((configPage15.airConFanPol)==1)) ? AIRCON_FAN_PIN_LOW() : AIRCON_FAN_PIN_HIGH()); currentStatus.airconFanOn = true; }
72#define AIRCON_FAN_OFF() ATOMIC() { ((((configPage15.airConFanPol)==1)) ? AIRCON_FAN_PIN_HIGH() : AIRCON_FAN_PIN_LOW()); currentStatus.airconFanOn = false; }
73
74#define FAN_ON() ATOMIC() { ((configPage6.fanInv) ? FAN_PIN_LOW() : FAN_PIN_HIGH()); }
75#define FAN_OFF() ATOMIC() { ((configPage6.fanInv) ? FAN_PIN_HIGH() : FAN_PIN_LOW()); }
76
77#define READ_N2O_ARM_PIN() ((*n2o_arming_pin_port & n2o_arming_pin_mask) ? true : false)
78
79#define VVT1_PIN_ON() VVT1_PIN_HIGH();
80#define VVT1_PIN_OFF() VVT1_PIN_LOW();
81#define VVT2_PIN_ON() VVT2_PIN_HIGH();
82#define VVT2_PIN_OFF() VVT2_PIN_LOW();
83#define VVT_TIME_DELAY_MULTIPLIER 50
84
85#define WMI_TANK_IS_EMPTY() ((configPage10.wmiEmptyEnabled) ? ((configPage10.wmiEmptyPolarity) ? digitalRead(pinWMIEmpty) : !digitalRead(pinWMIEmpty)) : 1)
86
93
94#if defined(PWM_FAN_AVAILABLE)//PWM fan not available on Arduino MEGA
95extern uint16_t fan_pwm_max_count; //Used for variable PWM frequency
96void fanInterrupt(void);
97#endif
98
99extern uint16_t vvt_pwm_max_count; //Used for variable PWM frequency
100extern uint16_t boost_pwm_max_count; //Used for variable PWM frequency
101
102void boostInterrupt(void);
103void vvtInterrupt(void);
104
105#endif
pin_mask_t vvt1_pin_mask
Definition auxiliaries.cpp:46
port_register_t vvt2_pin_port
Definition auxiliaries.cpp:47
void initialiseAirCon(void)
Definition auxiliaries.cpp:92
void initialiseFan(void)
Definition auxiliaries.cpp:316
void vvtInterrupt(void)
Definition auxiliaries.cpp:1136
uint16_t vvt_pwm_max_count
Definition auxiliaries.cpp:75
void vvtControl(void)
Definition auxiliaries.cpp:780
void airConControl(void)
Definition auxiliaries.cpp:141
void boostControl(void)
Definition auxiliaries.cpp:683
void wmiControl(void)
Definition auxiliaries.cpp:1029
bool READ_AIRCON_REQUEST(void)
Definition auxiliaries.cpp:217
port_register_t vvt1_pin_port
Definition auxiliaries.cpp:45
void fanControl(void)
Definition auxiliaries.cpp:336
pin_mask_t fan_pin_mask
Definition auxiliaries.cpp:50
pin_mask_t vvt2_pin_mask
Definition auxiliaries.cpp:48
void initialiseAuxPWM(void)
Definition auxiliaries.cpp:449
void nitrousControl(void)
Definition auxiliaries.cpp:976
uint16_t boost_pwm_max_count
Definition auxiliaries.cpp:76
void boostByGear(void)
Definition auxiliaries.cpp:543
void boostInterrupt(void)
Definition auxiliaries.cpp:1110
void boostDisable(void)
Definition auxiliaries.cpp:1101
port_register_t fan_pin_port
Definition auxiliaries.cpp:49
decltype(type_detection_detail::return_type_of(&type_detection_detail::detectDigitalPinToBitMask)) pin_mask_t
The return type of a "call" to digitalPinToBitMask()
Definition port_pin.h:22
decltype(type_detection_detail::return_type_of(&type_detection_detail::detectPortRegisterType)) port_register_t
The return type of a "call" to portOutputRegister()
Definition port_pin.h:19