Eve FT800 Grafikunit

  • 1
  • 2
  • 3
  • 7
  • 8
  • 9
  • Page 1 of 9
rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Eve FT800 Grafikunit

 · 
Posted: 28.11.2013 - 13:29  ·  #1
Hallo

da die von mir entwickelte FT800-Unit fast fertig ist, möchte ich mal um "Mitarbeit" bitten.
Was kann diese Unit. Man kann damit LCD-Displays bis 515*512 Pixel mit bis zu 264k Farben betreiben. Der Chip ist kostengünstig zu beziehen, Farnell ruft ca 5,50 € dafür auf und einige Anbieter haben auch ganze Boards im Angebot, die beiden (320*240 und 480*272 Pixel) mit denen ich das entwickelt habe sind von FTDI (Vertrieb Farnell) für ca 60 € zu mir gewechselt.
Der Chip hat nicht wie übelich einen Framebuffer in den man schreiben muß, sondern eine Pipeline in die man fertige Objekt ablegt, so gibt es Tasten, Schieberegler, Uhren, Knobs, Slieder, Progressbars, Linien, Rechtecke, Kreisen, Tachometer, Spinner etc. Ich war zum Anfang auch eher skeptisch ob das funktioniert, aber das ist beeindruckend, quasi Echtzeit. Und das bei Anschluß über SPI+2 Leitung für Powerdown(notwendig) und Interupt(kann) und zusätzlichen CS-ROM(kann). Dazu benutzt der Chip 2 Displaylisten von denen eine zur Anzeige benutzt wird und die anderen kann man schon beschreiben und auf Befehl hin wird zwischen beiden gewechselt. EIne Liste kann 4 KByte groß sein, um eine Progressbar darzustellen braucht man 20 Bytes, wenn man vorher noch die Farben wechselt sind es 32 Bytes. Bei jedem dieser Objekte kann man einstellen ob sie durch auf den integrierten Touchcontroller (inklusive Interupt) reagieren sollen und somit sind mit ein paar Zeilen fertige Screens mit Interaktion fertig. Das ganze wird noch durch die Soundausgabe gekrönt, ok die Jungs bezeichne das als Syntesizer, naja ein klasse Rechteckgenerator, aber um ein Tastenklick zu erzeugen geht nix einfacher, den erzeugt man inklusive Volumkontrolle mit 3 Bytes. Der Chip kann nebenher noch JPEG darstellen und WAV-Dateien abspielen. Dazu ist ein 256 KB großer Buffer im Chip, in dem man diese ablegen kann und dann mit ca 32 Bytes eine solche Grafik anzeigt oder ein WAV abspielt. Da ich festgestellt habe das 256 KB nicht so viel sind, spendiere ich dem Treiber ein SPI-ROM inklusive Verwaltung das man dort bis zu 4 MByte an Dateien vorhalten kann und diese bei Bedarf in den Chip schiebt und dort dann anzeigen kann. Der dazu nötige Resourcenverwalter ist soweit fertig.
Meine Idee ist jetzt der ganzen Sache noch einen Editor zu spendieren um sich die Screens quasi zusammen zuklicken und daher interessieren mich mal Eure Meinungen, wie weit das gehen soll. Im Prinzip erzeugt der grafische Screeneditor dann Source der ungefähr so aussieht:
Code
Procedure DrawMainLoop;
var s:String[32];
Begin
  FT800WaitCmdFIFOIsempty;
  FT800WaitDisplayListIsempty;

  Ft800WriteCMDStart;                                     // Start CMDlist
  SetBackGroundColorRGB(200,200,200);                     //Hintergrund schwarz
  SetClearFlag(True,True,True);
  ClearTag(255);
  s:=ByteToStr(RTCGetHour:2:'0')+':'+ByteToStr(RTCGetMinute:2:'0')+':'+ByteToStr(RTCGetSecond:2:'0');
  SetColorRGB(240,240,240);
  DrawText(350,0,25,0,s);
  s:=ByteToStr(RTCGetDay:2:'0')+'.' +ByteToStr(RTCGetMonth:2:'0')+'.2013';
  DrawText(400,32,21,0,s);
  SetColorRGB(0,0,0);
  DrawLine  (0,49,479,48,1);
  s:=ByteToStr(RTCGetHour:2:'0')+':'+ByteToStr(RTCGetMinute:2:'0')+':'+ByteToStr(RTCGetSecond:2:'0');
  SetColorRGB(240,240,240);
  DrawText(100,60,31,0,s);
  SetColorRGB(255,255,255);
  DrawSlider  (20,272-90-20,440,10,OPT_FLAT,Word(SliderValue),65535,1);    //OK
  DrawProgress(20,272-60-20,440,10,OPT_FLAT,Word(SliderValue),65535,0);    //OK
  if Recording then
    SetVGColorRGB(64,64,64);
    SetColorRGB(32,32,32);
    ClearTag(2);
    DrawButton(000,272-60,130,60,25,OPT_FLAT,'Start',0);
  else
    SetColorRGB(255,255,255);
    if MainPressed=2 then
      SetVGColorRGB(20,20,255);
    else
      SetVGColorRGB(20,20,128);
    endif;
    DrawButton(000,272-60,130,60,25,OPT_FLAT,'Start',2);
  endif;
  if not Recording then
    SetVGColorRGB(64,64,64);
    SetColorRGB(32,32,32);
    ClearTag(3);
    DrawButton(130,272-60,130,60,25,OPT_FLAT,'Stop',0);
  else
    SetColorRGB(255,255,255);
    if MainPressed=3 then
      SetVGColorRGB(20,20,255);
    else
      SetVGColorRGB(20,20,128);
    endif;
    DrawButton(130,272-60,130,60,25,OPT_FLAT,'Stop',3);
  endif;
  SetColorRGB(255,255,255);
  if MainPressed=4 then
    SetVGColorRGB(20,20,255);
  else
    SetVGColorRGB(20,20,128);
  endif;
  DrawButton(260,272-60,220,60,25,OPT_FLAT,'Touch',4);
  SetVGColorRGB(20,20,255);
  if ToggleButton then
    DrawToggle(300,60,80,18,OPT_FLAT,0,'On','Off',5);
  else
    DrawToggle(300,60,80,18,OPT_FLAT,65535,'On','Off',5);
  endif;
  if Recording then
     DrawSpinner(28,10,0,1);

  endif;
  Ft800WriteCMDEnd;
  SwapDisplaylist;
  Ft800CMDUpdate;
