Ok,
schön, jetzt weiß ich, was Du vor hast...
Ich find es auch gut, daß Du auf dem PC übst, so kommt man schneller ans Ziel, als nur mit dem µC.
Also was Dir fehlt, sind die Grundlagen(warum schreibt niemand einen tut!)
Fehler 1 Puffer ist zu klein!
Wenn Du ein uint8_t in Bits zerlegst, bekommst Du nach itoa/utoa ein Zeichenarray von 9 Bytes länge!
Beispiel
char puffer[] = {'0','0','0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'\0'};
Man beachte dieses '\0' am Ende, damit wird signalisiert, daß der String zuende ist(deswegen 9 Bytes) klaro?

nun Deine sende_string Routine erwartet einen Zeiger auf ein char Array also übergibst Du der routine den Zeiger auf puffer[0].
puffer[0] ist aber kein Zeiger, sondern &puffer[0] wäre ein Zeiger und da sowas sehr oft bei C vorkommt kann man das ganze abkürzen und einfach puffer schreiben, klaro ?
was passiert jetzt in der sendestring Routine:
Code:
void string_senden (char *string) 
{ 
     while (*string) 
     { 
         while (!(UCSRA & (1<<UDRE))) 
         {} 
         UDR = *string++; 
     } 
}
while(*string) bedeutet, solange ausführen bis das worauf string zeigt != 0 ist
wichtig ist hier * was bedeutet das worauf string zeigt (in diesem Fall puffer[0])
Dann wird das, worauf string zeigt in UDR geschrieben und Achtung der Zeiger um eins erhöht womit der Zeiger auf puffer[1] springt!
Zum Verständnis
UDR=*string++;
kann man auch
UDR=*string;
string++;
schreiben

Ich hoffe, jetzt wird klar, warum Dein vorhaben nicht funktionieren wird..
klar kannst Du
sende_string(&puffer[5]);
schreiben, was kommt dabei raus ?
Mein Vorschlag sende_string zegschlagen und zwar:
Code:
void string_senden (char *string) 
{ 
     while (*string)
           sende_zeichen(*string++);
}
     sende_zeichen(char zeichen){
         while (!(UCSRA & (1<<UDRE))); 
         UDR = zeichen; 
     }
Damit kannst Du wie gewohnt mit string_senden("Hallo Welt");
Oder mit sende_zeichen(puffer[5]);
ein Zeichen senden, aber jetzt bitte keinen Zeiger!
Ich hoffe, daß Dir das weiterhilft...

Gruß Sebastian

P.S. Die andere Warnung kommt von dem Prototyp mit leeren Klammern schreib da ein void rein und weg ist die Warnung.
Puh.....