Speeduino
Loading...
Searching...
No Matches
acc_mc33810.h
Go to the documentation of this file.
1#ifndef MC33810_H
2#define MC33810_H
3
4#include <SPI.h>
5#include "board_definition.h"
6
7static const uint8_t MC33810_ONOFF_CMD = 0x30; //48 in decimal
8static volatile uint8_t mc33810_1_requestedState; //Current binary state of the 1st ICs IGN and INJ values
9static volatile uint8_t mc33810_2_requestedState; //Current binary state of the 2nd ICs IGN and INJ values
10static volatile uint8_t mc33810_1_returnState; //Current binary state of the 1st ICs IGN and INJ values
11static volatile uint8_t mc33810_2_returnState; //Current binary state of the 2nd ICs IGN and INJ values
12
13void initMC33810(void);
14
15void setMC33810_1_ACTIVE(void);
16void setMC33810_1_INACTIVE(void);
17void setMC33810_2_ACTIVE(void);
18void setMC33810_2_INACTIVE(void);
19
20//These are default values for which injector is attached to which output on the IC.
21//They may (Probably will) be changed during init by the board specific config in init.ino
22extern uint8_t MC33810_BIT_INJ1;
23extern uint8_t MC33810_BIT_INJ2;
24extern uint8_t MC33810_BIT_INJ3;
25extern uint8_t MC33810_BIT_INJ4;
26extern uint8_t MC33810_BIT_INJ5;
27extern uint8_t MC33810_BIT_INJ6;
28extern uint8_t MC33810_BIT_INJ7;
29extern uint8_t MC33810_BIT_INJ8;
30
31extern uint8_t MC33810_BIT_IGN1;
32extern uint8_t MC33810_BIT_IGN2;
33extern uint8_t MC33810_BIT_IGN3;
34extern uint8_t MC33810_BIT_IGN4;
35extern uint8_t MC33810_BIT_IGN5;
36extern uint8_t MC33810_BIT_IGN6;
37extern uint8_t MC33810_BIT_IGN7;
38extern uint8_t MC33810_BIT_IGN8;
39
40#define openInjector1_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_INJ1); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
41#define openInjector2_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_INJ2); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
42#define openInjector3_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_INJ3); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
43#define openInjector4_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_INJ4); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
44#define openInjector5_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_INJ5); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
45#define openInjector6_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_INJ6); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
46#define openInjector7_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_INJ7); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
47#define openInjector8_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_INJ8); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
48
49#define closeInjector1_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_INJ1); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
50#define closeInjector2_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_INJ2); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
51#define closeInjector3_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_INJ3); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
52#define closeInjector4_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_INJ4); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
53#define closeInjector5_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_INJ5); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
54#define closeInjector6_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_INJ6); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
55#define closeInjector7_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_INJ7); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
56#define closeInjector8_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_INJ8); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
57
58#define coil1High_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_IGN1); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
59#define coil2High_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_IGN2); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
60#define coil3High_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_IGN3); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
61#define coil4High_MC33810() setMC33810_1_ACTIVE(); BIT_SET(mc33810_1_requestedState, MC33810_BIT_IGN4); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
62#define coil5High_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_IGN5); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
63#define coil6High_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_IGN6); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
64#define coil7High_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_IGN7); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
65#define coil8High_MC33810() setMC33810_2_ACTIVE(); BIT_SET(mc33810_2_requestedState, MC33810_BIT_IGN8); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
66
67#define coil1Low_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_IGN1); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
68#define coil2Low_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_IGN2); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
69#define coil3Low_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_IGN3); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
70#define coil4Low_MC33810() setMC33810_1_ACTIVE(); BIT_CLEAR(mc33810_1_requestedState, MC33810_BIT_IGN4); mc33810_1_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_1_requestedState)); setMC33810_1_INACTIVE();
71#define coil5Low_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_IGN5); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
72#define coil6Low_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_IGN6); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
73#define coil7Low_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_IGN7); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
74#define coil8Low_MC33810() setMC33810_2_ACTIVE(); BIT_CLEAR(mc33810_2_requestedState, MC33810_BIT_IGN8); mc33810_2_returnState = SPI.transfer16(word(MC33810_ONOFF_CMD, mc33810_2_requestedState)); setMC33810_2_INACTIVE();
75
76#define coil1Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil1Low_MC33810(); } else { coil1High_MC33810(); }
77#define coil1StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil1High_MC33810(); } else { coil1Low_MC33810(); }
78#define coil2Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil2Low_MC33810(); } else { coil2High_MC33810(); }
79#define coil2StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil2High_MC33810(); } else { coil2Low_MC33810(); }
80#define coil3Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil3Low_MC33810(); } else { coil3High_MC33810(); }
81#define coil3StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil3High_MC33810(); } else { coil3Low_MC33810(); }
82#define coil4Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil4Low_MC33810(); } else { coil4High_MC33810(); }
83#define coil4StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil4High_MC33810(); } else { coil4Low_MC33810(); }
84#define coil5Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil5Low_MC33810(); } else { coil5High_MC33810(); }
85#define coil5StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil5High_MC33810(); } else { coil5Low_MC33810(); }
86#define coil6Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil6Low_MC33810(); } else { coil6High_MC33810(); }
87#define coil6StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil6High_MC33810(); } else { coil6Low_MC33810(); }
88#define coil7Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil7Low_MC33810(); } else { coil7High_MC33810(); }
89#define coil7StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil7High_MC33810(); } else { coil7Low_MC33810(); }
90#define coil8Charging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil8Low_MC33810(); } else { coil8High_MC33810(); }
91#define coil8StopCharging_MC33810() if(configPage4.IgInv == GOING_HIGH) { coil8High_MC33810(); } else { coil8Low_MC33810(); }
92
93#endif
static volatile uint8_t mc33810_1_returnState
Definition acc_mc33810.h:10
void setMC33810_2_ACTIVE(void)
Definition acc_mc33810.cpp:29
void initMC33810(void)
Definition acc_mc33810.cpp:32
static const uint8_t MC33810_ONOFF_CMD
Definition acc_mc33810.h:7
uint8_t MC33810_BIT_IGN6
Definition acc_mc33810.cpp:20
uint8_t MC33810_BIT_IGN1
Definition acc_mc33810.cpp:15
void setMC33810_1_INACTIVE(void)
Definition acc_mc33810.cpp:28
uint8_t MC33810_BIT_INJ3
Definition acc_mc33810.cpp:8
uint8_t MC33810_BIT_INJ4
Definition acc_mc33810.cpp:9
uint8_t MC33810_BIT_IGN3
Definition acc_mc33810.cpp:17
uint8_t MC33810_BIT_INJ8
Definition acc_mc33810.cpp:13
uint8_t MC33810_BIT_INJ2
Definition acc_mc33810.cpp:7
uint8_t MC33810_BIT_IGN8
Definition acc_mc33810.cpp:22
uint8_t MC33810_BIT_INJ7
Definition acc_mc33810.cpp:12
uint8_t MC33810_BIT_INJ5
Definition acc_mc33810.cpp:10
void setMC33810_2_INACTIVE(void)
Definition acc_mc33810.cpp:30
uint8_t MC33810_BIT_IGN5
Definition acc_mc33810.cpp:19
uint8_t MC33810_BIT_IGN2
Definition acc_mc33810.cpp:16
uint8_t MC33810_BIT_INJ1
Definition acc_mc33810.cpp:6
uint8_t MC33810_BIT_IGN7
Definition acc_mc33810.cpp:21
void setMC33810_1_ACTIVE(void)
Definition acc_mc33810.cpp:27
static volatile uint8_t mc33810_1_requestedState
Definition acc_mc33810.h:8
static volatile uint8_t mc33810_2_returnState
Definition acc_mc33810.h:11
uint8_t MC33810_BIT_IGN4
Definition acc_mc33810.cpp:18
static volatile uint8_t mc33810_2_requestedState
Definition acc_mc33810.h:9
uint8_t MC33810_BIT_INJ6
Definition acc_mc33810.cpp:11
Inclusion of board specific header files and board related definitions.