Forum: Mikrocontroller und Digitale Elektronik EVE FT800 Touch Funktion


von DirkF (Gast)


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

von Hans M. (Gast)


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

von DirkF (Gast)


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

von Hans M. (Gast)


Lesenswert?

Jup ;-) und bitte schau dir das mal an:
http://www.ftdichip.com/Support/Documents/ProgramGuides/FT800%20Programmers%20Guide.pdf
Stichworte: Touch und Tag

Hans

von Hans M. (Gast)


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

von DirkF (Gast)


Lesenswert?

Super Danke Hans !!!

von DirkF (Gast)


Angehängte Dateien:

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

von Franz (Gast)


Lesenswert?

Hallo DirkF,

welche LIB hast du da verwendet?

Gruß Franz

von Dirk F (Gast)


Lesenswert?

Hallo, habe diesen Link im Microchip forum gefunden:

https://github.com/guillaumesmo/FT800

Gruß Dirk

von Franz (Gast)


Lesenswert?

Hallo Dirk,

danke für den Link.
Kannst du mir sagen wie das mit dem lesen der Register funktioniert 
komme da irgendwie gar nicht klar.

Gruß Franz

von Franz (Gast)


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

von Dirk F (Gast)


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

von Dirk F (Gast)


Lesenswert?

Nachtrag:
Nach jedem SPI Transfer unbedingt den Puffer auslesen !!!!

int _dummy;
#define tr8(value)   SPI4BUF = value;while(!SPI4STATbits.SPITBE); _dummy 
= SPI4BUF;

von Franz (Gast)


Lesenswert?

Hi also kann jetzt per SPI auslesen hat geklappt!!!!  Danke

Wenn ich fragen darf wie geht es mit der TAG_ID Zuweisung bei mir klappt 
das irgendwie gar nicht.

Gruß Franz

von Dirk F (Gast)


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;

von Dirk F (Gast)


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;

von Franz (Gast)


Lesenswert?

Hallo Dirk,

die Funktion cmd_track() brauche ich doch auch wenn ich das richtig 
verstehe.

Gruß Franz

von Franz (Gast)


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

von Dirk F (Gast)


Angehängte Dateien:

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.

von Dirk F (Gast)


Lesenswert?

Nachtrag:
Nach dem Einschalten musst Du den Touch erst kalibrieren, sonnst kannst 
Du auch keine Objekte anklicken......

von Franz (Gast)


Lesenswert?

Hi also hat alles funktioniert der Fehler lag in der SPI Konfiguration.
Danke Danke

von Dirk F (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.