pinmanager bugfix for -S2/-S3
pinmanager ran out out array bounds on -S2 and -S3, as these MCUs have more than 40 GPIO. As consequence, memory was overwriten, and pins > 39 were reported as "allocated" but not "owned". Thisfixes the problem, by extending internal arrays so that up to 50 pins can be managed.
This commit is contained in:
parent
643f300792
commit
33f4e8cf73
@ -69,9 +69,9 @@ class PinManagerClass {
|
|||||||
uint8_t pinAlloc[3] = {0x00, 0x00, 0x00}; //24bit, 1 bit per pin, we use first 17bits
|
uint8_t pinAlloc[3] = {0x00, 0x00, 0x00}; //24bit, 1 bit per pin, we use first 17bits
|
||||||
PinOwner ownerTag[17] = { PinOwner::None };
|
PinOwner ownerTag[17] = { PinOwner::None };
|
||||||
#else
|
#else
|
||||||
uint8_t pinAlloc[5] = {0x00, 0x00, 0x00, 0x00, 0x00}; //40bit, 1 bit per pin, we use all bits
|
uint8_t pinAlloc[7] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // 56bit, 1 bit per pin, we use 50 bits on ESP32-S3
|
||||||
uint8_t ledcAlloc[2] = {0x00, 0x00}; //16 LEDC channels
|
uint8_t ledcAlloc[2] = {0x00, 0x00}; //16 LEDC channels
|
||||||
PinOwner ownerTag[40] = { PinOwner::None };
|
PinOwner ownerTag[50] = { PinOwner::None }; // new MCU's have up to 50 GPIO
|
||||||
#endif
|
#endif
|
||||||
struct {
|
struct {
|
||||||
uint8_t i2cAllocCount : 4; // allow multiple allocation of I2C bus pins but keep track of allocations
|
uint8_t i2cAllocCount : 4; // allow multiple allocation of I2C bus pins but keep track of allocations
|
||||||
|
Loading…
Reference in New Issue
Block a user