Magnetische Encoder auswerten

=> Ganz Ganz Wichtig Interrupt Funktionen so kurz wie möglich halten <=

Ich schmeiße mal meinen Code hier rein:

void setup (){
  attachInterrupt(0,CHAInt,CHANGE);        // Interrupt 0 führt CHAInt aus mit wechslende Flanken
  pinMode(2,INPUT);                               // Pin2 als Input
  pinMode(3,INPUT);                               // Pin3 als Input
  digitalWrite(2,HIGH);                            // Interne Pull Ups benutzt
  digitalWrite(3,HIGH);                            // Interne PullUps benutzt
}

void CHAInt (){
  int Aread=0;
  int Bread=0;
  Aread=digitalRead(A);
  Bread=digitalRead(B);
  if (Aread==HIGH && Bread==LOW||Aread==LOW && Bread==HIGH){
    Wert++;
  }
  if (Aread==LOW && Bread==LOW ||Aread==HIGH&& Bread==HIGH){
    Wert--;
  }
}