diag(P4): Touch-Rohwerte vermessen, einheitliche Zeitbasis (1.9.10) #79
@@ -1,3 +1,11 @@
|
|||||||
|
Version 1.9.10:
|
||||||
|
- Alle Messzeilen laufen jetzt auf derselben Uhr. Die des Zeichenablaufs startete später als
|
||||||
|
die des Hauptablaufs; die Zeiten ließen sich nur mit Umrechnung vergleichen.
|
||||||
|
- Der Touch meldet jetzt, wenn er Rohwerte verwirft, weil sie außerhalb des gültigen
|
||||||
|
Bereichs liegen, und nennt bei jeder erkannten Berührung, wie viele vorher verworfen
|
||||||
|
wurden. Eine Berührung, deren Rohwerte lange verworfen werden, sieht von außen genauso aus
|
||||||
|
wie ein Display, das nicht reagiert - das war bisher nicht zu unterscheiden.
|
||||||
|
|
||||||
Version 1.9.9:
|
Version 1.9.9:
|
||||||
- Die kleinen Kacheln unten im Dashboard behalten beim Bezug ihre Höhe. Bisher bekam die
|
- Die kleinen Kacheln unten im Dashboard behalten beim Bezug ihre Höhe. Bisher bekam die
|
||||||
untere Zeile während des Bezugs deutlich mehr Platz - die Kacheln wurden enorm hoch und
|
untere Zeile während des Bezugs deutlich mehr Platz - die Kacheln wurden enorm hoch und
|
||||||
|
|||||||
@@ -310,14 +310,26 @@ static bool ws7_touch_get_xy(esp_lcd_touch_handle_t tp, uint16_t *x, uint16_t *y
|
|||||||
bool got = s_touch_get_xy_orig(tp, x, y, strength, point_num, max_point_num);
|
bool got = s_touch_get_xy_orig(tp, x, y, strength, point_num, max_point_num);
|
||||||
int64_t now = esp_timer_get_time();
|
int64_t now = esp_timer_get_time();
|
||||||
|
|
||||||
// Unplausible Rohwerte gelten als Aussetzer, nicht als Beruehrung.
|
// Unplausible Rohwerte gelten als Aussetzer, nicht als Beruehrung. Wie viele davon
|
||||||
|
// anfallen, war bisher nirgends zu sehen - eine Beruehrung, deren Rohwerte lange
|
||||||
|
// verworfen werden, sieht von aussen wie ein Display aus, das nicht reagiert.
|
||||||
|
static uint32_t s_verworfen = 0;
|
||||||
if (got && *point_num > 0 &&
|
if (got && *point_num > 0 &&
|
||||||
(x[0] > WS7_TOUCH_RAW_X_MAX || y[0] > WS7_TOUCH_RAW_Y_MAX)) {
|
(x[0] > WS7_TOUCH_RAW_X_MAX || y[0] > WS7_TOUCH_RAW_Y_MAX)) {
|
||||||
|
if (s_verworfen == 0)
|
||||||
|
esp_rom_printf("[Touch] %u ms: Rohwert verworfen (x %u, y %u liegen ausserhalb)\n",
|
||||||
|
(unsigned)(now / 1000), (unsigned)x[0], (unsigned)y[0]);
|
||||||
|
s_verworfen++;
|
||||||
got = false;
|
got = false;
|
||||||
*point_num = 0;
|
*point_num = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (got && *point_num > 0) {
|
if (got && *point_num > 0) {
|
||||||
|
if (!s_touch_down)
|
||||||
|
esp_rom_printf("[Touch] %u ms: Beruehrung erkannt bei x %u, y %u; %u Rohwerte vorher verworfen\n",
|
||||||
|
(unsigned)(now / 1000), (unsigned)x[0], (unsigned)y[0],
|
||||||
|
(unsigned)s_verworfen);
|
||||||
|
s_verworfen = 0;
|
||||||
s_touch_last_x = x[0];
|
s_touch_last_x = x[0];
|
||||||
s_touch_last_y = y[0];
|
s_touch_last_y = y[0];
|
||||||
s_touch_last_us = now;
|
s_touch_last_us = now;
|
||||||
|
|||||||
@@ -932,11 +932,11 @@ static bool wake_choice_offered() {
|
|||||||
}
|
}
|
||||||
static void standby_screen_cb(lv_event_t*) { // Tipp auf Standby-Uhr -> nachfragen
|
static void standby_screen_cb(lv_event_t*) { // Tipp auf Standby-Uhr -> nachfragen
|
||||||
// Vermessen: Vom Tippen bis zur sichtbaren Rueckfrage vergehen rund fuenf Sekunden.
|
// Vermessen: Vom Tippen bis zur sichtbaren Rueckfrage vergehen rund fuenf Sekunden.
|
||||||
uint32_t t0 = lv_tick_get();
|
uint32_t t0 = millis();
|
||||||
esp_rom_printf("[Touch] %u ms: Tipp auf die Standby-Uhr erkannt\n", (unsigned)t0);
|
esp_rom_printf("[Touch] %u ms: Tipp auf die Standby-Uhr erkannt\n", (unsigned)t0);
|
||||||
wake_confirm_show();
|
wake_confirm_show();
|
||||||
esp_rom_printf("[Touch] %u ms: Rueckfrage aufgebaut, brauchte %u ms\n",
|
esp_rom_printf("[Touch] %u ms: Rueckfrage aufgebaut, brauchte %u ms\n",
|
||||||
(unsigned)lv_tick_get(), (unsigned)(lv_tick_get() - t0));
|
(unsigned)millis(), (unsigned)(millis() - t0));
|
||||||
}
|
}
|
||||||
static void wake_cancel() { // Abbrechen -> zurueck in die Standby-Helligkeit
|
static void wake_cancel() { // Abbrechen -> zurueck in die Standby-Helligkeit
|
||||||
wake_timeout_stop();
|
wake_timeout_stop();
|
||||||
@@ -3563,7 +3563,7 @@ static void refr_ready_cb(lv_event_t*) {
|
|||||||
uint32_t d = lv_tick_get() - g_refrStart;
|
uint32_t d = lv_tick_get() - g_refrStart;
|
||||||
if (d < REFR_WARN_MS) return;
|
if (d < REFR_WARN_MS) return;
|
||||||
unsigned pct = (unsigned)((uint64_t)g_refrPixels * 100ULL / ((uint64_t)LCD_H_RES * LCD_V_RES));
|
unsigned pct = (unsigned)((uint64_t)g_refrPixels * 100ULL / ((uint64_t)LCD_H_RES * LCD_V_RES));
|
||||||
esp_rom_printf("[UI] %u ms: Bildaufbau %u ms, %u Bereiche, %u %% der Flaeche\n", (unsigned)lv_tick_get(),
|
esp_rom_printf("[UI] %u ms: Bildaufbau %u ms, %u Bereiche, %u %% der Flaeche\n", (unsigned)millis(),
|
||||||
(unsigned)d, (unsigned)g_refrAreas, pct);
|
(unsigned)d, (unsigned)g_refrAreas, pct);
|
||||||
// Lage der Bereiche mit ausgeben. Erst daran ist zu erkennen, WELCHER Teil der
|
// Lage der Bereiche mit ausgeben. Erst daran ist zu erkennen, WELCHER Teil der
|
||||||
// Oberflaeche das Neuzeichnen ausloest - die Groesse allein sagt das nicht.
|
// Oberflaeche das Neuzeichnen ausloest - die Groesse allein sagt das nicht.
|
||||||
@@ -3576,7 +3576,7 @@ static void refr_ready_cb(lv_event_t*) {
|
|||||||
static void ui_heartbeat_cb(lv_timer_t*) {
|
static void ui_heartbeat_cb(lv_timer_t*) {
|
||||||
lv_mem_monitor_t m; lv_mem_monitor(&m);
|
lv_mem_monitor_t m; lv_mem_monitor(&m);
|
||||||
esp_rom_printf("[UI] %u ms: Herzschlag, LVGL-Speicher frei %u von %u Byte, groesster Block %u\n",
|
esp_rom_printf("[UI] %u ms: Herzschlag, LVGL-Speicher frei %u von %u Byte, groesster Block %u\n",
|
||||||
(unsigned)lv_tick_get(), (unsigned)m.free_size, (unsigned)m.total_size,
|
(unsigned)millis(), (unsigned)m.free_size, (unsigned)m.total_size,
|
||||||
(unsigned)m.free_biggest_size);
|
(unsigned)m.free_biggest_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4220,11 +4220,11 @@ void ui_update(const MachineState& st) {
|
|||||||
// Vermessen: Das Einblenden der Uhr ist der Moment, in dem das Display
|
// Vermessen: Das Einblenden der Uhr ist der Moment, in dem das Display
|
||||||
// zuletzt stehen geblieben ist. Bleibt die zweite Zeile aus, haengt es hier.
|
// zuletzt stehen geblieben ist. Bleibt die zweite Zeile aus, haengt es hier.
|
||||||
esp_rom_printf("[UI] Standby-Uhr wird eingeblendet\n");
|
esp_rom_printf("[UI] Standby-Uhr wird eingeblendet\n");
|
||||||
uint32_t t0 = lv_tick_get();
|
uint32_t t0 = millis();
|
||||||
ui_fade_in(g_standbyScreen, UI_FADE_MS); // Einschlaf-Animation
|
ui_fade_in(g_standbyScreen, UI_FADE_MS); // Einschlaf-Animation
|
||||||
g_standbyShown = true;
|
g_standbyShown = true;
|
||||||
esp_rom_printf("[UI] Standby-Uhr eingeblendet, %u ms\n",
|
esp_rom_printf("[UI] Standby-Uhr eingeblendet, %u ms\n",
|
||||||
(unsigned)(lv_tick_get() - t0));
|
(unsigned)(millis() - t0));
|
||||||
}
|
}
|
||||||
// Frueher wurde die Uhr hier bei JEDER Zustandsmeldung nach vorn geholt. Das
|
// Frueher wurde die Uhr hier bei JEDER Zustandsmeldung nach vorn geholt. Das
|
||||||
// ordnet die Ebenen neu und laesst LVGL den gesamten Bildschirm neu zeichnen -
|
// ordnet die Ebenen neu und laesst LVGL den gesamten Bildschirm neu zeichnen -
|
||||||
|
|||||||
Reference in New Issue
Block a user