diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index a44fc271..14afd344 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -157,7 +157,7 @@ bool Segment::allocateData(size_t len) { deallocateData(); if (Segment::getUsedSegmentData() + len > MAX_SEGMENT_DATA) return false; //not enough memory // if possible use SPI RAM on ESP32 - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM) if (psramFound()) data = (byte*) ps_malloc(len); else @@ -204,7 +204,7 @@ void Segment::setUpLeds() { leds = &Segment::_globalLeds[start]; #endif else if (!leds) { - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM) if (psramFound()) leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); else @@ -1443,7 +1443,7 @@ void WS2812FX::finalizeInit(void) } if (useLedsArray) { size_t arrSize = sizeof(CRGB) * getLengthTotal(); - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM) if (psramFound()) Segment::_globalLeds = (CRGB*) ps_malloc(arrSize); else diff --git a/wled00/const.h b/wled00/const.h index 7f361d07..eb21c959 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -422,7 +422,7 @@ //this is merely a default now and can be changed at runtime #ifndef LEDPIN -#if defined(ESP8266) || (defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM)) || defined(CONFIG_IDF_TARGET_ESP32C3) +#if defined(ESP8266) || (defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM)) || defined(CONFIG_IDF_TARGET_ESP32C3) #define LEDPIN 2 // GPIO2 (D4) on Wemod D1 mini compatible boards #else #define LEDPIN 16 // aligns with GPIO2 (D4) on Wemos D1 mini32 compatible boards diff --git a/wled00/json.cpp b/wled00/json.cpp index ea6856d6..91f9d8f9 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -914,7 +914,7 @@ void serializeInfo(JsonObject root) #if defined(ARDUINO_ARCH_ESP32) root[F("minfreeheap")] = ESP.getMinFreeHeap(); #endif - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) && defined(BOARD_HAS_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) if (psramFound()) { root[F("tpram")] = ESP.getPsramSize(); //WLEDMM root[F("psram")] = ESP.getFreePsram(); diff --git a/wled00/presets.cpp b/wled00/presets.cpp index 71b891c1..abcc4e79 100644 --- a/wled00/presets.cpp +++ b/wled00/presets.cpp @@ -52,7 +52,7 @@ static void doSaveState() { size_t len = measureJson(*fileDoc) + 1; DEBUG_PRINTLN(len); // if possible use SPI RAM on ESP32 - #ifdef WLED_USE_PSRAM + #if defined(BOARD_HAS_PSRAM) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) if (psramFound()) tmpRAMbuffer = (char*) ps_malloc(len); else diff --git a/wled00/wled.cpp b/wled00/wled.cpp index a888c838..45dba8b6 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -254,7 +254,7 @@ void WLED::loop() #ifdef ARDUINO_ARCH_ESP32 DEBUG_PRINTF("%s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM #endif - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) if (psramFound()) { //DEBUG_PRINT(F("Total PSRAM: ")); DEBUG_PRINT(ESP.getPsramSize()/1024); DEBUG_PRINTLN("kB"); DEBUG_PRINT(F("Free PSRAM: ")); DEBUG_PRINT(ESP.getFreePsram()/1024); DEBUG_PRINTLN("kB"); @@ -468,7 +468,8 @@ void WLED::setup() DEBUG_PRINTF("%s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM #endif - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) + psramInit(); if (psramFound()) { #if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) // GPIO16/GPIO17 reserved for SPI RAM @@ -485,7 +486,7 @@ void WLED::setup() DEBUG_PRINTLN(F("No PSRAM found.")); #endif #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && !defined(WLED_USE_PSRAM) - DEBUG_PRINTLN(F("PSRAM not used.")); + DEBUG_PRINTLN(F("PSRAM not used for LEDs.")); #endif //DEBUG_PRINT(F("LEDs inited. heap usage ~")); diff --git a/wled00/wled.h b/wled00/wled.h index 2dd23031..da95c314 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -146,7 +146,7 @@ // The following is a construct to enable code to compile without it. // There is a code thet will still not use PSRAM though: // AsyncJsonResponse is a derived class that implements DynamicJsonDocument (AsyncJson-v6.h) -#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) +#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) struct PSRAM_Allocator { void* allocate(size_t size) { if (psramFound()) return ps_malloc(size); // use PSRAM if it exists diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 3f352324..18403c3a 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -227,7 +227,7 @@ void appendGPIOinfo() { //Note: Using pin 3 (RX) disables Adalight / Serial JSON - #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32C3) if (psramFound()) oappend(SET_F(",16,17")); // GPIO16 & GPIO17 reserved for SPI RAM on ESP32 (not on S2, S3 or C3) #elif defined(CONFIG_IDF_TARGET_ESP32S3)