diff --git a/P4_Display_Firmware/Changelog.txt b/P4_Display_Firmware/Changelog.txt index 2609f3b..c440b0d 100644 --- a/P4_Display_Firmware/Changelog.txt +++ b/P4_Display_Firmware/Changelog.txt @@ -1,3 +1,14 @@ +Version 1.6.10: +- WS7_PARTIAL_REFRESH ist jetzt auch im Auslieferungsstand 1. Am Gerät geprüft: kein + Flackern, und der Gewinn ist der größte der drei Tempo-Maßnahmen - vor allem während + eines Bezugs, wo die Zeitanzeige zehnmal je Sekunde weiterläuft. +- Der Hintergrund der Seiten ist deckend statt durchsichtig. Sichtbar ändert sich nichts, + die Ebenen darunter haben dieselbe Farbe; LVGL muss sie beim Scrollen aber nicht mehr + mitzeichnen und durchmischen. +- Neuer Schalter WS7_PERF_MONITOR in pins_config.h: blendet unten rechts Bilder je Sekunde + und Prozessorlast ein. Damit lässt sich beantworten, ob weitere Mühe beim Zeichnen + überhaupt noch etwas bringt, statt ins Blaue zu optimieren. + Version 1.6.9: - Fehlerbehebung: Ein Tipp auf einen Knopf löste oft mehrfach aus. Der GT9271 lässt gelegentlich einen Messzyklus aus oder liefert ein unplausibles Paket; der diff --git a/P4_Display_Firmware/config.h b/P4_Display_Firmware/config.h index 0052f0d..969092c 100644 --- a/P4_Display_Firmware/config.h +++ b/P4_Display_Firmware/config.h @@ -126,7 +126,7 @@ // ------------------------------------------------------------------------------------- // Firmware // ------------------------------------------------------------------------------------- -#define DISPLAY_FW_VERSION "1.6.9" // Firmware-Stand der P4-Display-Steuerung (Info-Seite) +#define DISPLAY_FW_VERSION "1.6.10" // Firmware-Stand der P4-Display-Steuerung (Info-Seite) // ------------------------------------------------------------------------------------- // Protokoll diff --git a/P4_Display_Firmware/lv_conf.h b/P4_Display_Firmware/lv_conf.h index 40d56e8..1e9eded 100644 --- a/P4_Display_Firmware/lv_conf.h +++ b/P4_Display_Firmware/lv_conf.h @@ -915,14 +915,19 @@ #define LV_USE_SNAPSHOT 0 /*1: Enable system monitor component*/ +/* Nur fuer die Messeinblendung des Waveshare-Panels, siehe WS7_PERF_MONITOR. */ +#if (JC_PANEL_TYPE == WS_PANEL_7H) && WS7_PERF_MONITOR +#define LV_USE_SYSMON 1 +#else #define LV_USE_SYSMON 0 +#endif #if LV_USE_SYSMON /*Get the idle percentage. E.g. uint32_t my_get_idle(void);*/ #define LV_SYSMON_GET_IDLE lv_timer_get_idle /*1: Show CPU usage and FPS count * Requires `LV_USE_SYSMON = 1`*/ - #define LV_USE_PERF_MONITOR 0 + #define LV_USE_PERF_MONITOR 1 #if LV_USE_PERF_MONITOR #define LV_USE_PERF_MONITOR_POS LV_ALIGN_BOTTOM_RIGHT diff --git a/P4_Display_Firmware/pins_config.h b/P4_Display_Firmware/pins_config.h index 8150e40..a0e0fb2 100644 --- a/P4_Display_Firmware/pins_config.h +++ b/P4_Display_Firmware/pins_config.h @@ -20,14 +20,13 @@ // an - mit 16 kommt kein brauchbares Bild. Einstellbar bleibt es // nur, weil andere Waveshare-Panels an derselben Firmware // haengen koennten. -// WS7_PARTIAL_REFRESH 0 = Vollbild neu zeichnen. GEPRUEFT: Mit 1 (nur geaenderte -// Bereiche, zwei wechselnde Bildpuffer) laesst sich der -// Menue-Vorhang nicht mehr oeffnen. Er ist halbtransparent und -// wird in den gerade aktiven Puffer eingemischt; die naechste -// Zustandsmeldung der S3 zeichnet in den anderen, der ihn nie -// bekommen hat. Am 4,3-Zoll-Panel hatte derselbe Modus -// geflackert. Nutzbar erst, wenn der LVGL-Port die geaenderten -// Bereiche zwischen beiden Puffern abgleicht. +// WS7_PARTIAL_REFRESH 1 = nur geaenderte Bildbereiche neu zeichnen statt jedes Mal des +// gesamten Bildes (LVGL-Direct-Mode, zwei wechselnde Puffer). +// Groesster Tempogewinn, besonders waehrend eines Bezugs: Die +// Zeitanzeige laeuft zehnmal je Sekunde weiter, und mit 0 wuerde +// dafuer jedes Mal das ganze Bild neu gezeichnet. Am Geraet +// geprueft, kein Flackern - am 4,3-Zoll-Panel hatte derselbe +// Modus dagegen geflackert. // WS7_PARALLEL_RENDER 1 = LVGL zeichnet mit zwei Threads auf beiden Prozessorkernen. // Kostet zwei zusaetzliche Task-Stacks im knappen internen RAM; // startet der P4 nicht mehr, hier zuerst auf 0 stellen. @@ -127,6 +126,10 @@ #define WS7_TOUCH_MIRROR_RAW_X 1 #define WS7_TOUCH_MIRROR_RAW_Y 0 +// Zeigt unten rechts Bilder je Sekunde und Prozessorlast ein. Nur zum Messen gedacht: +// Der Wert sagt, ob sich weitere Muehe beim Zeichnen ueberhaupt lohnt. +#define WS7_PERF_MONITOR 0 + // Zum Einmessen des Touch: 1 gibt jeden Beruehrpunkt roh und umgerechnet auf der // seriellen Konsole aus. Danach wieder auf 0, sonst laeuft das Log dauernd mit. #define WS7_TOUCH_DEBUG 0 @@ -145,7 +148,7 @@ #define LCD_RST 27 #define LCD_LED 23 -#else +#elsealle #define LCD_H_RES 480 #define LCD_V_RES 800 diff --git a/P4_Display_Firmware/ui.cpp b/P4_Display_Firmware/ui.cpp index 071d827..f50ffb0 100644 --- a/P4_Display_Firmware/ui.cpp +++ b/P4_Display_Firmware/ui.cpp @@ -453,7 +453,11 @@ static lv_obj_t* make_page(lv_obj_t* parent) { lv_obj_t* p = lv_obj_create(parent); lv_obj_set_size(p, LV_PCT(100), LV_PCT(100)); lv_obj_set_pos(p, 0, 0); - lv_obj_set_style_bg_opa(p, LV_OPA_TRANSP, 0); + // Deckend in der Hintergrundfarbe statt durchsichtig. Sieht identisch aus - die Ebenen + // darunter haben dieselbe Farbe -, erspart LVGL beim Scrollen aber, sie mitzuzeichnen + // und durchzumischen. + lv_obj_set_style_bg_color(p, COL_BG, 0); + lv_obj_set_style_bg_opa(p, LV_OPA_COVER, 0); lv_obj_set_style_border_width(p, 0, 0); lv_obj_set_style_pad_all(p, 8, 0); lv_obj_set_style_pad_row(p, 6, 0);