Zeitsynchronisation per nrf24l01

OP #4511231
Hallo,

ich habe zwei Mikrocontroller, die beide einen Zähler haben, welcher die 
Millisekunden seit Einschaltung hochzählen. Ich würde diese Zähler nun 
gerne per Funk (nrf24l01) synchronisieren. Und das möglichst genau.

Ich würde dazu einfach einmalig ein paar Synchronisations-Pakete 
zwischen Sender und Empfänger austauschen und die Laufzeit messen.

Die Zeit die der nrf24l01 braucht um das Daten-Paket vom Sender aus zum 
Emfpänger zu schicken sowie die Zeit um das Ack-Paket vom Empfänger zum 
Sender zu schicken sollte ja deterministisch sein. Wenn Funkstörungen 
auftreten sollte das Paket gar nicht erst ankommen und muss nochmals 
gesendet werden.

Ist das richtig? Kann ich mich darauf einigermaßen verlassen? Wie 
deterministisch ist die ganze Sende-Empfangszeit nun wirklich? Weiß das 
jemand bzw. hat da jemand schon mal versuche gemacht?

Gibt es vielleicht sogar ein bereits ausgeklügeltes, standardisiertes 
Verfahren um eine Zeitsynchronisation über eine gelegentlich gestörte 
Funkstrecke durchzuführen?

lg
Paul H. schrieb:
> Die Zeit die der nrf24l01 braucht um das Daten-Paket vom Sender aus zum
> Emfpänger zu schicken sowie die Zeit um das Ack-Paket vom Empfänger zum
> Sender zu schicken sollte ja deterministisch sein
Ich glaube von Senden bis zum RX interrupt beim Empfänger waren es bei 
mir so ~400µs

Paul H. schrieb:
> Wenn Funkstörungen
> auftreten sollte das Paket gar nicht erst ankommen und muss nochmals
> gesendet werden.
Richtig, das nRF sortiert Pakete mit fehlerhafter CRC gleich aus.
Gast
Er sagte, er möchte nrf24l01-Module verwenden. "Möglichst genau" bezieht 
sich offenkundig darauf, was mit vertretbarem Aufwand (=geschickter 
Algorithmus) und genau diesen Modulen machbar ist. Nix mit teuer. Nix 
mit pico- femto- oder atto-Sekunden. Wäre ich dein Chef wärst du mir mit 
einer derartigen Frage gehörig auf den Senkel gegangen.
Gast
Anti-Troll schrieb:
> Wäre ich dein Chef wärst du mir mit einer derartigen Frage gehörig
> auf den Senkel gegangen.

Mir gehen Leute auf den Senkel, die ohne Maßstab alles möglichst genau 
mit möglichst wenig Aufwand und mal eben schnell haben wollen.
Gast
Dir geht es also um so etwas wie mangelnden Respekt vor der Komplexität 
oder Großartigkeit der Technik? Dir geht es um Diletanten, die nicht in 
der Lage sind, ihre Vorhaben genau zu spezifizieren und die erwarten, 
dass man mal eben schnell alles easy erreichen könnte? Schön, dass du 
uns an deinen persönlichen Problemen teilhaben lässt. Ich kann dich 
sogar verstehen! Jedoch hat das nix mit der Fragestellung des TO zu tun. 
Der hat nämlich seine Anforderungen und seinen Maßstab klar formuliert.

Anforderung: Möglichst genaue Zeitsync. Maßstab: Was mit dem nrf24l01 
möglich ist. Was noch fehlt ist die Angabe der tatsächlichen Genauigkeit 
oder der maximal zur Verfügung stehenden Zeit, wie lange diese 
Zeitsynchronisation dauern darf. Hier hat man ein wenig Spielraum um ihm 
gängige Lösungen zu liefern. Offenbar will er sich erst mal einen 
Überblick über die Möglichkeiten verschaffen und die dürften ja nicht 
allzu vielfältig sein. Müsste man abschätzen würde man die gewünschte 
Genauigkeit der Zeitsynchronisation erst mal im Bereich von 1µ-1ms 
festlegen. Viel mehr als 1ms macht wenig Sinn denn ab da wird die 
Synchronisation ziemlich anpruchslos. Mit zunehmender 
Genauigkeitsanforderung dürfte der Aufwand steigen. Sobald sich eine 
klare Vorstellung entwickelt hat, mit welchem Aufwand man auf welche 
Genauigkeit kommt kann man dann weiter spezifizieren. Alles gut ;)
Hi paul,
welche Controller haste denn?
Wenn's ATTiny's sind, würd ich gern den Code für das Handshake mit dem 
nrf24l01 haben :-)

Test zur Zeit bei mir, erst mal eine Verbindung (Pi2-UNO) aufzubauen.
Beitrag "nRF24L01+ - Pi2 & Arduino UNO klappt nicht :-("
Bein den Demos wird die Transferzeit gemessen (allerdings msec).

Kommt etwas auf Deinen Bootloader an, ob du den Befehl
micros() - https://www.arduino.cc/en/Reference/Micros
verwenden kannst.
Grüße aus LA
ralphi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.