encoder rotativo recuperato da mouse

Ho pensato di provare a gestire l'interrupt con solo questo codice

attachInterrupt(1, interruptEncoder, RISING);

e il gestore

 void interruptEncoder()  
{                     
  if(PIND&3)
    pulse++;
  else
    pulse--;
}

Praticamente legge solo i fronti di salita del canale A ( evento RISING su PD2) e verifico lo stato del canale B (PD3)
Se lo stato del canale B è alto, quindi uguale al canale A incremento, altrimenti decrementa.
La teoria ci dovrebbe essere tutta, ora c'è da provare !