Commit Graph

97 Commits

Author SHA1 Message Date
Frank
d66720ade8 HUB75 128x64 (untested)
128x64 panels are normally "64x64 with chain length 2". But some newer ones appear to be native "128x64"
2024-10-14 13:19:24 +02:00
Frank
3fa5d0c5ba HUB75 on S3: workaround for not working runtime reconfiguration
* instead of deleting the driver object, we keep a "secret" reference and re-use it
* prevent having more than one HUB75 object
2024-10-14 13:05:27 +02:00
Frank
d21b9b0687 typo
fixo
2024-10-12 23:05:08 +02:00
Frank
06590890bd HUB75: remove driver double-buffer support (obsolete)
We use our own memory-optimised buffer rather than the driver's own double-buffer.
2024-10-12 23:00:35 +02:00
Frank
54467473f8 HUB75: fix for crash on -S3
* use a fork of the HUB75 with fixed Bus_Parallel16::release()
* prevent accessing an invalid display object
2024-10-11 21:19:22 +02:00
Frank
1b7cae0c59 comment added 2024-10-06 20:12:56 +02:00
Frank
1e5b246871 small fixes
very minor changes:
* HUB75 bus don't leave _len uninitialized, handle display == nullptr before using display members
* __attribute__((pure)) was in the wrong location
* wled00.ino: made lps (loops-per-second) calculation a bit more accurate
2024-10-03 00:19:18 +02:00
Frank
59ca792c9d HUB75: trade bit depth against memory needs
gradually reduce bitdepts on esp32
2024-09-28 02:45:16 +02:00
Frank
2aa0d47036 adding getPixelColorRestored()
similar to getPixelColor, but returns the original pixel without brightness adjustments.

* getPixelColorRestored is used by segment::sPC and segment::gPC
* getPixelColor is still used by ABL (auto brightness limiter)
2024-09-28 02:43:12 +02:00
Frank
8338b58b88 HUB75 memory usage info on serial 2024-09-28 02:15:41 +02:00
Frank
bc11ec4b4e HUB75 bugfixes
* exclude HUB75 from ABL (bad macro in const.h; "pwr" item in json.cpp)
* show HUB75 as "physical" (LEDs preferences)
* minor corrections
2024-09-26 17:33:40 +02:00
Frank
e100a2d69a switch off brightness reduction
this was added due to a recommendation from MrF (HUB75)  but it seems to work without, too.
2024-09-21 20:07:52 +02:00
Frank
28fe5cbd8b forgot one 2024-09-21 20:04:06 +02:00
Will Tatam
3669946a09 Swap pins used for S3 to avoid gpio0 2024-09-21 18:54:38 +01:00
Will Tatam
2781be375f Swap pins used for S3 with PSRAM to avoid conflict 2024-09-21 16:52:32 +01:00
Will Tatam
22bd52198f Cleanup Hub75 config 2024-09-21 15:59:35 +01:00
Frank
08c2446f61 better PSRAM flags handling (minor)
in MM, we can have WLED_USE_PSRAM_JSON instead of WLED_USE_PSRAM.
2024-09-17 18:11:06 +02:00
Troy
3ee05a74b4 PSRAM buffer fixes as per SoftHack007 2024-09-10 15:11:17 -04:00
Troy
08e2e188d9 Merge branch 'mdev' into HUB75-PSRAM-Buffers-Fixes 2024-09-09 18:56:06 -04:00
Troy
c2adb5be34 HUB75 PSRAM Buffers 2024-09-09 18:53:40 -04:00
Will Tatam
8c0fcaa0fd hub75 - mxconfig.clkphase = false 2024-09-07 17:19:46 +01:00
Will Tatam
37a3141f88 HD-WF2 tweaks 2024-09-07 13:34:09 +01:00
Will Tatam
1e6cdc2c5b HD-WF1 pinout 2024-08-22 20:41:23 +01:00
Will Tatam
a5600950b5 Enable HUB75 for the esp32S3_8MB_M for HD-WF2 2024-08-21 23:34:11 +01:00
Will Tatam
0d11827552 Add pinout for HD-WF2 2024-08-21 22:40:40 +01:00
Frank
5610548652 HUB75 clock phase
`mxconfig.clkphase = false;` seems to help reduce flicker on some panels.

@netmindz I think we should add a checkbox to the UI - something like "clocked on positive edge" (default = checked) which means clkphase = true. when unchecked, we set clkphase = false.
2024-08-13 12:52:19 +02:00
Frank
a77520aa05 bugfix
forgot to commit one line ...
2024-08-12 12:36:45 +02:00
Frank
a257e49bb4 HUB75 trying to reduce glitches
the HUB75 driver seems to randomly produce glitches, especially on hight contrast edges.