end;

  loop
    if TimerOK then
      //PropertyScreen;
      DrawMainLoop;
      TimerOK:=False;
    endif;
    b:=GetTouchValue(wValue);
    if B=1 then
      SliderValue:=wValue;
      b:=Lo(SliderValue shr 10)+64;
      BackLED(b);
      DrawMainLoop;
    else
      if MainPressed<>B then
        if (B=0) and (MainPressed<>0) then                   //Taste wurde losgelassen, also ausführen
          if MainPressed=4 then
            StopSound;
            DrawPropertyScreen;
          elsif MainPressed=5 then
            ToggleButton:=not ToggleButton;
            PlaySound($51,0,127);
          elsif MainPressed=2 then
            Recording:=True;
            DrawMainLoop;
          elsif MainPressed=3 then
            Recording:=False;
            DrawMainLoop;
          endif;
        elsif (B<>0) and (MainPressed=0) then                //neue Taste erkannt
          if Touch[B-1].PlaySound then                      //Ton abspielen
            PlaySound(Touch[B-1].Note,Touch[B-1].Effect,Touch[B-1].Volume);
          endif;
        endif;
        MainPressed:=B;
        DrawMainLoop;
      endif;
    endif;
  endloop;

Das ist der Source für das Mainfenster im Demovideo. Der Editor übernimmt eigenständig Optimierungen, bei der Farbeinstellung, wenn also alle keine Farbe gewechselt wird werden auch keine Befehle dafür erzeugt. Desweiteren dachte ich mir, das man als Farbe nicht unbedingt das gesamt Spectrum benutzt sondern dies aus eine Palette nimmt, das spart (so denke ich mir) ein bisschen Source, weil man dann ja nur ein Byte und nicht 4 benutzt. Und mal ehrlich, was will man auf so einem Display mit 256k Farben, schon 256 Farben aus 256 K Farben sind gewaltig. Da betrifft nicht Grafiken, die werden im Orginal angezeigt. Aber jeder Button hat nun mal nur eine Farbe für Disable, eine für gedrückt und eine für Normal, und ich denke kaum einer wird 200 Buttons darstellen und jeder soll eine andere Farbe haben. Im Anhang ist noch die MPG-Datei mit der man sich das ganze mal anschaun kann, oder hier der Link für die YouToub-Variante
FT800-Eve-Demo
So das sollte erstmal reichen, ich freue mich auf Anregungen, Wünsche, Kritik etc.

