Ich verzweifel da noch dran, hab jetzt Stunden mit ausprobieren verbracht aber ich komme auf keinen grünen Zweig...
Bei dem Code unten bekomme ich immer eine 17-stellige Zahl, dabei sollen einfach nur alle Bits in die Variable rc5.gesamt kopiert werden...

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <inttypes.h>
#include <compat/deprecated.h>




struct rc5_parts
 {
    volatile char s_bit;
	volatile uint8_t addresse;
	volatile uint8_t code;
	volatile char rdy;
	volatile uint16_t gesamt;
 } volatile rc5;

volatile uint8_t bitnummer = 0;

void init_rc5()
{
 MCUCR |= (1<<ISC11);  //wait falling edge
 GICR |= (1<<INT1);    //enable INT1
 TCCR0 |= (1<<CS02);   //Prescaler 256
 cbi(DDRD,PD3); 
}

//****************************************************USART******************************

void init_usart(void) 
{ 
 UBRRL |= 0b01100111; 
 UCSRB = (1<<TXEN) | (1<<RXEN); 
 UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); 
} 

void send_char(unsigned char s) 
{ 
 while (!(UCSRA & (1<<UDRE))); 
 UDR = s; 
} 

void send_string(char *s) 
{ 
 while(*s != '\0') 
  { 
   send_char(*s); 
   s++; 
  } 
} 

//**********************************************************USART-ENDE********************

SIGNAL(SIG_OVERFLOW0)
{
 bitnummer++;
 if(rc5.s_bit == 1 && bitnummer < 14)
  {
    if((PIND & (1<<PD3)) != 0)
	 {
	  rc5.gesamt |= (1<<(14-bitnummer));
	  TCNT0 = 228;
	 }
	else
	 {
	  rc5.gesamt &= ~(1<<(14-bitnummer));
	  TCNT0 = 228;
	 }
  }
  if(rc5.s_bit == 1 && bitnummer == 14)
  {
    cbi(TIMSK,TOIE0);
	TCNT0 = 0;
	rc5.rdy = 1;
  }
}

SIGNAL(SIG_INTERRUPT1)
{
 
 
 if(rc5.s_bit==0)
   {
    TCNT0 = 228;
	rc5.s_bit = 1;
	sbi(TIMSK,TOIE0);
	cbi(GICR,INT1);
   }
}
   
int main(void)
{
 init_usart();
 init_rc5();
 sei();
 char result[10];
 
 for(;;)
  {
   if(rc5.rdy == 1)
    {
     itoa(rc5.gesamt,result,10);
	 char hello2[15] = "RC5-Code: ";
     send_string(result);
	 rc5.rdy = 0;
	 rc5.gesamt = 0;
	 rc5.s_bit = 0;
	 bitnummer = 0;
	 sbi(GICR,INT1);
	}
  }
}