S65-Display/Display3000

Stack underflow?

miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 59
Posts: 957
Registered: 09 / 2007
Subject:

Re: Stack underflow?

 · 
Posted: 19.04.2024 - 22:52  ·  #17
Hallo wilbo,
einfacher wäre es vielleicht so:

Code
procedure Letter(X: byte; Y: byte; VG: word; HG: word);
var
  Z, LX, LY,LC mask: byte;
begin
  Z:= 0;
  for LY:= 0 to 7 do
    mask:= 1;
    LC:= CharSet[LY];    // im nicht 7 x ins Flash greifen zu müssen, das kostet Zeit
    for LX:= 0 to 7 do
      if (LC and mask) > 0 then
        //Lcd_Plot(X + LX, Y + LY, VG);
      else
        //Lcd_Plot(X + LX, Y + LY, HG);
      endif;
      mask:= mask shl 1;
    endfor;
    Inc(Z);
  endfor;
  // LCD_Window(0, 0, Window_Width - 1, Window_Height - 1);
end;



Gruß
miparo
wilbo
Benutzer
Avatar
Gender:
Age: 68
Posts: 27
Registered: 11 / 2023
Subject:

Re: Stack underflow?

 · 
Posted: 23.04.2024 - 15:39  ·  #18
Hallo Miparo,

vielen Dank für den Hinweis ich habe das jetzt so umgesetzt

Code
Procedure Letter(X : Byte; Y : Byte; VG : Word; HG : Word);
Var
  Z, LX, LY, LC : Byte;
  CharArr       : TCharArr;
Begin
  // dies display lässt sich wohl linear beschreiben dazu muß ich den aufbau
  // der fontdaten erst besser verstehen das sollte dann deutlich schneller
  // sein als für jedes pixel LCD_Plot aufrufen
  //Lcd_Window(X,Y,X+8,Y+9);
  // Verbesserung von Miparo häufige Flashzugriffe vermeiden jetzt 8 mal pro Buchstabe
  For Z := 0 To 7 Do
    CharArr[Z] := Font1[Ord('B') - 31, Z];
  Endfor;
  For LY := 0 To 7 Do
    LC := CharArr[LY];
    Z := 7;
    For LX := 0 To 7 Do
      //mDelay(100);
      If Bit(LC, LX) Then
        //SPIoutWord(swap(VG));
        Lcd_Plot(X + Z, Y + LY, VG);
      Else
        //SPIoutWord(swap(HG));
        Lcd_Plot(X + Z, Y + LY, HG);
      Endif;
      Dec(Z);
    Endfor;
  Endfor;
  LCD_Window(0, 0, Window_Width - 1, Window_Height - 1);
End;


@all
Das ganze soll einmal eine ansteuerung für ein 132*176 Farb G_LCD.
Durch lesen im Forum bzw. in den Handbüchern habe ich den Eindruck, dass die Grafiktreiber den Inhalt immer im Ram aufbauen. Da ich dann ja min. 23KB Ram benötigen würde wird das mit einem Mega128 wohl nichts. Habe ich da was falsch verstanden? In den Demos fand ich ein Beispiel XGraph_TFT160x128 da hat der MC aber nur 16KB Ram bei 160*128?
Ich hänge mal de Code an wo ich im Moment stehe.
You must be logged in or your permissions are to low to see this Attachment(s).
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 59
Posts: 957
Registered: 09 / 2007
Subject:

Re: Stack underflow?

 · 
Posted: 23.04.2024 - 15:45  ·  #19
Hallo wilbo,
mein
Quote
if (CharArr[Z] and (1 shl LX)) > 0 then

ist einfach nur die klassische Methode und funktioniert immer, egal ob flash/ram oder eeprom.

Dieses kleine CharArr Array ist evtl besser als structConst dann wird es beim booten ins RAM geladen und es ist kein weiterer Flash Zugriff mehr nötig, da die > 64kB Flash aufwändiger sind.

Ansonsten ist für Grafik Harry der Fachmann.

