touchscreen tft interrup-abile?

Salve a tutti,
nela realizzazione di un mio progetto, avrei necessità di eseguire delle routine quando viene toccato un pulsante mappato sul display tft, senza interrompere il loop(). Qualcosa che mi dicesse: "è stato toccato il display, eseguo la routine pippo". Questa routine andrebbe a verificare se è stato toccato un pulsante! Al momento ho 2 routine:

void checkButtonPressed(){
  p = waitOneTouch(); //p e j sono TSPoint
  j=p;
  p.x=mapXValue(j);
  p.y=mapYValue(j);
  for (uint8_t b=0; b<BUTTONS; b++) {
    if (buttons[b].contains(p.x, p.y)) {
        // Action
        switch  (b) {
          case BUTTON_0:

              Serial.println("Toccato 0");
              break;
          case BUTTON_1:
              // Clear
              Serial.println("Toccato 1");
              break;
          case BUTTON_2:

              Serial.println("Toccato 2");
              break;
        }
    }
  }
}

TSPoint waitOneTouch() {
  TSPoint p;

  do {
    p= ts.getPoint(); 

    pinMode(XM, OUTPUT); //Pins configures again for TFT control
    pinMode(YP, OUTPUT);
  } while((p.z < MINPRESSURE )|| (p.z > MAXPRESSURE));
  return p;
}

C'è la possibilità di fare qualcosa del genere? il touchscreen utilizza gli SPI di un arduino mega e quindi pin 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS).

grazie 1000

Dato che il controller touch è uno spi slave non puoi avere un interrupt quando tocchi il touch, a meno che non ci sia in pin dedicato a questa funzionalità, cosa che non ho mai visto su i touch low cost usati con Arduino.
Per forza di cose devi fare il polling della funzione, quale dipende dalla libreria, che interroga il touch per sapere se ci sono dati disponibili, però la puoi mettere tranquillamente nel loop, richiede una manciata di microsecondi per essere eseguita se non ci sono dati in sospeso sul touch.

astrobeed:
Dato che il controller touch è uno spi slave non puoi avere un interrupt quando tocchi il touch, a meno che non ci sia in pin dedicato a questa funzionalità, cosa che non ho mai visto su i touch low cost usati con Arduino.
Per forza di cose devi fare il polling della funzione, quale dipende dalla libreria, che interroga il touch per sapere se ci sono dati disponibili, però la puoi mettere tranquillamente nel loop, richiede una manciata di microsecondi per essere eseguita se non ci sono dati in sospeso sul touch.

grazie 1000 Astro, ho rivisto un po' tutta la loop() ed ho fatto come mi ha suggerito (pooling)... diciamo che funziona piuttosto bene per quanto deve fare (poi non ho provato a sditacciare tutto il display per vedere se mi sta dietro, ma direi che non mi interessa nemmeno troppo :P)