Naja,
Dir ist hoffentlich aber klar, daß Du:
1.
Code:
 while (!(UCSR1A & (1<<UDR1E)))
vor jedem Zeichen machen musst

2.
Code:
_delay_ms(100);
nicht unbedingt 100 ms sein muß

3. Keine Endloschleife in Deinem Programm vorhanden ist

Warum übergibst Du UBRR an die Initfunktion ?

Ich füge mal ein paar Schnipsel, die bei mir mit M128 100% Funktionieren, ist zwar für UART0 , sollte aber egal sein

Code:
#define BAUDSELECT (F_CPU/(BAUD*16L))-1

void init_uart(void){
    UBRR0L = BAUDSELECT;
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
    UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
  }
senden tue ich mit solcher Funktion
Code:
void sendmessage(Message *message){
  uint8_t a;
  for (a=0;a<message->laenge;a++){
      while(!(UCSR0A&(1<<UDRE0)));
      UDR0 = message->text[a];
    }
Vielleicht hilft es Dir weiter.

Gruß Sebastian

P.S.
Code:
while (!(UCSR1A & (1<<UDR1E)))      //warten bis Senden möglich
   {
   }
Hier stinkt was, UDR1E gibt es nicht, es heißt UDRE1, sicher, daß es keine Fehler gibt ?