forked from Makuna/NeoPixelBus
Correct State Clearing (#511)
This commit is contained in:
@@ -207,38 +207,47 @@ esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t d
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void i2sSetPins(uint8_t bus_num, int8_t out, bool invert) {
|
void i2sSetPins(uint8_t bus_num, int8_t out, bool invert)
|
||||||
if (bus_num >= I2S_NUM_MAX) {
|
{
|
||||||
|
if (bus_num >= I2S_NUM_MAX)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out >= 0) {
|
int8_t outOld = I2S[bus_num].out;
|
||||||
if (I2S[bus_num].out != out) {
|
|
||||||
if (I2S[bus_num].out >= 0) {
|
|
||||||
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false);
|
|
||||||
}
|
|
||||||
I2S[bus_num].out = out;
|
|
||||||
pinMode(out, OUTPUT);
|
|
||||||
|
|
||||||
int i2sSignal;
|
// disable old pin
|
||||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
if (outOld >= 0)
|
||||||
// (I2S_NUM_MAX == 2)
|
{
|
||||||
if (bus_num == 1) {
|
gpio_matrix_out(outOld, 0x100, false, false);
|
||||||
i2sSignal = I2S1O_DATA_OUT23_IDX;
|
pinMode(outOld, INPUT);
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
i2sSignal = I2S0O_DATA_OUT23_IDX;
|
|
||||||
}
|
|
||||||
|
|
||||||
gpio_matrix_out(out, i2sSignal, invert, false);
|
|
||||||
}
|
|
||||||
} else if (I2S[bus_num].out >= 0) {
|
|
||||||
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false);
|
|
||||||
I2S[bus_num].out = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (out >= 0)
|
||||||
|
{
|
||||||
|
I2S[bus_num].out = out;
|
||||||
|
|
||||||
|
pinMode(out, OUTPUT);
|
||||||
|
|
||||||
|
int i2sSignal;
|
||||||
|
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||||
|
// (I2S_NUM_MAX == 2)
|
||||||
|
if (bus_num == 1)
|
||||||
|
{
|
||||||
|
i2sSignal = I2S1O_DATA_OUT23_IDX;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
i2sSignal = I2S0O_DATA_OUT23_IDX;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpio_matrix_out(out, i2sSignal, invert, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
I2S[bus_num].out = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool i2sWriteDone(uint8_t bus_num) {
|
bool i2sWriteDone(uint8_t bus_num) {
|
||||||
|
@@ -169,8 +169,7 @@ public:
|
|||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
gpio_matrix_out(_pin, 0x100, false, false);
|
i2sSetPins(_bus.I2sBusNumber, -1, false);
|
||||||
pinMode(_pin, INPUT);
|
|
||||||
|
|
||||||
free(_data);
|
free(_data);
|
||||||
free(_i2sBuffer);
|
free(_i2sBuffer);
|
||||||
|
Reference in New Issue
Block a user