From 87fc226213689773bfc28e7dc9b19f4de9dc3af1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Wed, 17 Dec 2025 01:10:05 +0100 Subject: [PATCH] more segment data for PSRAM boards --- wled00/FX.h | 6 +++++- wled00/FX_fcn.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index b63b11a9..d0f3d403 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -86,7 +86,11 @@ extern BusManager busses; // same as wled.h #if defined(ARDUINO_ARCH_ESP32S2) #define MAX_SEGMENT_DATA 24576 #else - #define MAX_SEGMENT_DATA 32767 + #if defined(BOARD_HAS_PSRAM) + #define MAX_SEGMENT_DATA 65534 // 64KB on PSRAM boards + #else + #define MAX_SEGMENT_DATA 32767 // 32KB on non-PSRAM boards + #endif #endif #endif #endif diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 47dbf4bd..a7db2444 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -232,7 +232,11 @@ bool Segment::allocateData(size_t len, bool allowOverdraft) { // WLEDMM allowOv if (len == 0) return false; // nothing to do if (Segment::getUsedSegmentData() + len > MAX_SEGMENT_DATA) { if (!allowOverdraft || (Segment::getUsedSegmentData() + len > MAX_SEGMENT_OVERDATA)) { // WLEDMM 50% overdraft allowed temporarily - //USER_PRINTF("Segment::allocateData: Segment data quota exceeded! used:%u request:%u max:%d\n", Segment::getUsedSegmentData(), len, MAX_SEGMENT_DATA); + static unsigned lastMsgTime = 0; + if (millis() - lastMsgTime > 5000) { + USER_PRINTF("Segment::allocateData: Segment data quota exceeded! used:%u request:%u max:%d\n", Segment::getUsedSegmentData(), len, MAX_SEGMENT_DATA); + lastMsgTime = millis(); + } if (len > 0) errorFlag = ERR_LOW_SEG_MEM; // WLEDMM raise errorflag return false; //not enough memory }