Hi,

ich habe ein seltsames Problem:

Ich habe einen mega32 mit angeschlossenem max232. Sende ich ein Zeichen, oder eine Zeichenkette, started das Programm des µC neu. (glaube ich zumindest).

Ablauf:
void main(void):
- Setzte LED als an
- Warte (while(1); )

uart_rxc interrupt:
- wenn empfangenes Zeichen = a => Setze LED als aus
- wenn empfangenes Zeichen = b => Sende '-' zurück.

Ergebnis:
Starten (LED ist an), 'a' senden (LED ist aus), 'b' senden (LED geht wieder an)

Mein Code (relevante teile, led() schaltet nur die LED an/aus):
Code:
int main(void)
{
	led_init();
	uart_init();
	
	sei();
   led(led2, 1);

 	while(1)
	{
		
	}
}

ISR(USART_RXC_vect)
{
	uint8_t c;
	c = uart_receive();

	if (c == 'a') led(led2, 0);
	if (c == 's') uart_putc('-');
}

void uart_putc(uint8_t data)
{
	while (!(UCSRA & (1<<UDRE)));
	UDR = data;
}

void uart_puts(uint8_t *data)
{
	while (*data)
	{
		while (!(UCSRA & (1<<UDRE)));
		UDR = *data;
		data++;
	}
}
Interessanter weise schickt er den gesamten string bei uart_puts. Die LED geht trotzdem an. Ich weiß nicht mehr weiter und hoffe, ihr könnt mir helfen.

Gruß, CowZ