* roll back to HUB75 version 3.0.10 (known good)
* limit max brightness to 238 (=92%)
* add short delay after starting the driver
2024-08-12 12:20:15 +02:00
Frank
2934739ebf HUB75 cleanup, double buffer improvement
* code cleanup, removing some unneeded sanity checks
* use dirty bits in double buffer mode, too -> only not-black pixels are drawn into the back-buffer (20%-30% faster)
2024-08-09 17:46:14 +02:00
Frank
56e72ef22d HUB75 live preview 2024-08-08 20:57:15 +02:00
Frank
bad923570b double buffer off (MatrixPortal S3)
`mxconfig.double_buff = true` should not be necessary any more.
2024-08-08 19:04:10 +02:00
Frank
1b098b9863 fixie 2024-08-08 19:00:19 +02:00
Frank
b5d97cca93 HUB75 leds buffer with dirty bit acceleration
Instead of using the memory-hungry driver double buffer, this implements a LEDS buffer inside the BusHub75Matrix class.
--> up to 50% faster
--> uses one "dirty" bit per pixel, to only re-transmit pixels that changed after the last "show"
2024-08-08 18:56:12 +02:00
Frank
5b7345ef39 HUB75 refactoring
* move HUB75 implementation into bus_manager.cpp
* add "override" keyword
* include FastLED.h if not included previously
* move RGB macros into bus_manager.h
2024-08-08 18:48:49 +02:00
Frank
fb2402fb97 HUB75 optimization (double buffer only)
In double duffer mode, the screen is blanked at each show(). So we can drop setPixelColor(BLACK) calls until we receive a pixel with different color.
2024-08-07 17:02:46 +02:00
Frank
7f9da309c9 const const const
adding hints for the compiler for optimization.
In case your custom build complains about "const", just remove the keyword. based on e82f38e277, but going further :-)

* "const" class functions : function does not modify any class attributes ( --> "this" becomes const)

* __attribute__((pure)) :  function return value depends only on the parameters and/or global variables. The function does not modify any global or static variables.
* __attribute__((const)) : function only examines arguments (no globals), and has no effects except the return value. This slightly more strict than "pure"
* hot: tells the compiler "this functions is called very often"
* cold: the opposite of hot
2024-08-07 14:58:38 +02:00
Frank
078bd70775 HUB75 speedups and minor improvements
* HUB75: allow to use native driver gamma correction - requires to undo WLED gamma
* added unGamma24() function
* HUB75: optimized setPixelColor()
* some experimental HUB75 stuff
2024-08-05 17:28:03 +02:00
Frank
6cfbc48ead busmanger debug help
* avoid crash when HUB75 driver is not compiled into firmware
* minimal info about PWM and Network busses
* show SPI frequency for DotStar driver
2024-07-17 21:49:10 +02:00
Will Tatam
d1cf8a679f Only enable double buffering for matrix portal due to memory issues on classic esp32 2024-07-17 10:23:50 +01:00
Will Tatam
584ca5e8ae Double buffer needed to prevent flicker for effects like GEQ 2024-07-13 13:51:59 +01:00
Will Tatam
60fbf07bca Fix mx_width and height for 4scan 2024-07-10 23:01:21 +01:00
Will Tatam
fb30f9c641 Add Hub75Matrix 64x32 (Outdoor 8S) 2024-07-09 21:35:53 +01:00
Will Tatam
5123128e9c Limit hub75 chain length by height 64 not width to allow for 2 x 64x32 2024-07-09 18:39:58 +01:00
Frank
a0514bb7ee fix compiler warning 2024-05-17 21:40:59 +02:00
Frank
0c7450407e WLEDMM_TWOPATH - use I2S driver for second output
* TWOPATH is up to 20% faster in some situations.
* user_print for showing the driver unit (I2S#n, RMT#x) on serial
2024-05-17 21:24:10 +02:00
Frank
08d73646fd adding compile-time messages when extra features are enabled 2024-05-01 02:11:28 +02:00
Frank
714d4850af minor cleanup
* startup message from UM autoplaylist
* zeroCrossingCount added to sound simulation
* debug messages cleanup
2024-04-30 12:47:45 +02:00
Frank
bd8df5e5c8 WLEDMM specific adjustments 2024-04-27 19:23:24 +02:00
Blaz Kristan
0572d3bee9 Bugfix
- getPixelColor() for analog
- RMT channel (#3922)
2024-04-27 19:16:43 +02:00
Frank
657259acc2 Optimization: stop to constantly search for the bus
Adding a caching mechanism to the Bus Manager - up to 30% faster especially when many led pins are used.
2024-04-20 21:57:04 +02:00