cu rage

P.S: Piceditor neue Version vom 27.05.2019
Piceditor
You must be logged in or your permissions are to low to see this Attachment(s).
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2077
Registered: 03 / 2003
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 28.11.2013 - 15:47  ·  #2
Hi Rage,

ich finde das klasse was du in so kurzer Zeit geschafft hast. Ich hatte ja das Vergnügen währen der Entwicklung mitzuspielen (auf dem Mikroelektronica- Display). Der Editor sieht auch schon super aus .... bzw das was er an Quellcode macht. Könntest du mal einen Screenshot vom Editor zeigen ?
Was der letztendlich kann oder können soll wird sich wohl erst bei der praktischen Anwendung zeigen.

Gruss
Harry

PS: Bin grad dabei endlich mal den Lautsprecher dran zu klemmen
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2077
Registered: 03 / 2003
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 30.11.2013 - 23:17  ·  #3
'n Abend rage :) ,

hatte grad ein Problem und dachte schon irgendwas hat den Geist aufgegeben: Spannung angeschlossen und ...... nix. Nochmal getestet und ..... nix. Reset des Controllers gedrückt ..... nix. Reset gedrückt, gehalten, Spannung angeschlossen und Reset losgelassen ..... nix. Spannung angeschlossen, Display ausgesteckt, eingesteckt, Reset ..... geht. Hmmmmmm seltsam. Ich bau mal ein paar MDelays ein. Wenns dann mal geht, kann ich so oft Reset drücken wie ich will, es geht immer.

Gruss
Harry
rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 01.12.2013 - 20:07  ·  #4
Hallo Harry

ich habe bis jetzt das ganze auf Palettenfarben umgerüstet. Der Vorteil ist deutlich übersichtlicher Source, der Designer erzeugt dann deutlich übersichlicheren und kompakteren Source:
Code

{******************************************************************************}
{Zeichnet komplettes Fenster, Pressed der gedrückte Button andere Werte sind   }
{global und spielt entsprechenden Sound ab                                     }
{******************************************************************************}
Procedure DrawMainLoop;
var s:String[12];
Begin
 s:=ByteToStr(RTCGetHour : 2 : '0')+':'+ByteToStr(RTCGetMinute : 2 : '0')+':'+ByteToStr(RTCGetSecond : 2 : '0');
 FT800_InitScreen;
 FT800_DrawText_Pal    (350,  0, 25,  0, s);
 s:=ByteToStr(RTCGetDay : 2 : '0')+'.' +ByteToStr(RTCGetMonth : 2 : '0')+'.2013';
 FT800_DrawText_Pal    (400, 32, 21,  0, s);   
 FT800_DrawLine_Pal    (  2, 49,479, 48, 1, clBtnText);
 FT800_DrawSlider_Pal  (20, 272-90-20, 440, 10, Word(SliderValue), 65535, (MainPressed=1),True,1); 
 FT800_DrawProgress_Pal(20, 272-60-20, 440, 10, Word(SliderValue), 65535, False,True,0);    
 FT800_DrawButton_Pal  (000, 272-60, 130, 60, 25, 'Start'      , (MainPressed=2), True, 2);
 FT800_DrawButton_Pal  (130, 272-60, 130, 60, 25, 'Stop'       , (MainPressed=3), True, 3);
 FT800_DrawButton_Pal  (260, 272-60, 220, 60, 25, 'Einstellung', (MainPressed=4), True, 4);
 FT800_DrawToggle_Pal  (300, 60, 80, 18, ToggleButton, 'On', 'Off', (MainPressed=5),True,5);
 FT800_SwapScreen;
end;

Das ganze muß jetzt noch ein wenig optimiert werden, um die Größe ein wenig einzudampfen, aber ich bin zufrieden damit.
Den Fehler habe ich schon mal gesehen, aber leider nie mit angeschlossen Debugger, also weiß ich noch nicht was da schief geht. Ich vermute mal, das der Chip nicht aus dem Schlafmodus kommt und sich demzufolge die Schleife die darauf wartet nie beendet. Dort müsste dann ein Timeout mit rein und das ganze einfach nochmal. Den source schicke ich Dir und Herrn Hofmann nachher noch zu.

cu rage
Avra
Schreiberling
Avatar
Gender:
Location: Belgrade, Serbia
Age: 53
Homepage: rs.linkedin.com/in…
Posts: 653
Registered: 07 / 2002
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 04.12.2013 - 08:16  ·  #5
This looks very good. I can't wait to see the screen designer...
kokisan2000
 
Avatar
 
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 28.12.2013 - 22:31  ·  #6
Hallo rage,

gibt es schon Neuigkeiten zu Deinem Projekt?

Gruß
kokisan
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 29.12.2013 - 17:40  ·  #7
Hallo Kokisan,

wir werden immer besser. Ein paar Erweiterungen fehlen noch.
Dann ist der wysiwyg Graphic Designer noch eine grössere Baustelle.
Aber wie immer, es dauert alles viel länger als gedacht. :angry7:
Ich hoffe ich kann in einer Woche mal ein Demo online stellen.

rolf
You must be logged in or your permissions are to low to see this Attachment(s).
rage
Benutzer
Avatar
Gender: n/a
Age: 64
Homepage: processanalytik.de
Posts: 235
Registered: 02 / 2007
Subject:

Re: Eve FT800 Grafikunit

 · 
Posted: 05.02.2014 - 23:03  ·  #8
So, wie Herr Hofmann schon sagte, es dauert immer länger, dafür finde ich ist es aber auch recht gut geworden. Will damit sagen, ich habe fertig. Der FT80-Treiber ist fertig. Sicherlich wird es noch den einen oder andere Bug geben und sicherlich den ein oder anderen Wunsch. Alle Controls oder wie die EVE-Leute sagen Widget, können transparent gezeichnet werden, es können Grafiken und größere Schriftarten verwendet werden. Desweiteren beinhaltet der Trieber die Verwaltung maximal zweier AT45DBxxx-SPI-Roms, in denen die Grafiken, Schriften, Sounds und binäre Dateien gespeichert werden können, somit belegen sie keinen wertvollen Flashspeicher. Im anhängenden Video sieht man den Treiber in Aktion mit Software-SPI, da sieht man wunderbar die Leistungsfähigkeit des Chip. Sowas würde man mit normalen LCD-Displays mit Busanschluß nie und nimmer hingekommen, denke ich zumindestens.

[youtube]http://youtu.be/EZ6LWVHtU_Q[/youtube]

Geht der youtoube-Eintrag nur bei mir nicht?
Demo auf Youtoube
  • 1
  • 2
  • 3
  • 7
  • 8
  • 9
  • Page 1 of 9
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: 14 · Cache Hits: 14   134   148 · Page-Gen-Time: 0.033351s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI