Calcolare il tempo tra due eventi

questo è quello che ho scritto

#define encoderCLK 2

int encoderCountOr = 0;
int encoderCountAnt = 0;
int encoderCount = 0;
volatile boolean i = 0;
volatile boolean val_B;
unsigned long inizio_A = 0;
unsigned long fine_A = 0;
unsigned long diff_A = 0;
unsigned long temp_tot = 0;
void setup() {
  Serial.begin(38400);
  attachInterrupt(digitalPinToInterrupt (2), frontecanaleA, RISING);
  pinMode(4,INPUT);
  // attachInterrupt(digitalPinToInterrupt (4), frontecanaleB, RISING);
}

void loop() {
  if(i == 1 &&  val_B== HIGH){
// encoderCountOr++;
  encoderCount++;

inizio_A = micros();
  diff_A = inizio_A - fine_A;
  fine_A = inizio_A;

i = 0;

}
  if(i == 1 && val_B== LOW){
// encoderCountAnt++;
encoderCount--;
  i = 0;

}
temp_tot= diff_A + temp_tot;
// encoderCount = encoderCountOr - encoderCountAnt;

Serial.print(encoderCount);
    Serial.print("    ");
    Serial.println(diff_A);
}
void frontecanaleA()
{
  i=1;
  val_B = digitalRead(4);
}




in questo primo uso un interrupt solo, ma non riconosce i passi nel modo corretto



#define encoderCLK 2
int encoderCountOr = 0;
int encoderCountAnt = 0;
int encoderCount = 0;
volatile boolean i = false;
volatile boolean j = false;
unsigned long inizio_A = 0;
unsigned long fine_A = 0;
unsigned long diff_A = 0;
unsigned long temp_tot = 0;

void setup() {
  Serial.begin(38400);
  attachInterrupt(digitalPinToInterrupt (2), frontecanaleA, RISING);
  attachInterrupt(digitalPinToInterrupt (4), frontecanaleB, RISING);

}

void loop() {
if(i == true && j == true){
  encoderCountOr++;
 
  fine_A = inizio_A;
  inizio_A = micros();
  diff_A = inizio_A - fine_A;

temp_tot= diff_A + temp_tot;
 
  i = false;
  j = false;
  }
  if(i == true && j == false){
  encoderCountAnt++;
// fine_A = inizio_A;
// diff_A = 0;
  i = false;
  j = false;
    }

encoderCount = encoderCountOr - encoderCountAnt;
    Serial.print(encoderCount);
    Serial.print("    ");
    Serial.println(diff_A);
}
void frontecanaleA()
{
i=true;
}
void frontecanaleB()
{
j=true;
}




questo l'ho fatto con due interrupt e non funziona nemmeno questo

Per quanto ne so solo i pin 2 e 3 possono essere usati come sorgente di interrupt individuale.