Touchscreen dauerhaft während Programm abfragen

ProgoX:
Da ich das Projekt aber in der Firma mache, gelten dann auch die dortigen Richtlinien...

Das ist natürlich richtig. Andererseits muß Dir aber auch die Möglichkeit gegeben werden, einen Bericht über Deine Arbeiten anzufertigen. Ich habe ein Praktikum gemacht, wo am Werkstor genau geprüft wurde. Da habe ich meinen ausbildenen Meister um Hilfe gebeten, weil ich ja nichts falsch machen wollte. Daraufhin wurden mir von der Firma Kopien zur Verfügung gestellt, die ich mitnehmen durfte.

An Deiner Stelle würde ich also fragen, ob der Sketch kritische Abschnitte enthält. Diese könntest Du durch unkritische Berechnungen gleichen Typs ersetzen. Da sollte Dich Dein Ausbilder unterstützen.

gregorss:
... Du erledigst die Abfrage des Touchscreens in einem Interrupt.

Wenn alle Maßnahmen, blockierenden Code zu vermeiden, keinen Erfolg zeigen, kannst Du diesen Tipp umsetzen. Dazu habe ich aus einem Beispiel einen kleinen Sketch gemacht, der das Prinzip zeigen soll:

// Abgeleitet von FlashLed.pde
#include <MsTimer2.h>

const int led_pin = LED_BUILTIN;  // 1.0 built in LED pin var

void flash()
{
  // Stattdessen koennte alle 30 ms die Abfrage des Touchscreens erfolgen.
  digitalWrite(led_pin, !digitalRead(led_pin));
}

void setup()
{
  Serial.begin(9600);
  Serial.println("Programmanfang");
  pinMode(led_pin, OUTPUT);

  MsTimer2::set(30, flash); // Alle 30 ms wird das normale Programm unterbrochen und per Interrupt flash aufgerufen
  MsTimer2::start();
}

void loop()
{
  delay(1000);  // Dies wird durch die langwierigen Berechnungen ersetzt
  Serial.print("Zeit seit Reset: ");
  Serial.println(millis());
}