Arduino DUE Interrupt Problem

Servus,
ich will (muss) ne Wetterstation bauen mit meinem Arduino DUE, Sensoren auselesen und Hintergrundbild laden geht schon (screen1.
Nun will ich einen Screen2 machen in dem man ne Uhrstellen kann oder die IP EInstellungen von meinem Ethernet Shield 2 ändern kann, bevorzugt erreichbar über einen Interrupt.

Jedoch beim test läuft mein Programm direkt in den Screen2 und bleibt dort hängen obwohl Pin8 direkt auf +3,3V liegt.
Hat jemand eine Erklärung dafür?

[code]
/*
 Vorgaben:
   - Wetterstation Temperatur, Luftdruck, Luftfeuchtigkeit über I²C
   - Echtzeituhr mit Timerbaustein und absicherung AKKU
   - Firmenloge Rechtsoben in der Ecke und am besten Beim Booten
   - Setup für IP Einstellungen
   - Erweiterbar für Kalibrierungen sein
   - Touchscreen und Stouch haben
   https://www.itead.cc/wiki/ITDB02-5.0
   https://www.conrad.de/de/uhr-zeitnahme-ic-echtzeituhr-stmicroelectronics-m41t11m6f-uhrkalender-so-8-1185347.html
 */

#include <UTFT.h>
#include<URTouch.h>
#include <SPI.h>
#include "SdFat.h"
#include <UTFT_SdRaw.h>
#include <Wire.h>
// Einbinden der Bibliotek

extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t GroteskBold24x48[];
//Laden der Schriftarten

UTFT myGLCD(ITDB50,43,45,47,49);
URTouch  myTouch( 38, 40, 42, 46, 48); 
//Anzeige Konfigurieren

UTFT_SdRaw myFiles(&myGLCD);
#define SD_CHIP_SELECT  0  // SD Auswahlpin

SdFat sd;
//SD-Konfigurieren

#define Addr 0x27
//Sensor Adresse Setzen

int s=0;
  int i=0;
  int x,y;
float a=0;
float b=0;
float wert=0;
  //Variablen



void setup() 
{
  pinMode(8, INPUT);
digitalWrite(8, HIGH);
  myTouch.InitTouch();
  !sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED);  // Starten der SD
    Wire.begin(); //Starte I2C
    myTouch.setPrecision(PREC_HI); //setze Präzision hoch
      myGLCD.InitLCD(LANDSCAPE);
        myFiles.load(0, 0, 800, 480, "ETH_logo_mHg2.RAW", 1 );  //Bildschirm starten und die Datei laden
         delay(3000);
          myGLCD.clrScr();
           screen1();
            analogReadResolution(12);   //Einstellen auf Analogread von 2 hoch 12 also 4096 Werten 
       
attachInterrupt(digitalPinToInterrupt(8), screen2, FALLING);
}

void loop() 
{
  analog();
tmp_lesen ();
  } 


void Temperatur () //Einstellen des Temperaturfensters
{
  myGLCD.InitLCD(LANDSCAPE);
   myGLCD.setColor(VGA_WHITE); 
    myGLCD.fillRect(0,0 , 399, 240);
     myGLCD.setFont(GroteskBold24x48);
      myGLCD.setBackColor(VGA_WHITE); 
       myGLCD.setColor(0,0,139); 
        myGLCD.print("Temperatur", 75, 20 );
}


void Luftdruck ()//Einstellen des Luftdruckfenster
{
  myGLCD.InitLCD(LANDSCAPE);
   myGLCD.setFont(GroteskBold24x48);
     myGLCD.setBackColor(VGA_WHITE); 
      myGLCD.setColor(VGA_LIME);  
       myGLCD.print("Luftdruck", 485, 260 );
}


void Luftfeuchtigkeit ()//Einstellen des Luftfeuchtefenster
{
  myGLCD.InitLCD(LANDSCAPE);
   myGLCD.setFont(GroteskBold24x48);
    myGLCD.setColor(VGA_YELLOW); 
     myGLCD.setBackColor(VGA_WHITE); 
      myGLCD.print("Luftfeuchte", 70, 260 );
}
   

