touchscreen controller ADS7843 problem

#1962684
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
Gast #1962836
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.
#1962848
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

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