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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren