Hallo,

ich habe die Nullterminierung jetzt meines Wissens nach richtig eingebaut, aber habe trotzdem weiterhin das gleiche Problem, dass die Zahlen ausgeteilt werden. Es wird am Ende immer nur die letzte Stelle zugewiesen. Schicke ich "10" so ist i_value=0, bei einer "11" ist i_value=1, bei einer "110" ist komischerweise i_value=10.
Ich bin nun echt ratlos woran das liegt und wie ich dsa Porblem beheben kann.

Meine Änderungen:
char pc_data[5];
volatile unsigned char receive_char;

Meine main() sieht jetzt so aus:
Code:
int main()
{
  
  uint8_t var;
  uint8_t i;
  uint8_t i_value;
  
  DDRB=255;
  PORTB=0;
  
  uart_init();
  sei(); 
  i=0;
   
    while (1)
    {
    	if(receive_char==1)
    	{
    	while (!(UCSRA & (1<<RXC)));
    	{
    		pc_data[i]=UDR;
    		i++;
    		if(i>2)
    		{
    			i=0;
    		}    		
    	}
    	//pc_data[3]='\0';
    	receive_char=0;
    	sendflag=0;
    	}
    	
    	if(receive_char==0&&sendflag==0)
    	{
    		//uart_puts(pc_data);
    		//i_value=atoi(pointer);  //Funktioniert auch nicht richtig
		pc_data[3]='\0';
		i_value=atoi(pc_data); 
    		PORTB=i_value;
    		toascii_8(i_value); //Ausgabe als ASCII
    		i=0;
    		sendflag=1;
    	}
    }  
}