Forum: Mikrocontroller und Digitale Elektronik touchscreen controller ADS7843 problem


von Andreas H. (andy78)


Lesenswert?

Hallo

habe ein Ledsee 320x240 display mit integrierten Touch Controller.


ich habe diesen code erstellt

Mega 2561 16Mhz

typedef struct
{
  uint16_t x;
  uint16_t y;

} tvalues;

void spi_init(void)
{

ss_high();

TOUCH_cs_high();

SPCR=(1<<SPE)|(1<<MSTR);
SPSR=(1<<SPI2X);
}

void get_touch(tvalues *touchvalues)
{

  //read Y
  TOUCH_cs_low();
    spi_putc(0x9c);
  touchvalues->y = spi_putc(0x00);



  TOUCH_cs_high();

  //read x
  TOUCH_cs_low();
    spi_putc(0xdc);
    touchvalues->x = spi_putc(0x00);



  TOUCH_cs_high();
}

ich bekomme als wert x von 40 bis 60

bei y bekomme ich im ruhe modus 127. in richtung pixel x 0 ist der y 
wert 40 in richtung pixel x 320 ist es 50 dort sollte auch 40 sein.

hat jemand vileicht ein Beispiel???


Vielen Dank

von ... (Gast)


Lesenswert?

hast du denn den ADS vorher initialisiert?

von Andreas H. (andy78)


Lesenswert?

Hallo

wie initialisiert da steht nichts im datenblatt???

Gruß

andy

von ... (Gast)


Lesenswert?

naja,initialisieren ist zuviel gesagt, aber du musst vor jeder Wandlung 
erst ein  Control-Byte senden. Aber ok, machst du ja. Sorry, hatte nicht 
richtig hingeschaut.
Kann noch sein, dass der Touch verschiedene Innenwiderstände in 
x-bzw.y-Richtung hat, dann bekommst du auch unterschiedliche Werte.

von Andreas H. (andy78)


Lesenswert?

Hallo

geht jetzt

void get_touch(tvalues *touchvalues);


void spi_init_Touch(void)
{

ss_high();

TOUCH_cs_high();//CS auf high

SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);
SPSR=(1<<SPI2X);
}


void get_touch(tvalues *touchvalues)
{
  spi_init_Touch();
  //read Y
  TOUCH_cs_low();
    spi_putc(0x98);
  touchvalues->y = spi_putc(0x00);



  TOUCH_cs_high();

  //read x
  TOUCH_cs_low();
    spi_putc(0xd8);
    touchvalues->x = spi_putc(0x00);



  TOUCH_cs_high();




}


muß jetzt nur noch eine Calibrierung schreiben damit ich pixelgenau 
arbeiten kann.

Ich versuche dann auch mal die 12 bit auflösung.


aber so funktioniert es ziemlich gut.

Will das Display mit den fingern bedienen.

Gruß

Andy

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.