Hallo

Baudrate und Übertragungsparameter fehlen und das Senden wurde nicht aktiviert (TX-Enable), schau mal ins Datenblatt des Mega16 unter USART;) Hier meine Initialisierung für 2400, 8,none,1:
Code:
 	#define UBRR_BAUD_2400 390       // Baudrate auf 2400 setzen
   UBRRH = UBRR_BAUD_2400 >> 8;
	UBRRL = (uint8_t) UBRR_BAUD_2400;

	UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0); // 8, none, 1
  	UCSRB |= (1<<TXEN); // Senden enablen
Den Wert für das UBRR-Register (390 für 2400 Baud) errechnet man so:

Kontrollertakt/16/Baud-1 oder 15000000/16/2400-1

(Bei asuro und RP6 wurde der USART schon vom Bootloader richtig und komplett initialisiert)

Zusätzlich fehlt noch die finale Endlosschleife im Programm und das obligatorische return:
Code:
int main(void) {

   writeString("NIBOBee sagt\n\r");
   writeString("Hallo Welt!\n\r");
   while(1); // ohne stürzt der Kontroller ins Nirwana!
   return(0); wird nie erreicht
}
btw. wird die main()-Funktion ohne Parameter aufgerufen: int main(void)...

Gruß

mic