Hallo @ all,
es hat mir keine Ruhe gelassen, wieso meine alten Displays mit dem T6963-Controller so langsam sind - man kann beim Bildaufbau wirklich zuschaun - und hab mich nach Studium von Rolfs Beispielquellcode gefragt: Wieso read-modify-write ?
Also hab ich das auf readonly umgebaut und das Display - der Bildaufbau - ist gefühlt mindestens 10x schneller
Einziges Problem: der gDispRefresh funktioniert so nicht und wurde durch mein chDispRefresh ersetzt. Der Grund: UserDevice GraphIOS erwartet bei cmd=0 das setzen der Grafikadresse auf X-Position 0 und Y-Position+Arg (quasi die Zeile). Der Treiber schreibt also immer eine Zeile und positioniert danach den Startpunkt neu. Der T6963 kann jedoch komplett linear beschrieben werden, ohne daß der Zeilenanfang immer neu gesetzt wird, bzw. neu gesetzt werden darf.
UserDevice mit cmd=0 wird bei mir nicht verwendet (NOP).
Procedure chDispRefresh;
Begin
Address(RAMZero); // RAM-Adresse auf Anfang
ComWR($B0); // kontinuierliches Schreiben einschalten (set data Auto write)
gDispRefresh; // Displayrefresh
ComWR($B2); // Auto Reset LCD (auto write off)
End chDispRefresh;
Refresh eines 240x64 Pixel LCDs <90ms
Gruss
Harry
[Edit]Sorry noch eine Änderung - GraphIOS in seiner einfachsten Form
UserDevice GraphIOS(cmd:Byte;Arg:Byte);
Begin
If cmd=1
then
WriteData(Arg);
EndIf;
End;
[Edit2]Das ging doch bestimmt noch schneller, wenn man das Grafik-Array mit einer eigenen Procedure selber überträgt und so das GraphIOS umgeht. Mal testen ......
es hat mir keine Ruhe gelassen, wieso meine alten Displays mit dem T6963-Controller so langsam sind - man kann beim Bildaufbau wirklich zuschaun - und hab mich nach Studium von Rolfs Beispielquellcode gefragt: Wieso read-modify-write ?
Also hab ich das auf readonly umgebaut und das Display - der Bildaufbau - ist gefühlt mindestens 10x schneller
Einziges Problem: der gDispRefresh funktioniert so nicht und wurde durch mein chDispRefresh ersetzt. Der Grund: UserDevice GraphIOS erwartet bei cmd=0 das setzen der Grafikadresse auf X-Position 0 und Y-Position+Arg (quasi die Zeile). Der Treiber schreibt also immer eine Zeile und positioniert danach den Startpunkt neu. Der T6963 kann jedoch komplett linear beschrieben werden, ohne daß der Zeilenanfang immer neu gesetzt wird, bzw. neu gesetzt werden darf.
UserDevice mit cmd=0 wird bei mir nicht verwendet (NOP).
Code
Procedure chDispRefresh;
Begin
Address(RAMZero); // RAM-Adresse auf Anfang
ComWR($B0); // kontinuierliches Schreiben einschalten (set data Auto write)
gDispRefresh; // Displayrefresh
ComWR($B2); // Auto Reset LCD (auto write off)
End chDispRefresh;
Refresh eines 240x64 Pixel LCDs <90ms
Gruss
Harry
[Edit]Sorry noch eine Änderung - GraphIOS in seiner einfachsten Form
Code
UserDevice GraphIOS(cmd:Byte;Arg:Byte);
Begin
If cmd=1
then
WriteData(Arg);
EndIf;
End;
[Edit2]Das ging doch bestimmt noch schneller, wenn man das Grafik-Array mit einer eigenen Procedure selber überträgt und so das GraphIOS umgeht. Mal testen ......
You must be logged in or your permissions are to low to see this Attachment(s).