fix(P4): Bridge-Grundeinstellung nach dem DSI-Start wiederholen (1.6.20) #48
@@ -1,3 +1,17 @@
|
|||||||
|
Version 1.6.20:
|
||||||
|
- Nach 1.6.19 lief es reproduzierbar so ab: Beim Einschalten ging nach zwei bis drei
|
||||||
|
Sekunden die Hintergrundbeleuchtung an, dann kam nichts mehr; nach einem Reset ging die
|
||||||
|
Beleuchtung kurz aus und danach erschien Beleuchtung samt Bild. Daraus folgt der letzte
|
||||||
|
fehlende Schritt: Auch die Grundeinstellung der Bridge lief bisher nur einmal, und zwar
|
||||||
|
bevor die DSI-Strecke ueberhaupt existierte. Beim Reset half es nur deshalb, weil die
|
||||||
|
Bridge ihre Einstellung aus dem vorigen Durchlauf noch hatte und diesmal ein DSI-Signal
|
||||||
|
vorfand.
|
||||||
|
- Die Grundeinstellung der Bridge wird jetzt ein zweites Mal geschrieben, sobald die
|
||||||
|
Videoausgabe laeuft - dasselbe Vorgehen wie bei den Weckbefehlen des Panels in 1.6.19.
|
||||||
|
Damit wird ohne Reset erreicht, was vorher erst der zweite Durchlauf brachte.
|
||||||
|
- Im Start-Log sind beide Durchgaenge benannt ("Bridge-Grundeinstellung vor dem DSI-Start"
|
||||||
|
und "... nach dem Start der Videoausgabe").
|
||||||
|
|
||||||
Version 1.6.19:
|
Version 1.6.19:
|
||||||
- Die Wartezeit aus 1.6.18 hat den Start deutlich verbessert, aber noch nicht zuverlässig
|
- Die Wartezeit aus 1.6.18 hat den Start deutlich verbessert, aber noch nicht zuverlässig
|
||||||
gemacht. Aus dem verbliebenen Fehlerbild folgt der nächste Schritt: Die Beleuchtung ging
|
gemacht. Aus dem verbliebenen Fehlerbild folgt der nächste Schritt: Die Beleuchtung ging
|
||||||
|
|||||||
@@ -193,8 +193,24 @@ static void ws7_bridge_write(uint8_t reg, uint8_t value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bridge am I2C-Bus anmelden und Grundinitialisierung schreiben. Muss VOR dem
|
// Grundeinstellung der Bridge. Bewusst mehrfach aufrufbar, siehe unten.
|
||||||
// DSI-Bringup laufen; die Hintergrundbeleuchtung bleibt dabei noch aus.
|
//
|
||||||
|
// Warum zweimal: Beim ersten Aufruf existiert die DSI-Strecke noch gar nicht - die Bridge
|
||||||
|
// bekommt ihre Einstellung also, bevor ein Signal anliegt. Beim ersten Einschalten reichte
|
||||||
|
// das nicht: Die Beleuchtung ging an (die haengt an der Bridge), ein Bild kam aber nicht.
|
||||||
|
// Erst ein Reset half - und dann nur deshalb, weil die Bridge ihre Einstellung aus dem
|
||||||
|
// vorigen Durchlauf noch hatte und diesmal ein DSI-Signal vorfand. Genau das holt der
|
||||||
|
// zweite Aufruf nach, ohne dass ein Reset noetig ist. Die Register sind wiederholbar.
|
||||||
|
static void ws7_bridge_core_init(const char *wann)
|
||||||
|
{
|
||||||
|
esp_rom_printf("[Panel] Bridge-Grundeinstellung %s\n", wann);
|
||||||
|
ws7_bridge_write(0xC0, 0x01);
|
||||||
|
ws7_bridge_write(0xC2, 0x01);
|
||||||
|
ws7_bridge_write(0xAC, 0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bridge am I2C-Bus anmelden und erstmalig einstellen. Laeuft VOR dem DSI-Bringup;
|
||||||
|
// die Hintergrundbeleuchtung bleibt dabei noch aus.
|
||||||
static void ws7_bridge_pre_init(void)
|
static void ws7_bridge_pre_init(void)
|
||||||
{
|
{
|
||||||
i2c_device_config_t dev_cfg = {
|
i2c_device_config_t dev_cfg = {
|
||||||
@@ -206,9 +222,7 @@ static void ws7_bridge_pre_init(void)
|
|||||||
s_bridge_handle = NULL;
|
s_bridge_handle = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ws7_bridge_write(0xC0, 0x01);
|
ws7_bridge_core_init("vor dem DSI-Start");
|
||||||
ws7_bridge_write(0xC2, 0x01);
|
|
||||||
ws7_bridge_write(0xAC, 0x01);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void jc_backlight_init(void)
|
void jc_backlight_init(void)
|
||||||
@@ -536,6 +550,7 @@ bool jc_board_bringup(void)
|
|||||||
// Zweiter Anlauf, jetzt bei laufender Videoausgabe: faengt den Fall ab, dass das
|
// Zweiter Anlauf, jetzt bei laufender Videoausgabe: faengt den Fall ab, dass das
|
||||||
// Panel beim ersten Mal noch nicht aufnahmebereit war.
|
// Panel beim ersten Mal noch nicht aufnahmebereit war.
|
||||||
vTaskDelay(pdMS_TO_TICKS(WS7_PANEL_SETTLE_MS));
|
vTaskDelay(pdMS_TO_TICKS(WS7_PANEL_SETTLE_MS));
|
||||||
|
ws7_bridge_core_init("nach dem Start der Videoausgabe");
|
||||||
ws7_panel_wake(io, "nach dem Start der Videoausgabe");
|
ws7_panel_wake(io, "nach dem Start der Videoausgabe");
|
||||||
#if WS7_TEST_PATTERN
|
#if WS7_TEST_PATTERN
|
||||||
// Prueffarbbalken: Sie entstehen im DSI-Baustein selbst und benutzen weder den
|
// Prueffarbbalken: Sie entstehen im DSI-Baustein selbst und benutzen weder den
|
||||||
|
|||||||
Reference in New Issue
Block a user