Moin,

Zitat Zitat von booty
Ich habe alles geändert, so wie es beschrieben ist, doch es funktioniert immer noch nicht. Hat einer noch ne Idee?
überprüf mal ob Du auch wirklich 0x31 sendest und nicht 0x01


Code:
ISR(USART_RXC_vect) 
{  
   buffer = UDR; 
}


void led_init(void)
{
if(buffer==0x31) 								
PORTA=0x01;
												
else 											
PORTA=0x00; 
}
bevor in led_init() buffer ausgelesen werden kann, kann ein andere Interrupt buffer wieder geändert haben (ja ich weis - wird bei diesem kleinen Programm nicht passieren)

also - entweder

Code:
ISR(USART_RXC_vect) 
{  
    led_init(UDR)
}
void led_init(char value)
{
    PORTA = value
}
oder die kurze Variante ... da es nur ein Testprogramm ist

Code:
ISR(USART_RXC_vect) 
{  
    PORTA = (UDR == 0x31) ? 0x01 : 0x00;
    // PORTA = UDR;
}
um als Alternative zu sehen ob überhaupt was am UART/Interrupt ankommt
Code:
ISR(USART_RXC_vect) 
{  
    static char dummy = 0;
    PORTA = dummy++;
    if (dummy == 255) dummy = 0;
}
Detailänderung

Code:
int main(void) 
{ 
    DDRA = 0xff; 
    uart_init(); 
    sei(); 
    while(1) { 
        // CPU schlafen legen ... spart Akkus
    } 
    return 0; 
}
hand, mogel