Ok, nun hab ich die init umgeschrieben:
Code:
void usart_init(int Enable, int Interupts) {
if (Enable & READ) UCSRB = (1<<RXEN);
if (Enable & WRITE) UCSRB |= (1<<TXEN);
if (Enable & (READ + WRITE) ) UCSRB = ( (1<<RXEN) | (1<<TXEN) );
if (Interupts & READ) UCSRB |= (1<<RXCIE);
if (Interupts & WRITE) UCSRB |= (1<<TXCIE);
if (Interupts & (READ + WRITE) ) UCSRB |= ( (1<<RXCIE) | (1<<TXCIE) );
UBRRL = (unsigned char) USART_BAUD_SELECT;
}
Aber das Resultat war noch nicht zufriedenstellend, daher hab ich in die SIGNAL noch folgendes reingepackt:
Code:
usart_writeChar('[');
usart_writeChar(data);
usart_writeChar(']');
Man soll zwar net im Interupt wieder schreiben, aber naja....
Resultat is jedenfalls folgendes:
Hello World[H][e][r][[][[][[][[][[][[][[][[][[][[][[][[][[][[][[][[]...
Hmm 
Warum muss man das egtl mit & verbinden und kann net mit == vergleichen?
Und muss ich dann vllt in der 3ten iif (Enable & WRITE & READ) schreiben?
Lesezeichen