Hallo Manuel,

hier ist mal ein Beispielcode (ungetested) für dein Problem.

Funktionsweise:
*Es wird eine Globale Variable PulseCnt deklariert.
*In der Initialisierungs Routine wird für Port PD2 (INT0) Interrupt bei steigernder Flanke enabled.
*In der Interrupt Funktion SIGNAL(SIG_INT0) wird einfach nur PulseCnt erhöht.
*In der Main Funktion des Programmes kann man PulseCnt dann auswerten. Da nur auf steigende oder fallende Flanke getriggert werden kann, müßte man in diesem Fall auf den Wert 120 abprüfen, nicht 240.

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>

unsigned int PulseCnt;

SIGNAL(SIG_INT0) 
{
  PulseCnt++;  
}


void Init(void)
{
  DDRD |= (1 << DDD2);    // Port D2 als Eingang
  MCUCR |= ((1 << ISC01) | (1 << ISC00));  // Steigende Flanke generiert Interrupt
  GICR |= (1 << INT0); 	// Erlaube externen Interrupt 0 
  sei();
}


int main(void)
{
  Init();

  while(1)
  {
    if (PulseCnt >= 120)  // mind. 120 High Flanken
    {
        PulseCnt = 0;
        ;    // Tue irgendwas sinnvolles
     }
  }
  return 0;
}
Hoffe, ich habe jetzt nichts wesentliches vergessen.

Gruß m.a.r.v.i.n