fix(P4): Anlaufzeit des Displaymoduls abwarten (1.6.18)
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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P7JsiDJ1QbNFLDz5chf8Jt
This commit is contained in:
co-authored by
Claude Opus 5
parent
750a6fb78c
commit
ee74c700bf
@@ -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:
|
Version 1.6.17:
|
||||||
- Der I2C-Stoerimpulsfilter aus 1.6.16 wirkt: Nach dem Panel-Start melden sich wieder alle
|
- Der I2C-Stoerimpulsfilter aus 1.6.16 wirkt: Nach dem Panel-Start melden sich wieder alle
|
||||||
drei Bausteine, Bridge und Touch bleiben ansprechbar.
|
drei Bausteine, Bridge und Touch bleiben ansprechbar.
|
||||||
|
|||||||
@@ -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.
|
// benutzen, sonst folgt ein zweiter Absturz, der die eigentliche Ursache ueberdeckt.
|
||||||
bool jc_board_bringup(void)
|
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();
|
jc_backlight_init();
|
||||||
|
|
||||||
#if JC_PANEL_TYPE == WS_PANEL_7H
|
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||||
|
|||||||
@@ -148,6 +148,12 @@
|
|||||||
// Prueffarbbalken statt Oberflaeche anzeigen. Sie entstehen im DSI-Baustein selbst und
|
// Prueffarbbalken statt Oberflaeche anzeigen. Sie entstehen im DSI-Baustein selbst und
|
||||||
// benutzen weder Bildspeicher noch LVGL. Damit laesst sich trennen, ob die Anzeigekette
|
// benutzen weder Bildspeicher noch LVGL. Damit laesst sich trennen, ob die Anzeigekette
|
||||||
// bis zum Panel arbeitet (Balken sichtbar) oder nicht (schwarz). Nur zur Fehlersuche.
|
// 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
|
#define WS7_TEST_PATTERN 0
|
||||||
|
|
||||||
#elif JC_PANEL_TYPE == JC_PANEL_70
|
#elif JC_PANEL_TYPE == JC_PANEL_70
|
||||||
|
|||||||
Reference in New Issue
Block a user