Lettura frequenza con Arduino Micro

Volevo acquisire un segnale in frequenza con Arduino Micro.
Il segnale è un'onda quadra variabile da 2 Hz a 1,5 kHz con duty cicle del 50%.

Per vedere se il poco codice scritto avesse senso ho collegato l'uscita PWM di un Arduino Uno a 500 Hz con duty cicle del 50% all'ingresso dell'Arduino Micro.

Con la funzione Pulse In il valore letto è quasi costante e si aggira intorno ai 499 Hz quindi con una buona accuratezza e precisione:

long int getFrequency(int pin) 
{
  long freq = 0;
  for(unsigned int j=0; j<SAMPLES; j++) 
    freq+= 500000/pulseIn(pin, HIGH, 500000);
  return freq / SAMPLES;
  freq=500000/pulseIn(pin, HIGH, 250000);
}

Il fatto che PulseIn sia bloccante non è che mi piaccia molto quindi volevo usare gli interrupt:

attachInterrupt(0, getFrequency, RISING);

void getFrequency()
{
  oldValue=actualValue;
  actualValue=micros();
  frequenza=1000000/((actualValue-oldValue));
}

Qui i valori letti oscillano molto di più, la media è intorno ai 470 Hz ma un valore ogni 5 è intorno agli 800 Hz.
Cosa sbaglio?
Grazie a tutti

Ciao,
ti segnalo questo articolo --> http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/
e questo topic del prof. che sta costruendo un frequenzimetro --> http://arduino.cc/forum/index.php/topic,145059.0.html