Wenn du den ganzen PortC für die Übertragung zwischen den AVRs hast, kann doch gleich einer alles machen.
Benutze doch ein vorhandenes Kommunikationsprotokoll. RS232, I²C oder so.

Du kannst ja Wörter wie "vor", "links", usw schicken und benötigst im Prinzip max. 2 Leitungen.

Dein Wait 2 wird dir aber noch Probleme bereiten.
Überlege mal, wieviel Meter deine Mutter in 2 Sekunden mit dem Staubsauger zurücklegt. Wenn dein Roboter grade nach vorne geht und sie ankommt, wartet dein Programm wirklich erstmal zwei Sekunden, bis der nächste Schritt ausgeführt wird.
Der Sensor-AVR hat zwar schon Alarm geschlagen, das von vorne was kommt, aber der Servo-AVR geht munter weiter. Über den RX-INT weiss der Servo-AVR zwar schon, das Gefahr in Vollzug ist, aber er kann nicht handeln. Er wird gezungen 2 Sekunden zu warten. Zzgl der Zeit, die das bewegen der Beine benötigt.

Selbst eine Alarmsequenz die alles anhält und zurückgeht muss gut überlegt sein. Weil evtl ist grade ein Bein in der Luft.
Mit RS232 kannst du dir das Bitwait dann auch sparen.
Zumindest wenn ich das Programm auf dem ersten Blick richtig deute. Was wo angeschlossen ist, hast du ja nicht erwähnt. Und Kommentare sind im Code auch kaum vorhanden. Zumindest nicht da, wo es wichtig wäre.