Hallo, beim Textdisplay überchreibt man z.B. eifnach die Zahl. Aber macht ihr das bei nem TFT? Da braucht es ja ewig, bis er alles neu gezeichnet oder einfach alles schwarz ausmalt.. Einfach nur die Betreffende Stelle mit nem schwarzen quadraht übermahlen? Die gleiche zahl wie vorher nur in schwarz drüberschreiben und dann erst in einer anderen Farbe die neue?
Hallo, schau dir die Lib an, hier funktioniert das! http://www.henningkarlsen.com/electronics/library.php?id=51 Gruß G.G.
Timbo1 schrieb: > Hallo, > beim Textdisplay überchreibt man z.B. eifnach die Zahl. > Aber macht ihr das bei nem TFT? > Da braucht es ja ewig, bis er alles neu gezeichnet oder einfach alles > schwarz ausmalt.. > Einfach nur die Betreffende Stelle mit nem schwarzen quadraht > übermahlen? > Die gleiche zahl wie vorher nur in schwarz drüberschreiben und dann erst > in einer anderen Farbe die neue? Ich hatte kürzlich auch dieses Problem und beide Ansätze (Rechteck oder alter Inhalt in Hintergrundfarbe) ausprobiert. Das Überschreiben mit dem alten Wert hat den Nachteil, dass es langsamer ist als einfach mit einem Rechteck in Hintergrundfarbe zu "grundieren", da der Font erneut "gerendert" werden muß. Für das schlichte "Füllen" gibt's meist schnelle Funktionen. Wenn Dein Display kein "double Buffering" beherrscht und Du viel Inhalt darstellen willst, der sich gelegentlich ändert wird es schnell anfangen zu "flackern". Ich habe das Problem des Flackerns dadurch gelöst, dass ich nur dann neu schreibe, wenn sich der Wert auch tatsächlich geändert hat und die Aktualisierung des Bildschirms von der eigentlichen Anwendung entkoppelt habe und den Bildschirm stumpf von oben nach unten langsam aktualisiere 2-4s pro Refresh. Mehr kann man bei komplexen Bildinhalten als Mensch ohnehin nicht sinnvoll erfassen. Wenn sich der Anwender auf einen einzigen Wert konzentriert (z.B. beim Abgleich) dann muß dieser Wert natürlich schneller als alle 2s aktualisiert werden. Wenn die Datenquelle stark schwankt führt das dann immer noch zu leichtem Flimmern. Hier hilft dann auch nur: - Aktualisierung nur dann wenn sich der Displaywert geändert hat - Filtern des Wertes sofern technisch sinnvoll damit sich das Display seltener ändert. Vermeiden/Verringern lässt sich das Flackern meiner Erfahrung nach ansonsten nur noch durch Hardware: 1) Display mit "double Buffering" verwenden - hier kann man den nächsten Screen vorbereiten und die Display-HW schaltet dann die Screens flackerfrei um. Wenn das nicht geht, dann: 2) Möglichst schnellen Controller und möglichst schnelle Anbindung an das Display, also kein I2C oder SPI, sondern parallel angebunden. Bei den kleinen billigen SPI-TFTs der Klasse "160x128 und 65k Farben ohne double buffering", die man für ein paar Euro aus China bestellen kann hilft wohl nur die oben genannte SW-Strategie. Vielleicht hat aber ja noch jemand eine bessere Idee? Gruß, Bernd
anstelle des Rechteck geht auch nur die Linie, die ist deutlich schneller..sieht schon besser aus...ist aber ne blöde Lösung finde ich :-( Aber mit der linie kann ich dann zumindest erstmal leben, da es nicht oder kaum flackert
Hallo, in meinem letzten Projekt (Xmega, TFT-Porto-Board mit 240*320 Pixel und HX8347-D-Controller 8-Bit parallel-Display-Ansteuerung 2MHz int. Takt) habe ich das folgendermaßen gelöst: Zeichensatz mit 8*16 Pixel definiert, beim Schreiben eines Zeichens wird jedes Pixel des Zeichen-Rechtecks durchlaufen und entweder auf Hintergrund-oder auf Vordergrundfarbe gesetzt. Dadurch muss der Bereich vorher nicht gelöscht werden. Da der Bildaufbau für das gesamte Display auch zu lange gedauert hat (ca. 4s) schalte ich für die Änderung mehrerer Zeilen den Xmega kurzzeitig auf 32 MHz internen Takt um, baue das betroffene Teilbild neu auf und schalte danach den Takt wieder auf 2MHz zurück. Während dieser Zeit ahbe ich verschiedene Zeitabhängige Interrupts (USART, TWI, Timer) deaktiviert. Damit habe ich eine schnellen Bildaufbau bei (seltenen) Änderungen mehrerer Zeichen/Zeilen erreicht. Gruß, Robert.
RobWa schrieb: > Hallo, > > in meinem letzten Projekt (Xmega, TFT-Porto-Board mit 240*320 Pixel und > HX8347-D-Controller 8-Bit parallel-Display-Ansteuerung 2MHz int. Takt) > habe ich das folgendermaßen gelöst: > Zeichensatz mit 8*16 Pixel definiert, beim Schreiben eines Zeichens wird > jedes Pixel des Zeichen-Rechtecks durchlaufen und entweder auf > Hintergrund-oder auf Vordergrundfarbe gesetzt. Dadurch muss der Bereich > vorher nicht gelöscht werden. genau, und falls das selbe Zeichen wie vorher gezeichnet wird flackert auch nichts. Sascha
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.