@sast
Laufzeitermittlung:
Das mit dem Ping zur Laufzeitermittlung wird so nicht funktionieren, da Du ja nur eine Halbdublexstrecke zur Verfügung hast.
Wenn Du PMR im VOX Mode einsetzen willst musst Du ca 300ms Warten bist der gegnerische Sender abgeschaltet ist. Diese Zeit wird der Rückweg immer länger dauern als der Hinweg.
Mit den Verarbeitungszeiten im uC für den Hin und Rückweg hast Du schon recht.
Wenn diese aber bekannt sind, das sind sie ja normalerweise, kann ich die schnellere ja so weit verlängern (NOP!?) damit die Verarbeitungszeiten wieder gleich sind. Mit etwas Aufwand sogar Taktgenau.
Ursprünglich wollte ich eigentlich die RTC als Software im uC laufen lassen und da dauert das schreiben eines Ram Speicherplatzes genauso lange wie das lesen.
Aber deine Idee mit der RTC wer ich mir auf jeden Fall überlegen, allein schon wegen der Präzision und der Unabhängigkeit vom Prozessortakt.
Um schon mal die Rahmenlaufzeiten auszuschalten würde ich mich auf eine feste Rahmenlänge für die Synchronwörter festlegen, die durch das längste zu versendente Telegramm festgelegt wird. Nicht benutzte Bytes werden einfach mit Leerzeichen oder Nullen gefüllt.
Wenn ein Slave als Relaistation für einen weiteren Slave festgelegt ist, muss hier halt der Synchronisationslauf initiiert durch den Master neu starten. Die eigentliche Synchronisation findet dann zwischen dem Relais Slave und dem zu erreichenden Slave statt.
Da der Master ja letztendlich wissen muss ob alle Slaves synchron sind wird auch bei gutwilliger Betrachtung die Anzahl der Relaistationen beschränkt bleiben. Der Master muss ja mit seinem nächsten Telegramm so lange warten bis er ein ACK vom letzen Slave in der Kette empfängt und deshalb die Timeoutzeiten hochsetzen.

Empfänger Frequenzauswertung:
Ich hätte da noch eine Anmerkung zur Frequenzauswertung:
Du schreibst:
Bei einer Messung über einer Frequenz von 1200Hz habe ich mit einem Zähler in der Zeit X ca. Y mal einen Zähler inkrementiert und bei 2200Hz sind es Z mal, wobwei Y größer als Z ist. bei 2200Hz gehören aber 4 Nulldurchgänge zu einem Bit und bei 1200 sind es nur 2.
Wenn ich das nochmal genau lese möchtest Du die entsprechende Frequenz mit einer festen Torzeit =X erfassen.
Das wir bei den paar Wellenzügen aber vermutlich nicht richtig funktionieren und es könnten dadurch tatsächlich Nulldurchgänge versiebt werden.
Die Idee war eigentlich die Periodendauer, wenn das Eingangssignal von negativ nach positiv wechselt bist zum nächsten negativ nach positiv wechsel mit einem Timer zu messen.
Dabei kann Dir kein Wellenzug verloren gehen (es sei denn durch eine Störung) und zum Ermitteln der Frequenz reicht Dir eine Periode (positive + negative Halbwelle).
An den Packet Radio Standard musst Du dich ja nicht halten weil Du ja ein Inselsystem baust.

Leitungscode:
Das mit dem Leitungscode meine ich folgendermassen.
Die zu übertragenden Bits werden kodiert z.B. Manchester Code und dann erst per FSK über Funk übertragen.
Der Vorteil ist das hier bestimmte Codekombinationen nicht auftreten können z.B. 111. Diese Kombinationen eignen sich aber dann vorzüglich um Preambeln oder Startwörter in den Code einzufügen.
Da beim Start der Senders per VOX mit Sicherheit einige Bits verloren gehen werden, kann der Empfänger dann nach genau diesen "unnormalen" Bytekombinationen suchen um sich auf den Sender aufzusynchronisieren.
Der Nachteil ist halt das sich die Datenübertragungsrate in diesem Beispiel mehr als halbiert.

Ich mag dich jetz hier nicht zumüllen, aber wie Du siehst hab ich mir auch schon mal ein paar Gedanken gemacht.

Schön langsam werd ich mal das Coden anfangen, meine Evaluation Boards hab ich ja auch schon gekriegt.
Zuerst wird mal der Sinusgenerator drankommen -schade das Du keinen ATMEGA benutzt \/