LCD Graphic-Display auteilen

  • 1
  • 2
  • 3
  • Page 1 of 3
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 09:17  ·  #1
Hallo Leute,

ich möchte gerne die Anzeige in 2 Bereiche aufteilen und unterschiedlich aktualisieren lassen. (siehe Bild).


Der Bereich 1 muss zyklisch aktualisiert werden, der Bereich 2 nur bei Änderungen bzw. bei einer Eingabe.
ich gehe mal davon aus, das bei einem
Code
gDispRefresh;

Immer das ganze Display einen Refresh macht, aber hier könnte man Rechenzeit sparen und das würde ich gerne machen und diese beiden Bereiche irgendwie auftrennen.

Kann ich das irgendwie mit dem Viewports verbiegen?
Wenn ich das richtig verstanden habe, kann ich mit Viewports immer nur den ganzen Bereich umschalten oder?

Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 11:31  ·  #2
Hallo Thorsten,
ein teilweiser Refresh ist theoretisch denkbar. Aber das würde ziemliche
Mathe benötigen und bringt wahrscheinlich nichts oder nicht viel.
Viewports sind logische Einheiten und wirken sich auf den Display Refresh
nicht aus.

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

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 16:08  ·  #3
Hallo Thorsten,

wenn du Probleme mit der Rechenleistung hast, dann spendier doch deinem LCD einen eigenen Prozessor.

Gruss
Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 18:10  ·  #4
Quote by Harry

Hallo Thorsten,

wenn du Probleme mit der Rechenleistung hast, dann spendier doch deinem LCD einen eigenen Prozessor.

Gruss
Harry


Hallo Harry,

Layout und Gerät ist fertig :-) Da wird jetzt nix mehr geändert, EMV ist durch jetzt kommt noch der TÜV :-D

Ich habe da ein paar Punkte, die ich vermeiden möchte:
1. Die Hauptroutine (Türsteuerung) darf zu keiner ZEIT irgendwie
Probleme mit der Abarbeitung bekommen.
2. Das Display Bereich 1 muss regelmäßig aktualisiert werden mind. alle 2s

3. Ich muss mir eine Menüeingabe erzeugen, die ich am besten als Funktion aufrufen kann.
z.B.
Code

 Datum:= getDate( RTCDate );     

Darin sollte auch das Eingabemenü erzeugt werden und mit WaitPipe() würde ich hier gerne auf Tasten, genau an dieser Stelle warten. Aber die Fußzeile muss regelmäßig einen Refresh erhalten. Also kann ich nicht den ganzen DispMenu Process schlafen legen. Deswegen wollte ich das gerne trennen. Und bin gerade am austüfteln einer möglichen Lösung.

Im Moment bin ich am überlegen ob ich noch einen weiteren Task oder Prozess dazu nehme, evtl. so:

Process DispEingabe...
Hier rufe ich de Eingabe und Menüfunktionen auf und lege diese mit WaitPipe() schlafen, wenn keine Daten in der Pipe sind.

Process DispBott...
Hier mache ich die Fußzeile und erzeuge mit "gDispRefresh;" ein Refresh.


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

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 19:39  ·  #5
Hallo Thorsten,

also wenn du die Schrift in der oberen Zeile noch 1 Pixel höher setzt, so daß oben nur 8 Pixel vertikal upgedated werden müssen, dann brauchst du doch nur den Anfang des Display-RAMs adressieren und vom Display-Array die ersten 256 Byte senden. Unten genau so: Adresse auf den letzten Block und die letzten 256 Byte des Arrays raus schicken.

Harry
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 19:39  ·  #6
Hallo rolf,

sag mal die Funktion gDispRefresh schreibt doch einfach nur die Daten vom DispRam zum LCD Display oder?

Und das mit der Funktion, CMD 1:
Code
UserDevice GraphIOS (cmd : byte; data : byte);
begin
// commands passed to user defined function "GraphIOS"
// cmd 0 set row address data = row
// cmd 1 write data byte data = content
if cmd = 0 then
  display_address( 0, data);  // set row addr = data

else
  DispBW2RGB( data );
endif;
end GraphIOS;


Oder? Dann könnte ich ja auch gezielt nur den Teil schreiben der für mich aktuell wichtig ist.

@Harry,
genau so meine ich es :-D

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

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 19:41  ·  #7
Lies mal über deinem letzten Post ;)
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: LCD Graphic-Display auteilen

 · 
Posted: 07.05.2018 - 20:35  ·  #8
Quote by Harry

Lies mal über deinem letzten Post ;)


Sag mal wie komme ich an den Pointer für den Speicher LCDGrapic ?

Hast Du eine Idee dazu?

Nachtrag:

Habe es mir gerade aus dem ASM-Listing gezogen, ich denke das sollte dann die Adresse sein :-)

Code
   viewPtr:= @GraphColArr;


Ist das eigentlich das gleich, wenn ich auf den "ViewPortPTR" zugreife und diesen verwende?
Und sind diese Schlüsselworte irgendwo dokumentiert? Im Handbuch habe ich nichts gefunden.
  • 1
  • 2
  • 3
  • Page 1 of 3
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   138   152 · Page-Gen-Time: 0.021819s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI