EVE FT800 Touch Funktion

Gast #4205058
Lesenswert?

Hallo zusammen,
habe das TFT modul ConnectEVE mit dem FT800 chip an meinem PIC32 ans 
laufen bekommen (nur Display Funktionen).

Auch die Funktion zum Kalibrieren des Touch kann ich aktivieren, soweit 
OK.

Aber irgendwie finde ich kein C-Beispiel, wie man die Koordianten des 
Touch auslesen kann?
Bitte um Hilfe.  Danke.
Gruß Dirk
Gast #4205107
Lesenswert?

Da Grafig geht, geh ich mal davon aus, das du irgendeine lib benutzt?
Das heißt du hast auch sowas wie eine ...read32... Funktion?
Jetzt schaust im Datenblatt welche Adresse die Touchregister haben und 
liest sie dir einfach auch. An gleicher Stelle im DB steht auch wie die 
Daten zu interpretieren sind.
Oder geht's dir darum zu schauen, ob ein Objekt welchem einTouchTag 
zugewiesen wurde, getouched wurde?
In diesem Fall siehe oben, nur anderes Register.

Hans
Gast #4205328
Lesenswert?

Hallo Hans,
danke für Deine Antwort!
Ja ich habe bei Microchip eine LIB heruntergeladen und etwas angepasst.

Werde gleich mal die Read32 unktion suchen.

>>>Oder geht's dir darum zu schauen, ob ein Objekt welchem einTouchTag
zugewiesen wurde, getouched wurde?

Was is das denn ? Hat der FT800 etwa eine Funktion, in dem er 
selbstständig erkennt, ob z.B. ein Button gedrückt oder getoggelt wurde 
?

LG Dirk
Gast #4205517
Lesenswert?

Toggeln musst selber machen ( die Slider funktionieren auch so), aber Du 
kannst Objekten eine Tag_ID zuweisen und wenn da wer drauf fingert, 
steht das im REG_TOUCH_TAG (pollen). Alternative kannst dir auch einen 
Interrupt auslösen lassen.

Hans
Gast #4210063
Lesenswert?

Hallo zusammen (oder Hans M.),
das Anwählen von 6 verschiedenen Pages über Buttons habe ich nun 
hinbekommen.
Der FT800 entlastet die MCU schon sehr gut !!

Wie geht das denn jetzt mit den Slidern ?
Muss man dafür die Funktion "Track" verwenden ?
Gruß Dirk
Angehängte Dateien:
Gast #4364560
Lesenswert?

Hallo Dirk,

kannst du mir vielleicht noch eine Hilfestellung geben und zwar wenn ich 
ein Register lesen will so
1
(unsigned int z = rd16(REG_CMD_WRITE);

dann  bleibt bei mir alles bei dem Pfeil unten hängen.

1
    ft_uint16_t rd16(unsigned short long addr){
2
    FT800_StartTransmission();
3
    tr8(addr >> 16);
4
    tr8(addr >> 8);
5
    tr8(addr);
6
    tr8(0); // dummy byte
7
    tr8(0);
8
    ft_uint8_t temp = SSPBUF;
9
    tr8(0);   <----
10
    FT800_StopTransmission();
11
    return ((ft_uint16_t)SSPBUF << 8) | temp;

Hast du oder jemand anders noch eine Idee?

Gruß Franz
Gast #4365842
Lesenswert?

Hallo Franz,
also für einen 32 Bit Zugriff benutze ich direkt die entsprechende 
32-Bit Funktion der o.g. lib.

if (rd8(REG_ID) != 0x7c) state = 0; // Read ID Register, should be 0x7c

if ((calibrated == 0) && (rd32(REG_TOUCH_RAW_XY) != -190))

Mein Display hängt über ein ca. 40 cm langes Flachbandkabel am 
Mainboard.
Vermutlich hierdurch läuft es nur mit bestimmten SPI Frequenzen stabil.
Zur Zeit 500 Khz.
Wesentlich höhere oder kleinere SPI Frequenzen machen nach einigen 
STunden Probleme.....

Gruß Dirk
Gast #4367379
Lesenswert?

Hallo Franz,
doch das mit den Tags klappt recht gut.

Hier ein Beispiel:

  case 901: if (page == 1) {
    cmd_fgcolor(255, 127, 63);
      } else cmd_fgcolor(55, 127, 63);
      cmd(TAG(1));
      cmd_button(0, 231, 69, 36, 27, 0, "Page 1");
      break;

  case 902: if (page == 2) {
    cmd_fgcolor(255, 127, 63);
      } else cmd_fgcolor(55, 127, 63);
      cmd(TAG(2));
      cmd_button(1 * 80, 231, 69, 36, 27, 0, "Page 2");
      break;



      //----------Touch buttons abfragen. 
Seitenumschaltung-----------------------
  case 2: data = rd8(REG_TOUCH_TAG); // Read Touch Register
      if ((data >= 1) && (data <= 6)) page = data; // Wenn Taste 1...6 
gedrkt wurde
      break;
Gast #4367382
Lesenswert?

Nachtrag:
Wenn Objekte gezeichnet werden, die nicht angeklickt werden sollen, 
verpasse den allen TAG 0 !


      //--------------------Bild1--------------------------------------------
  case 100: cmd(TAG(0));
      cmd_gradient(239, 248, 21, 255, 36, 239, 31, 64, 17, 255);

      break;
Gast #4367654
Lesenswert?

Ich habe es so gemacht nur leider steht im REG_TOUCH_TAG immer nur 0 
drin.
1
    cmd(CMD_DLSTART);
2
    cmd(CLEAR(1, 1, 1));
3
    cmd(TAG(1));
4
    cmd_button(159, 112, 152, 47, 27, 0, "True");
5
    cmd(DISPLAY()); 
6
    cmd(CMD_SWAP);
7
    cmd_exec();

Verstehe es nicht!

Gruß Franz
Gast #4367665
Lesenswert?

Also die Funktion  cmd_track()  benutze ich nicht.
Habe es aber bisher auch nur geschafft, einige Touch buttons zu machen.
Die Slider Funktion geht bei mir auch noch nicht.

Als Anlage mein kompletter Code für das Display, für PIC32 mit XC32 
compiler.
Angehängte Dateien:
Gast #4597494
Lesenswert?

Hallo, ich möchte diesen Beitrag nochmal aufwärmen.

Kann mir jemand einen Tipp geben, wie man die Slider Funktioin nutzen 
kann ?

Also einen Schieberegler, den man per Touch verschieben und dann den 
Wert auslesen kann ?

Danke und Gruß  Dirk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren