T6963

.... alt aber interessant

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

T6963

 · 
Posted: 07.09.2015 - 15:23  ·  #1
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).
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 :D
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).
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 17:31  ·  #2
Super Harry, das werde ich diese Woche auch testen.

Edit1
Harry ich Design doch gerade eine Platine mit dem AtXmega und den
SN74LVC8T245 wegen Pegelwandler am T6963,

Dann müssten wir nur DIR am SN74LVC8T245 richtig schalten.


Gruß Frank
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 17:58  ·  #3
Nene Frank,

die Platine machst du schon selber, mich interessiert das Thema momentan nur, weil ich ebenfalls ein 5V-LCD an einen XMega anschliessen will. Dummerweise wird dieses Display (kein T6963!) normalerweise auch read-modify-write betrieben und ist mir deshalb zu langsam.

Gruss
Harry
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 18:13  ·  #4
Ja sicher mache ich die Platine selber.
Mir gings nur um den DIR in deinem Demo Programm, wegen Ein-Ausgang.


Gruß Frank
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 20:17  ·  #5
Ich hab jetzt den Refresh komplett neu geschrieben, aber schneller wird es deshalb auch nicht - seltsam. Ganz im Gegenteil: durch die optimierte (und schnellere) Ausgabe mußte ich 10 NOPs einfügen. Schade.
Wer experimentieren will: Die NOPs an das Display anpassen. Wenn es zu wenig sind, merkt man das ganz schnell an der Displayausgabe ;) :D
Code

Procedure chDispRefresh2;
  Var Counter : Word;
  Begin
    Address(RAMZero);
    ComWR($B0);
    LCD_Data_Dir:=255;
    Excl(LCD_CD);
    Excl(LCD_WR);
    For Counter:=0 to 1919 do
      LCD_Data_Out:=GraphColArr[Counter];
      Excl(LCD_CS);
      NOP; NOP; NOP; NOP; NOP;
      Incl(LCD_CS);
      NOP; NOP; NOP; NOP; NOP;
      EndFor;
    Incl(LCD_WR);
    LCD_Data_Out:=255;
    LCD_Data_Dir:=0;
    ComWR($B2);
  End chDispRefresh2;


Gruss
Harry

[Edit]Die For-Next-Schleife ist natürlich an die Größe des Grafikarrays anzupassen ;)
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 21:13  ·  #6
Hallo Harry,

Display Prozessoren, wie z.B. der 6963, sind auf ultra low power getrimmt
und sind deshalb relativ lahm. Moderne Teile sind wesentlich flotter.

rolf
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2080
Registered: 03 / 2003
Subject:

Re: T6963

 · 
Posted: 07.09.2015 - 21:57  ·  #7
Hallo Rolf,

ja das war mir schon klar, mal abgesehen davon, daß dieser Controller schon einige Jahre auf dem Buckel hat. Immerhin ist die Displayausgabe mit readonly deutlich schneller und RAM ist in den heutigen Megas/XMegas mehr als genug vorhanden. Ich sage mal für mich: Ziel erreicht :)

Gruss
Harry
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   122   136 · Page-Gen-Time: 0.038986s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI