You can now get and set the state of all CS pins at once.
This commit is contained in:
parent
9f442259e9
commit
ef47c771ef
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
class SPIMaster {
|
class SPIMaster {
|
||||||
public:
|
public:
|
||||||
|
static uint8_t state;
|
||||||
|
|
||||||
static void init() {
|
static void init() {
|
||||||
PIN_SD_CS_SETUP();
|
PIN_SD_CS_SETUP();
|
||||||
PIN_VS1053_XCS_SETUP();
|
PIN_VS1053_XCS_SETUP();
|
||||||
@ -16,28 +18,57 @@ public:
|
|||||||
|
|
||||||
static void select_sd(bool enabled=true) {
|
static void select_sd(bool enabled=true) {
|
||||||
PIN_SD_CS(enabled ? LOW : HIGH);
|
PIN_SD_CS(enabled ? LOW : HIGH);
|
||||||
|
if (enabled) {
|
||||||
|
state |= 1;
|
||||||
|
} else {
|
||||||
|
state &= ~1;
|
||||||
|
}
|
||||||
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_vs1053_xcs(bool enabled=true) {
|
static void select_vs1053_xcs(bool enabled=true) {
|
||||||
PIN_VS1053_XCS(enabled ? LOW : HIGH);
|
PIN_VS1053_XCS(enabled ? LOW : HIGH);
|
||||||
|
if (enabled) {
|
||||||
|
state |= 2;
|
||||||
|
} else {
|
||||||
|
state &= ~2;
|
||||||
|
}
|
||||||
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_vs1053_xdcs(bool enabled=true) {
|
static void select_vs1053_xdcs(bool enabled=true) {
|
||||||
PIN_VS1053_XDCS(enabled ? LOW : HIGH);
|
PIN_VS1053_XDCS(enabled ? LOW : HIGH);
|
||||||
|
if (enabled) {
|
||||||
|
state |= 4;
|
||||||
|
} else {
|
||||||
|
state &= ~4;
|
||||||
|
}
|
||||||
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_rc522(bool enabled=true) {
|
static void select_rc522(bool enabled=true) {
|
||||||
PIN_RC522_CS(enabled ? LOW : HIGH);
|
PIN_RC522_CS(enabled ? LOW : HIGH);
|
||||||
|
if (enabled) {
|
||||||
|
state |= 8;
|
||||||
|
} else {
|
||||||
|
state &= ~8;
|
||||||
|
}
|
||||||
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
delayMicroseconds(MCP_SPI_SETTING_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_state(uint8_t s) {
|
||||||
|
disable();
|
||||||
|
if (s & 1) select_sd();
|
||||||
|
if (s & 2) select_vs1053_xcs();
|
||||||
|
if (s & 4) select_vs1053_xdcs();
|
||||||
|
if (s & 8) select_rc522();
|
||||||
|
}
|
||||||
|
|
||||||
static void disable() {
|
static void disable() {
|
||||||
PIN_SD_CS(HIGH);
|
PIN_SD_CS(HIGH);
|
||||||
PIN_VS1053_XCS(HIGH);
|
PIN_VS1053_XCS(HIGH);
|
||||||
PIN_VS1053_XDCS(HIGH);
|
PIN_VS1053_XDCS(HIGH);
|
||||||
PIN_RC522_CS(HIGH);
|
PIN_RC522_CS(HIGH);
|
||||||
|
state = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user