ist zwar nicht von Belang, aber wofür ist das
_delay_us(500); ?
Ansonsten: Evtl. Leitungen vertauscht, so dass Ausgänge aufeinander
treiben oder der Max232 in die Knie geht?
Mach mal ein paar Loop-Tests (Verbindungen danach natürlich wieder
lösen):
1) Am AVR rx und tx verbinden. alles was Du sendest, muss genauso wieder
ankommen.
2) das gleiche "hinter" dem Max232 (vom uC aus gesehen)
3) am USB-Adapter auf PC-Seite rx und tx verbinden - alles was Du
eintippst, sollte als echo zurückkommen
4) das gleiche "hinter" dem Max232 (auf AVR-Seite)
wenn das alles geht - bleibt nicht viel..