Hi,

hier mal der Code, mit dem ich teste:

Code:
#define F_CPU 7372800;

#include <avr/io.h>


// int USART_TX(char *, unsigned int);						// Prototyp

static char test[5] = { 0x48, 0x41, 0x48, 0x41, 0x48, };



int USART_TX(char *TX_B, int TX_B_L) {
  
	for(int i=0; TX_B_L > i; i++) {

		while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
  
  		UDR0 = TX_B[i];
	}
  
    return 0;
}


int main( void ) {

   UCSR0B |= (1<<TXEN0) | (1<<UCSZ02);					// Tx Enable, 8 Datenbits
   UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00) | (1<<USBS0);	// 8 Datenbits, 1 Stoppbit
   UBRR0H = 23 >> 8;									// HighByte, Baudrate = 19.200 bps
   UBRR0L = 23 & 0xFF;									// LowByte, Baudrate = 19.200 bps


   USART_TX (test, sizeof(test));


   return(0);
}
Wenn ich anstatt dem Funktionsaufruf in der Main einfach nur ein "UDR0 = 'X';" schreibe dann kommt auch ein X rüber.

Vielleicht entdeckst du ja nen Fehler. Danke schonmal.

e-Ra