ESP-NOW timing accuracy auf ESP8266/ESP32

OP #7786357
Lesenswert?

Hi hat jemand Erfahrung mit ESP-NOW?

Ich sehe, daß meine Packete (nur ein Byte) mit Jitter empfangen werden. Im Bild sieht man die Ergebnisse für ESP8266: Lila: Byte sent on sender Green: byte received on receiver Delay: ~500 micro Sekunden Jitter: ~ 6.5 milli Sekunden Auf ESP8266 bekomme ich bessere Resultate als auf ESP32. Auf ESP32 ist Delay sowie Jitter grösser. Gehört das mit dem Jitter so oder habe ich einen Fehler in mein INO (siehe Anhang)? Warum verhält sich ESP8266 besser als ESP32? Danke

Angehängte Dateien:
Gast #7786370
Lesenswert?

Im guten Fall hast du unregelmäßige Verzögerungen im einstelligen ms Bereich. Das ist völlig normal.

Ebenfalls normal sind Ausreißer bis 200ms. Damit muss man immer jederzeit rechnen. Erst darüber kommt der Bereich, wo es ernsthaft Sinn macht, etwas verbessern zu wollen.

#7786909
Lesenswert?

Rainer W. schrieb:

Du hast die Verkehrsregelung nicht verstanden. Paket fertig senden und Klappe halten ist angesagt, damit die anderen auch eine Chance haben.

Du hast meinen Kommentar nicht verstanden. (Ich hatte die Ironie Tags vergessen und dein Detektor hat nicht angeschlagen)

Genau und was haben wir dann? Jitter! Das war die Frage vom TO.

Für alle die meine Aussage missverstehen - wenn es auf Realtime ankommt würde ich nicht auf WLAN setzen.

Sherlock 🕵🏽‍♂️ schrieb:

Dann hast du Pech.

Ich nicht, ich habe ja kein Problem damit aber der TO.

Der TO schreibt leider nicht warum ihm der Jitter so wichtig ist.

#7786937
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

Im guten Fall hast du unregelmäßige Verzögerungen im einstelligen ms Bereich. Das ist völlig normal.

Das ist so nicht richtig. Ich habe einen ESP32 der nach exakt 700µs auf Daten antworten muss. Diese kommen per UART rein uns müssen 700µs nach dem letzten Byte wieder raus (bzw die Antwort).

Geht. Nur nicht mit den einfachen Arduino Funktionen. Man muss sich schon gedanken machen was man will und wie man das erreicht. Und den ESP32 verstehen sollte man auch.

Gast #7786941
Lesenswert?

John P. schrieb:

Das ist so nicht richtig. Ich habe einen ESP32 der nach exakt 700µs auf Daten antworten muss.

Meine Nachbarn werden nicht auf ihre Tragbaren Geräte verzichten, nur damit ich die gewünschten Antwortzeiten im WLAN erreiche. Wie machst du das, wohnst du alleine in einem freistehenden Haus?

#7786962
Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

Wie machst du das, wohnst du alleine in einem freistehenden Haus?

Cyblord -. schrieb:

Das geht mit WLAN nicht. Du kannst dort keine beliebig schnellen Antwortzeiten garantieren. Deshalb wurden (kabelgebundene) Feldbusse erfunden

