diff --git a/cores/esp8266/core_esp8266_wiring_digital.cpp b/cores/esp8266/core_esp8266_wiring_digital.cpp index 5ed0a40ab..47eeebf86 100644 --- a/cores/esp8266/core_esp8266_wiring_digital.cpp +++ b/cores/esp8266/core_esp8266_wiring_digital.cpp @@ -30,7 +30,7 @@ extern "C" { -uint8_t esp8266_gpioToFn[16] = {0x34, 0x18, 0x38, 0x14, 0x3C, 0x40, 0x1C, 0x20, 0x24, 0x28, 0x2C, 0x30, 0x04, 0x08, 0x0C, 0x10}; +volatile uint32_t* const esp8266_gpioToFn[16] PROGMEM = { &GPF0, &GPF1, &GPF2, &GPF3, &GPF4, &GPF5, &GPF6, &GPF7, &GPF8, &GPF9, &GPF10, &GPF11, &GPF12, &GPF13, &GPF14, &GPF15 }; extern void __pinMode(uint8_t pin, uint8_t mode) { if(pin < 16){ diff --git a/cores/esp8266/esp8266_peri.h b/cores/esp8266/esp8266_peri.h index 15a596aa6..4d9b8406f 100644 --- a/cores/esp8266/esp8266_peri.h +++ b/cores/esp8266/esp8266_peri.h @@ -102,8 +102,8 @@ #define GPF14 ESP8266_REG(0x80C) #define GPF15 ESP8266_REG(0x810) -extern uint8_t esp8266_gpioToFn[16]; -#define GPF(p) ESP8266_REG(0x800 + esp8266_gpioToFn[(p & 0xF)]) +extern volatile uint32_t* const esp8266_gpioToFn[16]; +#define GPF(p) (*esp8266_gpioToFn[(p & 0xF)]) //GPIO (0-15) PIN Function Bits #define GPFSOE 0 //Sleep OE