Problema con TouchScreen

Grazie per la risposta. Il da disegnare è inizializzato con

int currentpage = 0;
bool daDisegnare = true;

appena accendo quindi va sulla pagina ZERO e la disegna...
poi ad ognitocco la variabile torna a TRUE...
Ma abbiamo decentrato il problema...
posto questo blocco per spiegarmi meglio:

if (currentpage == 3) {

    //timer utilizzo device
    cli();  // disabilito l'interrupts
    current_millis_value = millis();
    sei();  // abilito l'interrupts

    // overflow millis()
    if (current_millis_value < previous_millis_value)
      m += MAX_MILLIS_VALUE - previous_millis_value + current_millis_value;
    else m += current_millis_value - previous_millis_value;

    seconds += m / 1000;
    m = m % 1000;
    minutes += seconds / 60;
    seconds = seconds % 60;
    hours += minutes / 60;
    minutes = minutes % 60;
    hours = hours % 24;
    previous_millis_value = current_millis_value;
    tft.setTextSize(2);
    tft.setTextColor(NERO);
    tft.setCursor(80, 60);
    tft.fillRect(30, 58, 170, 20, WHITE);
    tft.print(hours);
    tft.print(":");
    tft.print(minutes);
    tft.print(":");
    tft.print(seconds);
    delay(1000);
    //fine timer
  }

Tutto questo papocchio è semplicemente un timer che conta il tempo di utilizzo del devices.
Il codice è racchiuso in "currentpage=3" e funziona correttamente, il probelma è che se all'interno inserisco un "tocco" per andare altrove, non funziona bene, o meglio devo picchiare più volte per prendere il tocco... il codice:

if (currentpage == 3) {

if (p.x > 39 && p.x < 65 && p.y > 155 && p.y < 270) {//questo tocco fa fatica a funzionare...
       currentpage=2;
daDisegnare=true;
      }

    //timer utilizzo device
    cli();  // disabilito l'interrupts
    current_millis_value = millis();
    sei();  // abilito l'interrupts

    // overflow millis()
    if (current_millis_value < previous_millis_value)
      m += MAX_MILLIS_VALUE - previous_millis_value + current_millis_value;
    else m += current_millis_value - previous_millis_value;

    seconds += m / 1000;
    m = m % 1000;
    minutes += seconds / 60;
    seconds = seconds % 60;
    hours += minutes / 60;
    minutes = minutes % 60;
    hours = hours % 24;
    previous_millis_value = current_millis_value;
    tft.setTextSize(2);
    tft.setTextColor(NERO);
    tft.setCursor(80, 60);
    tft.fillRect(30, 58, 170, 20, WHITE);
    tft.print(hours);
    tft.print(":");
    tft.print(minutes);
    tft.print(":");
    tft.print(seconds);
    delay(1000);
    //fine timer
  }

Grazie
Maurizio Filomeni