So, ich habe das Problem gefunden. Erstmal auf jeden Fall vielen Dank
bezüglich der Tipps mit der while-Schleife und der Abfrage des
"Endzeichens 0x0D". Werde das ganze so umwandeln, dass ich nach einer
bestimmten Anzahl gesendeter Bytes die Übertragung stoppe. Das
Inkrementieren hatte ich übrigens ins else geschrieben, also wird nach
dem Nullsetzen nicht nochmal inkrementiert. Warum die Nummer des USART
im ISR-Namen nicht vorkommt: weil der ATmega48 nur einen hat ;)
Jetzt zu dem Problem:
Ich rufe die "USART_Transmit(uc_Send_TX_data)"-Funktion vor der while
Schleife einmal auf. In dieser steht genau das gleiche, wie in der ISR.
Es war ein Denkfehler von mir. Ich dachte die ISR wird nur dann
aufgerufen, wenn ein Byte gesendet wurde und dann der Buffer leer ist.
Aber die ISR wird ja direkt nach dem enablen durch sei() aufgerufen,
also immer wenn der Buffer leer ist. Dadurch hat wohl die ISR den Zähler
um einen nach oben gezählt, während die Funktion von der main
aufgerufen wurde.
Naja, blöder Denkfehler von mir. Aber Danke nochmals!