hi
also bis jetzt verfolge ich folgende Taktik.
Ich lasse einen Timer laufen.
Bei einer pos. Flanke speichere ich den Timerwert.
Bei der nächsten pos. Flanke speichere ich wieder den timerwert und bilde die Differenz. Damit kann ich mir dann die Zeit berechnen.
Das müsste so doch auch funktionieren oder hat das einen Nachteil?
Hier mal der Code:

Code:
_interrupt(9) void PCA0(void){				 // Interrupt PCA0 P0_0 Drehzahl
	char temp = SFRPAGE;	
	SFRPAGE   = PCA0_PAGE;
   
	  P1_4=LED; 	    		//Kontrolle ob Interrrupt ausgeführt wird
	  x++;						//Zählen wie oft der Interrupt ausgeführt wird

	  wert_alt=wert_neu;		//Speichern des alten Werts

	  low =PCA0L;       		//Lowbyte auslesen
	  high=PCA0H;	   			//Highbyte auslesen
	  high=high<<8;	   			//Highbyte um 1Byte nach rechts schieben 
	  wert_neu=high+low;	    //High und Lowbyte addieren

	 time=wert_neu-wert_alt;    //Berechnung der Zeitdifferenz

	CLR_CF;
	SFRPAGE =temp;
}
Mein Problem ist jetzt nur das der Interrupt aus irgend einem Grund viel öfter ausgeführt wird als ich Flanken auf dem eigentlichen Interrupt pin hab und dadurch die zeitdifferenz immer 0 ist

gruß