Hallo zusammen,

ist das korrekt, dass die ISR(USART_RXC_vect) eventuell nach mehrfacher Eingabe von
Zeichen über die Tastatur, die Ausgabe einer if then Abfrage "überschreibt"??

Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

#define F_CPU       7372800
#define BAUD        9600
#define UBRR_VAL    F_CPU/16/BAUD-1

volatile unsigned char receive_char;
volatile int buffersize = 8;

ISR(USART_RXC_vect)
{
    receive_char = UDR;
}

void init_uart(unsigned int ubrr)
{
    UBRRH = (unsigned char)(ubrr>>8);
    UBRRL = (unsigned char)(ubrr);
    UCSRB = (1 << RXEN) | (1 << TXEN) | (1<<RXCIE);
    UCSRC = (1<<URSEL)|(1<<UCSZ0) | (1<<UCSZ1);
}

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

void send_string(char *data)
{
    while (*data)
    {
        send_char(*data);
        data++;
    }
}

int main(void)
{
    DDRB |= (1<<PB1);
    init_uart(UBRR_VAL);
    send_string("TESTING");
    sei();
    PORTB |= (1<<PB1);
    _delay_ms(300);
    PORTB &=~ (1<<PB1);
    uint8_t i;
    while (1)
    {
        //i = strlen(receive_char);

        cli();
        if (receive_char == 100)
        {
            send_string("Yes, we wrote e");
        }

        if (receive_char == 114)
        {
            send_string("Yes, we wrote r");
        }

        if (receive_char == 116)
        {
            send_string("Yes, we wrote t");
        }

        receive_char = "";
        sei();
    }
    return 0;
}
Erst nach der Definition von cli() und sei() wurde das Ergebnis besser, ist das euch auch schon vorgekommen?

Vielen Dank!