Mein Fehler. Ich bin noch nicht ganz wach :( Ich hatte gedacht innerhalb eines ESP32 wäre die Verzögerung/Jitter aufgetreten.

Gast #7787145
Lesenswert?

Mat. K. schrieb:

esp-now IST ABER KEIN ECHTES wlan: nur die untersten 2 OSI schichten. Soweit ich lese sollte es eigentlich keinen Jitter in ms Bereich haben.

Nochmal: Andere nutzen die gleichen Funkfrequenzen, das führt zu unregelmäßigen Wartezeiten. Sonst würde WLAN nicht funktionieren.

OP #7787171
Lesenswert?

Nochmal: Andere nutzen die gleichen Funkfrequenzen, das führt zu unregelmäßigen Wartezeiten. Sonst würde WLAN nicht funktionieren.

Alles roger dann entnehme ich aus dem was du schreibst dass die Warterei in den untersten 2 Schichten statfindet. Kennst du zufällig eine andere Übertragung die ein besseres Jitter-Verhalten hätte? Meine 2 Wahl war nordic priopriotory radio https://www.nordicsemi.com/Products/Wireless/2-4-GHz-proprietary Zufällig Erfahrungen damit?

Gast #7787174
Lesenswert?

Mat. K. schrieb:

Alles roger dann entnehme ich aus dem was du schreibst dass die Warterei in den untersten 2 Schichten statfindet.

Logisch, muss ja. Ansonsten hättest du ständig Kollisionen.

Mat. K. schrieb:

Kennst du zufällig eine andere Übertragung die ein besseres Jitter-Verhalten hätte?

Die wird es auf freien Funkfrequenzen nicht geben, weil du die Frequenz nicht exklusiv nutzt.

Für dein gewünschtes Timing ist Funk das falsche Medium.

#7787447
Lesenswert?

Mat. K. schrieb:

Gehört das mit dem Jitter so oder habe ich einen Fehler in mein INO (siehe Anhang)?

Die weitaus sinnvollere Frage wäre, ob Du bzw. Deine Anwendung mit einem Jitter dieser Größenordnung leben kann?

Was mir aber an Deinem Sender-Sketch auffällt: Du hast keine konstanten Sendeintervalle, wie bestimmst Du da den Jitter überhaupt?

Denn Du startest Deinen 300ms Timer ja erst nach dem Senden neu, also liegen zwischen zwei Übertragungen immer: 300ms + Dauer der vorigen Übertragung.

Was mir noch auffällt, eher allgemeiner: Die Arduino DigitalRead/Write Funktionen haben einen ziemlich schlechten Ruf, wenns um schnelles der sehr exaktes Timing geht. Drum nimmt man besser möglichst HW-nähere Zugriffsmethoden um einen Timing-Pin zu toggeln.

#7788002
Lesenswert?

Hallo,

die benötigten Takte/Zeiten für

1
digitalWrite()

u.ä. Funktionen sind konstant und nur paar µs. Kann man als Konstante aus der Gesamtbetrachtung rauskürzen.

Die Mainloop hat auch kein festes Timing, weil im Hintergrund immer irgendwelche Interrupts beschäftigt sind. lastTime wird hier immer aufaddiert, hat kein festes Timing in dem Sinne wie es gedacht ist. Der Vergleich sollte

1
>=

sein und

1
lastTime += timerDelay

. Damit man ein halbwegs konstantes Intervall hat. Den Unterschied zwischen

1
lastTime = millis()

und

1
lastTime += timerDelay

sollte man sich einmal in Ruhe klarmachen. Hat beides Vor- und Nachteile, je nach Anwendungsfall. Für

1
lastTime = millis()

ist es auch entscheidend an welcher Position diese Zeile steht.

Ist aber für die Übertragung alles vollkommen egal. Was ist denn überhaupt das Problem? Oder ist das nur eine generelle Frage, weil man zufällig ein Oszi angeklemmt hat?

#7788286
Lesenswert?

Wenn du das Originalzeug von Espressif nutzt (was ich annehme), hast du aufgrund des echtzeitbefreiten Kernels schon mal Null Latenzgarantien, auch wenn du den Wifi-Stack hackst (was aber gar nicht ETSI-konform waere). Mit FreeRTOS kann es besser sein, aber auch da muss man den original Radio-Stack umdesignen. Ein Produkt sollte daraus trotzdem nie werden, der 8266 hat einfach zuviele Boecke und einige dieser Brettle gehoeren eigentlich spaetestens nach dem EMV-Test in die Entsorgung. Mit dem ESP32 mag's besser sein, ich bin lieber auf Mediatek umgestiegen.

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