fix(P4): Hängenden I2C-Bus freitakten - Ursache des schwarzen Bildes (1.6.13)
Der Log nach einem Reset zeigte alle Panel-Schritte fehlerfrei, aber "i2c transaction failed" beim GT911. Bridge und Touch teilen sich den Bus: Trifft ein Reset des P4 mitten in eine Übertragung, bleibt der Baustein in seiner Bitausgabe stehen und hält SDA dauerhaft low. Beide hängen an Dauerstrom, der Zustand überlebt also Reset und Flashen. - ws7_i2c_bus_recover() taktet SCL vor dem Anlegen des Busses bis zu neunmal von Hand, bis SDA freigegeben wird, und erzeugt dann eine Stop-Bedingung. Bei freiem Bus läuft die Funktion wirkungslos durch. - ws7_bridge_write() prüft den Rückgabewert. Bisher liefen fehlgeschlagene Schreibzugriffe stillschweigend ins Leere - der eigentliche Grund, warum das schwarze Bild keinerlei Spur hinterließ. - pins_config.h: "#elsealle" statt "#else" seit 1.6.10 korrigiert. Der Tippfehler traf nur den JC_PANEL_43-Zweig, der dadurch nicht mehr übersetzbar war. Beide Panel-Varianten wieder gegengebaut. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y
This commit is contained in:
co-authored by
Claude Opus 5
parent
dfd2aaddd1
commit
43c5d5a41a
@@ -1,3 +1,21 @@
|
||||
Version 1.6.13:
|
||||
- Ursache des schwarzen Bildes gefunden: ein haengender I2C-Bus. Trifft ein Reset des P4
|
||||
mitten in eine laufende Uebertragung, bleibt der angesprochene Baustein in seiner
|
||||
Bitausgabe stehen und haelt die Datenleitung dauerhaft auf Masse. Damit schlaegt jede
|
||||
weitere Uebertragung fehl. Bridge und Touch-Controller haengen an Dauerstrom, weshalb
|
||||
dieser Zustand jeden Reset und sogar das Flashen ueberlebt - nur echtes Stromabziehen
|
||||
loest ihn. Die Folge: Die Bridge wird nie initialisiert, das Bild bleibt schwarz, und
|
||||
weil sie ihre Register behaelt, brennt die Hintergrundbeleuchtung weiter.
|
||||
- Vor dem Anlegen des I2C-Busses wird die Taktleitung jetzt von Hand getaktet, bis der
|
||||
Baustein die Datenleitung freigibt, danach folgt eine Stopp-Bedingung. Das ist der in
|
||||
der I2C-Spezifikation vorgesehene Weg und laeuft bei freiem Bus wirkungslos durch.
|
||||
- Fehlerbehebung: Schreibzugriffe auf die Bridge liefen stillschweigend ins Leere. Genau
|
||||
deshalb war der Fehler so schwer zu finden - das Bild blieb ohne jeden Hinweis schwarz.
|
||||
Sie melden Fehler jetzt im Klartext.
|
||||
- Fehlerbehebung: In pins_config.h stand seit 1.6.10 "#elsealle" statt "#else". Der
|
||||
Tippfehler traf nur den Zweig des 4,3-Zoll-Panels, das damit nicht mehr uebersetzbar war.
|
||||
Beide Panel-Varianten sind jetzt wieder gegengebaut.
|
||||
|
||||
Version 1.6.12:
|
||||
- Die Abschaltfolge für die Bridge aus 1.6.11 ist zurückgenommen. Sie hat den Fehler nicht
|
||||
behoben, sondern verschlimmert: Nach dem Nullsetzen von C0/C2/AC kam das Panel auch
|
||||
|
||||
Reference in New Issue
Block a user