el512: refresh health counters and quiet warnings

The panel driver counts ring refills, the largest gap between refills,
frame swaps, swap timeouts and I2S TX FIFO underruns (takeStats()). The
ESPHome component checks them every 10 s and logs a warning only when the
ESP32 side of the signal had a problem, plus a debug summary per minute.

Measured with Wi-Fi on: ~4600 refills/s, max gap < 0.4 ms (lead 1.7 ms),
no underruns or timeouts, so remaining blinks come from the signal being
disturbed on the wires (Wi-Fi transmit bursts), not from the refresh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-18 20:52:10 +02:00
1 parent 963590cdfe
commit f3212ea969
4 files changed
+80 -1

No files matched your search

+3
View File
@@ -51,6 +51,7 @@ class EL512Display : public display::DisplayBuffer {
protected:
void draw_absolute_pixel_internal(int x, int y, Color color) override;
void check_refresh_health_();
int get_width_internal() override { return EL512Panel::WIDTH; }
int get_height_internal() override { return EL512Panel::HEIGHT; }
@@ -58,6 +59,8 @@ class EL512Display : public display::DisplayBuffer {
EL512Panel *panel_{nullptr};
bool enabled_{true};
bool low_power_{false};
uint32_t health_checked_{0};
uint32_t health_logged_{0};
display::DisplayPage *still_alive_page_{nullptr};
display::DisplayPage *still_alive_return_{nullptr};