From ee74c700bfc3191b1fa2c2b43e0b1f9634c5fa89 Mon Sep 17 00:00:00 2001 From: raw-designs Date: Wed, 2 Sep 2026 01:25:40 +0200 Subject: [PATCH] fix(P4): Anlaufzeit des Displaymoduls abwarten (1.6.18) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Entscheidender Hinweis vom Gerät: "Sobald der serielle Monitor läuft, startet es fast immer einwandfrei." Dessen USB-Anmeldung verzögert den Start - und ersetzte damit unbeabsichtigt eine Wartezeit, die der Werks-Testsketch explizit hat: delay(2000) am Anfang von setup(). Unsere Firmware sprach Bridge und Panel sofort nach dem Einschalten an. Das Displaymodul ist dann noch nicht bereit: Die Bridge nimmt ihre Register nicht an oder das Panel zeigt trotz korrekt gesendeter DSI-Daten nichts - beides ohne Fehlermeldung, weil aus Sicht des P4 jeder Schritt geklappt hat. Daher das sprunghafte Verhalten und der Fehlstart beim ersten Anstecken. jc_board_bringup() wartet für WS_PANEL_7H jetzt WS7_PANEL_WARMUP_MS (Vorgabe 2000 ms), bevor es beginnt. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01P7JsiDJ1QbNFLDz5chf8Jt --- P4_Display_Firmware/Changelog.txt | 14 ++++++++++++++ P4_Display_Firmware/board_bringup.c | 14 ++++++++++++++ P4_Display_Firmware/pins_config.h | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/P4_Display_Firmware/Changelog.txt b/P4_Display_Firmware/Changelog.txt index 1cc2655..3c67087 100644 --- a/P4_Display_Firmware/Changelog.txt +++ b/P4_Display_Firmware/Changelog.txt @@ -1,3 +1,17 @@ +Version 1.6.18: +- Ursache des unzuverlässigen Starts gefunden: Der P4 sprach Bridge und Panel sofort nach + dem Einschalten an. Das Displaymodul braucht danach aber einen Moment, bis es bereit ist. + Kam der Hochlauf zu früh, nahm die Bridge ihre Register nicht an oder das Panel zeigte + trotz korrekt gesendeter DSI-Daten nichts - beides ohne Fehlermeldung, weil aus Sicht des + P4 jeder Schritt geklappt hatte. Das Ergebnis war ein Display, das mal ansprang und mal + nicht, und beim ersten Anstecken meist gar nicht. +- Der Hochlauf wartet jetzt WS7_PANEL_WARMUP_MS (Vorgabe 2000 ms), bevor er beginnt. Der + Werks-Testsketch wartet aus demselben Grund 2 Sekunden am Anfang. +- Damit erklärt sich auch, warum es mit geöffnetem seriellen Monitor fast immer klappte: + Dessen USB-Anmeldung verzögert den Start und ersetzte damit unbeabsichtigt die Wartezeit. +- Der Wert steht in pins_config.h. Läuft der Start zuverlässig, lässt er sich vorsichtig + senken; springt die Anzeige nicht an, ist er der erste Wert zum Erhöhen. + Version 1.6.17: - Der I2C-Stoerimpulsfilter aus 1.6.16 wirkt: Nach dem Panel-Start melden sich wieder alle drei Bausteine, Bridge und Touch bleiben ansprechbar. diff --git a/P4_Display_Firmware/board_bringup.c b/P4_Display_Firmware/board_bringup.c index 38ccabe..480fb68 100644 --- a/P4_Display_Firmware/board_bringup.c +++ b/P4_Display_Firmware/board_bringup.c @@ -388,6 +388,20 @@ static void jc_touch_scale(esp_lcd_touch_handle_t tp, uint16_t *x, uint16_t *y, // benutzen, sonst folgt ein zweiter Absturz, der die eigentliche Ursache ueberdeckt. bool jc_board_bringup(void) { +#if JC_PANEL_TYPE == WS_PANEL_7H + // Anlaufzeit abwarten, BEVOR Bridge und Panel angesprochen werden. + // + // Das Displaymodul braucht nach dem Anlegen der Versorgung einen Moment, bis Bridge + // und Panel bereit sind. Faengt der P4 sofort an, laeuft der Hochlauf ins Leere: Die + // Bridge nimmt ihre Register nicht an oder das Panel zeigt trotz korrekt gesendeter + // DSI-Daten nichts - beides ohne Fehlermeldung, weil aus Sicht des P4 alles geklappt + // hat. Das Ergebnis war ein Display, das mal ansprang und mal nicht. + // + // Der Werks-Testsketch wartet aus demselben Grund 2 Sekunden am Anfang von setup(). + // Dass es mit geoeffnetem seriellen Monitor fast immer klappte, hatte dieselbe + // Ursache: Dessen USB-Anmeldung verzoegert den Start und ersetzte damit die Wartezeit. + vTaskDelay(pdMS_TO_TICKS(WS7_PANEL_WARMUP_MS)); +#endif jc_backlight_init(); #if JC_PANEL_TYPE == WS_PANEL_7H diff --git a/P4_Display_Firmware/pins_config.h b/P4_Display_Firmware/pins_config.h index 968e843..eea6f4d 100644 --- a/P4_Display_Firmware/pins_config.h +++ b/P4_Display_Firmware/pins_config.h @@ -148,6 +148,12 @@ // Prueffarbbalken statt Oberflaeche anzeigen. Sie entstehen im DSI-Baustein selbst und // benutzen weder Bildspeicher noch LVGL. Damit laesst sich trennen, ob die Anzeigekette // bis zum Panel arbeitet (Balken sichtbar) oder nicht (schwarz). Nur zur Fehlersuche. +// Anlaufzeit des Displaymoduls, bevor Bridge und Panel angesprochen werden. Ohne diese +// Pause startet die Anzeige nur zufaellig - der Werks-Testsketch wartet aus demselben +// Grund 2 Sekunden. Springt das Display beim Einschalten nicht zuverlaessig an, ist das +// der erste Wert zum Erhoehen; laeuft es sicher, kann er vorsichtig gesenkt werden. +#define WS7_PANEL_WARMUP_MS 2000 + #define WS7_TEST_PATTERN 0 #elif JC_PANEL_TYPE == JC_PANEL_70