void ETH () //Einstellen des ETH_Fenster
{     
   myGLCD.InitLCD(LANDSCAPE);
     myFiles.load(400, 0, 800, 240, "ETH3.RAW", 1 ); 
      myGLCD.setColor(VGA_WHITE); 
       myGLCD.fillRect(401,100 , 500, 230);
        myGLCD.setColor(145, 222, 179); //Benutze wheat
         myGLCD.fillRect(490,182 , 680, 218);
          myGLCD.setFont(BigFont);
           myGLCD.setBackColor(145, 222, 179);
            myGLCD.setColor(255, 127, 80); //Benutze Coral
             myGLCD.print("Einstellung",500 , 192);
}
            

  void screen1() 
  {//Laden des normalscreens
       myGLCD.clrScr();  //Bildschirmlöschen
        myGLCD.fillScr(VGA_WHITE);
         myGLCD.InitLCD(LANDSCAPE);
           ETH();
             Temperatur();
              Luftdruck();
               Luftfeuchtigkeit();
                 myGLCD.setColor(VGA_BLACK); 
                   myGLCD.drawLine(400,0,400,480);
                    myGLCD.drawLine(0,240,800,240);
  }

  
void screen2 () //Laden des Einstellungfenster 
  {

myGLCD.fillScr(VGA_SILVER);
delay(300);
screen1();

  }
              

void analog() //Einlesen Luftdruck
{
  /* Berechnung:
   * a= U(a11)/ (3,3V/4096); aufgrund des 12 bit 2^12=4096; 3,3V max Spannung
   *  +253 ist der offset von 0,2V /(3,3V/4096)
   *  0,394933364 Umrechnung auf den Druck; 3,3V= 1617,647059hPa somit 1617,647059hPa/4096=0,394933364
   */
    myGLCD.setFont(GroteskBold24x48);
     myGLCD.setBackColor(VGA_WHITE); 
      a=analogRead(A11)+253; 
       b=a*0.394933364;  
         myGLCD.setColor(VGA_LIME); 
           myGLCD.printNumF(b, 2, 485, 350);
             myGLCD.print("hPA", 635, 350 );
                delay(300);               
}


void tmp_lesen () 
{
 unsigned int data[4];
  Wire.beginTransmission(Addr);   //Start I²C
   Wire.write(0x00);  //Datenregister 0x00
    Wire.endTransmission();  //Beende Übertragung
     Wire.requestFrom(Addr, 4);  // Request 4 bytes of data
     
if (Wire.available() == 4)// Read 4 bytes of data
  {  // humidity msb, humidity lsb, temp msb, temp lsb
    data[0] = Wire.read();
    data[1] = Wire.read();
    data[2] = Wire.read();
    data[3] = Wire.read();
  }

  // Convert the data to 14-bits
  float humidity = ((((data[0] & 0x3F) * 256) + data[1]) * 100.0) / 16383.0;
  int temp = ((data[2] * 256) + (data[3] & 0xFC)) / 4;
  float cTemp = (temp / 16384.0) * 165.0 - 40.0;  //Umrechen in grad C
 

  // Daten Ausgeben
      myGLCD.setFont(GroteskBold24x48);
         myGLCD.setColor(VGA_YELLOW); 
           myGLCD.setBackColor(VGA_WHITE); 
              myGLCD.printNumF(humidity, 2, 70, 350);
                myGLCD.print(" %RH ", 210, 350 );

      myGLCD.setFont(GroteskBold24x48);
         myGLCD.setColor(0,0,139); 
           myGLCD.setBackColor(VGA_WHITE); 
              myGLCD.printNumF(cTemp, 2, 75, 110);
                myGLCD.print(" C ", 210, 110 );
delay(300);  
}

[/code]

Ich kenne den DUE nicht, aber vielleicht wird der Pin durch digitalWrite auf Ausgang geschaltet?

Zumindest halte ich diesen Ersatz für INPUT_PULLUP für fraglich, läuft auf anderen als ATmega Prozessoren ziemlich sicher anders.