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: > ein bereits ausgeklügeltes Verstümmelte Pakete sollte Deine SW rechtzeitig prüfen/erkennen sonst gibt es höchst wunderliche Effekte. Lies mal wie die das machen. https://de.wikipedia.org/wiki/Network_Time_Protocol
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.
Paul H. schrieb: > Und das möglichst genau. "Möglichst genau" willst du nicht wirklich bezahlen. Also schreib da eine Zeitangabe ran. Zwischen ms und fs gibt es ein weites Feld - je genauer, umso teurer.
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.
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.
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 ;)
Machs wie ntp und ping einmal hin&her und zieh dir da deine abgeschätzte Laufzeit raus...
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
Wenn du das machen willst musst du aber das Auto Retransmit vom nRF24L ausschalten, sonst ist da gar nichts mehr deterministisch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.