Speeduino
Loading...
Searching...
No Matches
scheduledIO.h
Go to the documentation of this file.
1#ifndef SCHEDULEDIO_H
2#define SCHEDULEDIO_H
3
4#include <Arduino.h>
5
6void openInjector1(void);
7void closeInjector1(void);
8
9void openInjector2(void);
10void closeInjector2(void);
11
12void openInjector3(void);
13void closeInjector3(void);
14
15void openInjector4(void);
16void closeInjector4(void);
17
18void openInjector5(void);
19void closeInjector5(void);
20
21void openInjector6(void);
22void closeInjector6(void);
23
24void openInjector7(void);
25void closeInjector7(void);
26
27void openInjector8(void);
28void closeInjector8(void);
29
30// These are for Semi-Sequential and 5 Cylinder injection
31void openInjector1and3(void);
32void closeInjector1and3(void);
33void openInjector2and4(void);
34void closeInjector2and4(void);
35void openInjector1and4(void);
36void closeInjector1and4(void);
37void openInjector2and3(void);
38void closeInjector2and3(void);
39
40void openInjector3and5(void);
41void closeInjector3and5(void);
42
43void openInjector2and5(void);
44void closeInjector2and5(void);
45void openInjector3and6(void);
46void closeInjector3and6(void);
47
48void openInjector1and5(void);
49void closeInjector1and5(void);
50void openInjector2and6(void);
51void closeInjector2and6(void);
52void openInjector3and7(void);
53void closeInjector3and7(void);
54void openInjector4and8(void);
55void closeInjector4and8(void);
56
57void beginCoil1Charge(void);
58void endCoil1Charge(void);
59
60void beginCoil2Charge(void);
61void endCoil2Charge(void);
62
63void beginCoil3Charge(void);
64void endCoil3Charge(void);
65
66void beginCoil4Charge(void);
67void endCoil4Charge(void);
68
69void beginCoil5Charge(void);
70void endCoil5Charge(void);
71
72void beginCoil6Charge(void);
73void endCoil6Charge(void);
74
75void beginCoil7Charge(void);
76void endCoil7Charge(void);
77
78void beginCoil8Charge(void);
79void endCoil8Charge(void);
80
81//The following functions are used specifically for the trailing coil on rotary engines. They are separate as they also control the switching of the trailing select pin
83void endTrailingCoilCharge1(void);
84void endTrailingCoilCharge2(void);
85
86//And the combined versions of the above for simplicity
87void beginCoil1and3Charge(void);
88void endCoil1and3Charge(void);
89void beginCoil2and4Charge(void);
90void endCoil2and4Charge(void);
91
92//For 6-cyl cop
93void beginCoil1and4Charge(void);
94void endCoil1and4Charge(void);
95void beginCoil2and5Charge(void);
96void endCoil2and5Charge(void);
97void beginCoil3and6Charge(void);
98void endCoil3and6Charge(void);
99
100//For 8-cyl cop
101void beginCoil1and5Charge(void);
102void endCoil1and5Charge(void);
103void beginCoil2and6Charge(void);
104void endCoil2and6Charge(void);
105void beginCoil3and7Charge(void);
106void endCoil3and7Charge(void);
107void beginCoil4and8Charge(void);
108void endCoil4and8Charge(void);
109
110void tachoOutputOn(void);
111void tachoOutputOff(void);
112
113//Macros are used to define how each injector control system functions. These are then called by the master openInjectx() function.
114//The DIRECT macros (ie individual pins) are defined below. Others should be defined in their relevant acc_x.h file
115#define openInjector1_DIRECT() { *inj1_pin_port |= (inj1_pin_mask); currentStatus.isInj1Open = true; }
116#define closeInjector1_DIRECT() { *inj1_pin_port &= ~(inj1_pin_mask); currentStatus.isInj1Open = false; }
117#define openInjector2_DIRECT() { *inj2_pin_port |= (inj2_pin_mask); currentStatus.isInj2Open = true; }
118#define closeInjector2_DIRECT() { *inj2_pin_port &= ~(inj2_pin_mask); currentStatus.isInj2Open = false; }
119#define openInjector3_DIRECT() { *inj3_pin_port |= (inj3_pin_mask); currentStatus.isInj3Open = true; }
120#define closeInjector3_DIRECT() { *inj3_pin_port &= ~(inj3_pin_mask); currentStatus.isInj3Open = false; }
121#define openInjector4_DIRECT() { *inj4_pin_port |= (inj4_pin_mask); currentStatus.isInj4Open = true; }
122#define closeInjector4_DIRECT() { *inj4_pin_port &= ~(inj4_pin_mask); currentStatus.isInj4Open = false; }
123#define openInjector5_DIRECT() { *inj5_pin_port |= (inj5_pin_mask); }
124#define closeInjector5_DIRECT() { *inj5_pin_port &= ~(inj5_pin_mask); }
125#define openInjector6_DIRECT() { *inj6_pin_port |= (inj6_pin_mask); }
126#define closeInjector6_DIRECT() { *inj6_pin_port &= ~(inj6_pin_mask); }
127#define openInjector7_DIRECT() { *inj7_pin_port |= (inj7_pin_mask); }
128#define closeInjector7_DIRECT() { *inj7_pin_port &= ~(inj7_pin_mask); }
129#define openInjector8_DIRECT() { *inj8_pin_port |= (inj8_pin_mask); }
130#define closeInjector8_DIRECT() { *inj8_pin_port &= ~(inj8_pin_mask); }
131
132#define coil1Low_DIRECT() (*ign1_pin_port &= ~(ign1_pin_mask))
133#define coil1High_DIRECT() (*ign1_pin_port |= (ign1_pin_mask))
134#define coil2Low_DIRECT() (*ign2_pin_port &= ~(ign2_pin_mask))
135#define coil2High_DIRECT() (*ign2_pin_port |= (ign2_pin_mask))
136#define coil3Low_DIRECT() (*ign3_pin_port &= ~(ign3_pin_mask))
137#define coil3High_DIRECT() (*ign3_pin_port |= (ign3_pin_mask))
138#define coil4Low_DIRECT() (*ign4_pin_port &= ~(ign4_pin_mask))
139#define coil4High_DIRECT() (*ign4_pin_port |= (ign4_pin_mask))
140#define coil5Low_DIRECT() (*ign5_pin_port &= ~(ign5_pin_mask))
141#define coil5High_DIRECT() (*ign5_pin_port |= (ign5_pin_mask))
142#define coil6Low_DIRECT() (*ign6_pin_port &= ~(ign6_pin_mask))
143#define coil6High_DIRECT() (*ign6_pin_port |= (ign6_pin_mask))
144#define coil7Low_DIRECT() (*ign7_pin_port &= ~(ign7_pin_mask))
145#define coil7High_DIRECT() (*ign7_pin_port |= (ign7_pin_mask))
146#define coil8Low_DIRECT() (*ign8_pin_port &= ~(ign8_pin_mask))
147#define coil8High_DIRECT() (*ign8_pin_port |= (ign8_pin_mask))
148
149//Set the value of the coil pins to the coilHIGH or coilLOW state
150#define coil1Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil1Low_DIRECT() : coil1High_DIRECT())
151#define coil1StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil1High_DIRECT() : coil1Low_DIRECT())
152#define coil2Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil2Low_DIRECT() : coil2High_DIRECT())
153#define coil2StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil2High_DIRECT() : coil2Low_DIRECT())
154#define coil3Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil3Low_DIRECT() : coil3High_DIRECT())
155#define coil3StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil3High_DIRECT() : coil3Low_DIRECT())
156#define coil4Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil4Low_DIRECT() : coil4High_DIRECT())
157#define coil4StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil4High_DIRECT() : coil4Low_DIRECT())
158#define coil5Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil5Low_DIRECT() : coil5High_DIRECT())
159#define coil5StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil5High_DIRECT() : coil5Low_DIRECT())
160#define coil6Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil6Low_DIRECT() : coil6High_DIRECT())
161#define coil6StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil6High_DIRECT() : coil6Low_DIRECT())
162#define coil7Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil7Low_DIRECT() : coil7High_DIRECT())
163#define coil7StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil7High_DIRECT() : coil7Low_DIRECT())
164#define coil8Charging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil8Low_DIRECT() : coil8High_DIRECT())
165#define coil8StopCharging_DIRECT() (configPage4.IgInv == GOING_HIGH ? coil8High_DIRECT() : coil8Low_DIRECT())
166
167#define coil1Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil1Low_MC33810(); } else { coil1High_MC33810(); }
168#define coil1StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil1High_MC33810(); } else { coil1Low_MC33810(); }
169#define coil2Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil2Low_MC33810(); } else { coil2High_MC33810(); }
170#define coil2StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil2High_MC33810(); } else { coil2Low_MC33810(); }
171#define coil3Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil3Low_MC33810(); } else { coil3High_MC33810(); }
172#define coil3StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil3High_MC33810(); } else { coil3Low_MC33810(); }
173#define coil4Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil4Low_MC33810(); } else { coil4High_MC33810(); }
174#define coil4StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil4High_MC33810(); } else { coil4Low_MC33810(); }
175#define coil5Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil5Low_MC33810(); } else { coil5High_MC33810(); }
176#define coil5StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil5High_MC33810(); } else { coil5Low_MC33810(); }
177#define coil6Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil6Low_MC33810(); } else { coil6High_MC33810(); }
178#define coil6StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil6High_MC33810(); } else { coil6Low_MC33810(); }
179#define coil7Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil7Low_MC33810(); } else { coil7High_MC33810(); }
180#define coil7StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil7High_MC33810(); } else { coil7Low_MC33810(); }
181#define coil8Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil8Low_MC33810(); } else { coil8High_MC33810(); }
182#define coil8StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil8High_MC33810(); } else { coil8Low_MC33810(); }
183
184void nullCallback(void);
185
187
188#endif
static uint32_t rshift(uint32_t a)
Bitwise right shift - generic, unoptimized, case.
Definition bit_shifts.h:348
void closeInjector3(void)
Definition scheduledIO.cpp:17
void endCoil4and8Charge(void)
Definition scheduledIO.cpp:109
void closeInjector2and4(void)
Definition scheduledIO.cpp:34
void closeInjector8(void)
Definition scheduledIO.cpp:27
void beginCoil1and3Charge(void)
Definition scheduledIO.cpp:88
void beginCoil3and6Charge(void)
Definition scheduledIO.cpp:98
void endCoil1Charge(void)
Definition scheduledIO.cpp:59
void endCoil3Charge(void)
Definition scheduledIO.cpp:65
void beginCoil2and6Charge(void)
Definition scheduledIO.cpp:104
void openInjector4(void)
Definition scheduledIO.cpp:18
void closeInjector2and5(void)
Definition scheduledIO.cpp:45
void endTrailingCoilCharge2(void)
Definition scheduledIO.cpp:85
void openInjector3and7(void)
Definition scheduledIO.cpp:53
void beginCoil2Charge(void)
Definition scheduledIO.cpp:61
void closeInjector4and8(void)
Definition scheduledIO.cpp:56
void beginCoil5Charge(void)
Definition scheduledIO.cpp:70
void closeInjector3and6(void)
Definition scheduledIO.cpp:47
void openInjector3and5(void)
Definition scheduledIO.cpp:41
void beginCoil2and4Charge(void)
Definition scheduledIO.cpp:90
void openInjector2and4(void)
Definition scheduledIO.cpp:33
void endCoil6Charge(void)
Definition scheduledIO.cpp:74
void endCoil7Charge(void)
Definition scheduledIO.cpp:77
void openInjector2and5(void)
Definition scheduledIO.cpp:44
void openInjector5(void)
Definition scheduledIO.cpp:20
void beginTrailingCoilCharge(void)
Definition scheduledIO.cpp:83
void endTrailingCoilCharge1(void)
Definition scheduledIO.cpp:84
void closeInjector3and7(void)
Definition scheduledIO.cpp:54
void openInjector1and5(void)
Definition scheduledIO.cpp:49
void endCoil1and4Charge(void)
Definition scheduledIO.cpp:95
void beginCoil1and5Charge(void)
Definition scheduledIO.cpp:102
void tachoOutputOn(void)
Definition scheduledIO.cpp:111
void closeInjector3and5(void)
Definition scheduledIO.cpp:42
void openInjector3(void)
Definition scheduledIO.cpp:16
void closeInjector1(void)
Definition scheduledIO.cpp:13
void endCoil5Charge(void)
Definition scheduledIO.cpp:71
void tachoOutputOff(void)
Definition scheduledIO.cpp:112
void closeInjector1and3(void)
Definition scheduledIO.cpp:32
void endCoil1and3Charge(void)
Definition scheduledIO.cpp:89
void beginCoil3and7Charge(void)
Definition scheduledIO.cpp:106
void beginCoil1and4Charge(void)
Definition scheduledIO.cpp:94
void openInjector8(void)
Definition scheduledIO.cpp:26
void endCoil2and5Charge(void)
Definition scheduledIO.cpp:97
void closeInjector4(void)
Definition scheduledIO.cpp:19
void closeInjector6(void)
Definition scheduledIO.cpp:23
void nullCallback(void)
Definition scheduledIO.cpp:114
void endCoil2and6Charge(void)
Definition scheduledIO.cpp:105
void beginCoil4Charge(void)
Definition scheduledIO.cpp:67
void openInjector6(void)
Definition scheduledIO.cpp:22
void endCoil3and7Charge(void)
Definition scheduledIO.cpp:107
void endCoil2Charge(void)
Definition scheduledIO.cpp:62
void beginCoil7Charge(void)
Definition scheduledIO.cpp:76
void closeInjector5(void)
Definition scheduledIO.cpp:21
void openInjector2and3(void)
Definition scheduledIO.cpp:38
void closeInjector2and3(void)
Definition scheduledIO.cpp:39
void(* voidVoidCallback)(void)
Definition scheduledIO.h:186
void openInjector1and3(void)
Definition scheduledIO.cpp:31
void closeInjector1and4(void)
Definition scheduledIO.cpp:37
void beginCoil4and8Charge(void)
Definition scheduledIO.cpp:108
void endCoil1and5Charge(void)
Definition scheduledIO.cpp:103
void beginCoil1Charge(void)
Definition scheduledIO.cpp:58
void closeInjector2(void)
Definition scheduledIO.cpp:15
void beginCoil3Charge(void)
Definition scheduledIO.cpp:64
void openInjector1and4(void)
Definition scheduledIO.cpp:36
void beginCoil6Charge(void)
Definition scheduledIO.cpp:73
void beginCoil2and5Charge(void)
Definition scheduledIO.cpp:96
void closeInjector1and5(void)
Definition scheduledIO.cpp:50
void endCoil3and6Charge(void)
Definition scheduledIO.cpp:99
void openInjector4and8(void)
Definition scheduledIO.cpp:55
void openInjector3and6(void)
Definition scheduledIO.cpp:46
void beginCoil8Charge(void)
Definition scheduledIO.cpp:79
void endCoil8Charge(void)
Definition scheduledIO.cpp:80
void closeInjector7(void)
Definition scheduledIO.cpp:25
void openInjector1(void)
Definition scheduledIO.cpp:12
void closeInjector2and6(void)
Definition scheduledIO.cpp:52
void openInjector7(void)
Definition scheduledIO.cpp:24
void endCoil2and4Charge(void)
Definition scheduledIO.cpp:91
void openInjector2and6(void)
Definition scheduledIO.cpp:51
void openInjector2(void)
Definition scheduledIO.cpp:14
void endCoil4Charge(void)
Definition scheduledIO.cpp:68