So ich hab nun alle möglichkeiten durchgetestet und im Code dokumentiert, ich würde mich sehr freuen wenn du mir anhand dieser Information Näheres sagen könntest:

Code:
#if (RC5_INT == RC5_INT0)
ISR(INT0_vect)
#elif (RC5_INT == RC5_INT1)
ISR(INT1_vect)
#endif /* RC5_INT */
{
	
	// Hier impuls sync mit tastendruck
	 
	code_t _code = code;
	uint8_t _nint = nint;
	
	uint8_t tcnt0 = TCNT0;
	TCNT0 = 0;
	
	if (0 == _nint)
	{
		
		// Hier impulse mit erster fallender Flanke
		 
		/* INTx on both edges */
		#if (RC5_INT == RC5_INT0)
		
		// Hier impulse mit erster fallender Flanke
		
		MCUCR = (MCUCR | (1 << ISC00)) & ~ (1 << ISC01);
		#elif (RC5_INT == RC5_INT1)
		
		//Hier geht er nicht rein, wegen nutzung von INT0
		
		MCUCR = (MCUCR | (1 << ISC10)) & ~ (1 << ISC11);
		#endif /* RC5_INT */
		
		TIFR = (1 << TOV0);
		TIMSK |= (1 << TOIE0);
		_code.w = 0;
		
		// Hier impulse mit erster fallender Flanke
		
	}
	else
	{
		// Hier impulse mit erster steigender Flanke
		
		/* Number of bits of the just elapsed period */
		uint8_t n = 1;
		
		/* Bits received so far */
		uint8_t _nbits = nbits;
		
		/* is TCNT0 close to RC5_TICKS or RC5_TICKS/2 ? */
		if (tcnt0 > RC5_TICKS + RC5_DELTA)
		
		goto invalid;
		else if (tcnt0 < RC5_TICKS/2 - RC5_DELTA){
			// Hier impulse mit erster steigender Flanke
			
		goto invalid;}
		else if (tcnt0 > RC5_TICKS - RC5_DELTA){
			// Hier geht er nicht rein!!
			
		n = 2;}
		else if (tcnt0 > RC5_TICKS/2 + RC5_DELTA){
			// Hier geht er nicht rein!!
			
		goto invalid;}
		
		/* store the just received 1 or 2 bits */
		do
		{ 
			// Hier geht er nicht rein!!!
			
			_nbits++;
			if (_nbits & 1)
			{
				_code.w <<= 1;
				_code.b[0] |= _nint & 1;
			}
		}
		while (--n);
		
		if (0)
		{
			// Hier geht er nicht rein!!
			
				 
			invalid:
			
			/* disable INTx, run into Overflow0 */
			#if (RC5_INT == RC5_INT0)
			
				// Hier geht er mit erster steigenden Flanke rein
				
			GICR &= ~(1 << INT0);
			#elif (RC5_INT == RC5_INT1)
			
			GICR &= ~(1 << INT1);
			#endif /* RC5_INT */
			
			// Hier geht er mit erster steigenden Flanke rein
			
			_nbits = 0;
		}
		
		// Hier geht er mit erster steigenden Flanke rein
		
		nbits = _nbits;
	}
	
	// Hier geht er mit erster fallenden Flanke rein
	
	code = _code;
	nint = 1+_nint;
}