Zeitsynchronisation per nrf24l01

OP #4511231
Lesenswert?
• ▲
▼
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
#4511416
Lesenswert?
• ▲
▼
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 #4515125
Lesenswert?
• ▲
▼
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 #4515668
Lesenswert?
• ▲
▼
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 ;)
#4516372
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.