Wow, das ist ja mal ein ausführlicher Sourcecode.
Sorry, aber wenn du nicht mehr postest (am besten alles), kann dir auch niemand sagen, ob du einen Fehler im Programm hast.

Wenn allerdings das hier
Wir haben den Eingang und den Ausgang des AVRs verbunden, dabei werden die Sachen, die der Controller sendet, auch wieder empfangen.
bei gleicher Software funktioniert, kann es auch nicht an der Software liegen. Dann ist es sehr wahrscheinlich ein Verdrahtungsfehler.