Gruß
miparo
wilbo
Benutzer
Avatar
Gender:
Age: 68
Posts: 27
Registered: 11 / 2023
Subject:

Re: Stack underflow?

 · 
Posted: 23.04.2024 - 15:58  ·  #20
Hallo miparo,

da hab ich wohl was falsch verstanden, werde es probieren. Danke
Dann werde ein neues Thema aufmachen und Harry direkt ansprechen. Auch dafür Danke.

Gruß wilbo
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 59
Posts: 957
Registered: 09 / 2007
Subject:

Re: Stack underflow?

 · 
Posted: 23.04.2024 - 16:01  ·  #21
Es führen viele Wege nach Rom :)

Quote
if (LC and (1 shl LX)) > 0 then

geht auch .

oder CharArr als structConst, da kannst du auch beim Bit(x,y) bleiben.

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

Re: Stack underflow?

 · 
Posted: 24.04.2024 - 09:16  ·  #22
Quote by wilbo

Durch lesen im Forum bzw. in den Handbüchern habe ich den Eindruck, dass die Grafiktreiber den Inhalt immer im Ram aufbauen.

Hallo Wilbo,

das ist bei Farbdisplays nicht der Fall :)

Den Rest lese ich mir gleich noch durch.

Gruss
Harry

..... jetzt wird mir einiges klar, du hast ein Display aus einem Siemens S65, das zusammen mit einem uC-Board von Display3000 verkauft wird. Gibts den echt noch? :D Bei DEN Preisen?
Vielleicht hilft dir das weiter (Anhang).
Hast du die ProgAnleitung von Display3000? Die kann ich dir leider nicht geben, da sie personalisiert ist, d.h. mein Name steht da drin. Ja ich hab selber 2 von den Displays seit 2007 rum liegen .... ich komme nicht dazu.

https://www.mikrocontroller.net/topic/43623 ..... ganz unten ein bisschen C zu dem Display
You must be logged in or your permissions are to low to see this Attachment(s).
wilbo
Benutzer
Avatar
Gender:
Age: 68
Posts: 27
Registered: 11 / 2023
Subject:

Re: Stack underflow?

 · 
Posted: 24.04.2024 - 11:42  ·  #23
Hallo Harry,

erstmal mal vielen Dank für deine Rückmeldung. Ja das ist es liegt bestimmt schon 10..15 Jahre tot im Schrank. Anleitung und Beispielprogramm habe ich, aber meine C - Kenntnisse sind ähnlich gut wie mein chinesisch. Anhand von dem C-Programm habe ich aber zumindest das in meinem letztem Beitrag angehängt Programm hinbekommen. Etwas hinderlich war dabei das SpiOutWord Hi und Lo Byte vertauscht. Was ich dann durch eine Beitrag hier im Forum rausbekommen habe. Aber ich neige dazu den Fehler erstmal bei mir zu suchen.
Frage gibt es hier ein Beispiel an dem ich mich orientieren kann?

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

Re: Stack underflow?

 · 
Posted: 24.04.2024 - 12:31  ·  #24
Hi Wilbo,

Vorschlag: Ich krame mein Display raus und wir versuchen das zusammen zu entwickeln. Gibt mir aber ein bisschen Zeit.
Vielleicht fällt mir dann auch noch ein vernünftiger Einsatzzweck dafür ein. Das Ding kann, soweit ich mich erinnere, nur über JTAG programmiert werden?

Gruss
Harry

..... achja irgendwer hier im Forum hatte das mal am Laufen und irgendwo sollte ich dessen Code haben.

..... nein ISP geht auch. Mal schauen, evtl. komme ich heute noch dazu zumindest deinen Code zu testen.

..... achja es gibt Beispiele (mit XMegas) für Farbdisplays. Da siehst du auch, daß im Display gearbeitet wird. Schau mal im Profi-Handbuch unter 3.6.2.4 Farb/TFT Controller
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   136   150 · Page-Gen-Time: 0.034975s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI