You can now get and set the state of all CS pins at once.

This commit is contained in:
Fabian Schlenz 2019-11-17 14:24:01 +01:00
parent 9f442259e9
commit ef47c771ef
1 changed files with 32 additions and 1 deletions

View File

@ -6,6 +6,8 @@
class SPIMaster {
public:
static uint8_t state;
static void init() {
PIN_SD_CS_SETUP();
PIN_VS1053_XCS_SETUP();
@ -16,28 +18,57 @@ public:
static void select_sd(bool enabled=true) {
PIN_SD_CS(enabled ? LOW : HIGH);
if (enabled) {
state |= 1;
} else {
state &= ~1;
}
delayMicroseconds(MCP_SPI_SETTING_DELAY);
}
static void select_vs1053_xcs(bool enabled=true) {
PIN_VS1053_XCS(enabled ? LOW : HIGH);
if (enabled) {
state |= 2;
} else {
state &= ~2;
}
delayMicroseconds(MCP_SPI_SETTING_DELAY);
}
static void select_vs1053_xdcs(bool enabled=true) {
PIN_VS1053_XDCS(enabled ? LOW : HIGH);
if (enabled) {
state |= 4;
} else {
state &= ~4;
}
delayMicroseconds(MCP_SPI_SETTING_DELAY);
}
static void select_rc522(bool enabled=true) {
PIN_RC522_CS(enabled ? LOW : HIGH);
if (enabled) {
state |= 8;
} else {
state &= ~8;
}
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() {
PIN_SD_CS(HIGH);
PIN_VS1053_XCS(HIGH);
PIN_VS1053_XDCS(HIGH);
PIN_RC522_CS(HIGH);
state = 0;
}
};
};