brauche hilfe bei uart mit interrupt
Hallo!
Ich brauche mal nochmal Hilfe. Ich habe versucht über rs232 vom PC auf den Controller eine 1 zu senden und dann soll eine LED ausgehen. Das habe ich per Interrupt versucht, doch es funbktioniert leider nicht.
Kann einer mal den Quelltext anschauen und sagen was ich falsch gemacht habe?
Danke!
#include <avr/io.h>
#include <avr/interrupt.h>
#define USART_RXC_vect _VECTOR(14)
#define F_CPU 1000000UL
#define BAUD 9600UL
#define UBRR_BAUD ((F_CPU/(16L*BAUD))-1)
uint8_t buffer;
void uart_init(void)
{
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0xFF);
UCSRB = (1<<TXEN) | (1<<RXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
ISR(USART_RXC_vect)
{
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
while (!(UCSRA & (1<<RXC)))
buffer = UDR;
}
void led_init(void)
{
if(buffer==0x31)
PORTA=0x01;
else
PORTA=0x00;
}
int main(void)
{
sei();
DDRA = 0xff;
led_init();
uart_init();
}