Widerspruch in Doku zu "pulseIn()" bzgl. timeout

Hallo und frohes Neues!

Ich habe gerade auf der Arduino Website nochmal den Artikel über die pulseIn Funktion gelesen und meiner Meinung nach einen Widerspruch festgestellt.

Dort steht unter Description: "Returns the length of the pulse in microseconds or gives up and returns 0 if no complete pulse was received within the timeout."

Und unter Returns steht: "the length of the pulse (in microseconds) or 0 if no pulse started before the timeout (unsigned long)"

Gehen wir von value = high aus und sagen der timeout ist eine Sekunde: Wenn ich nun einen Puls empfange, der 500ms nach Funktionsaufruf auf high geht und eine Sekunde high bleibt, wird der dann nach der Hälfte unterbrochen oder wartet die Funktion dann noch die volle Sekunde, bis die fallende Flanke empfangen wird?

Das erste Zitat legt nahe, dass das Signal innerhalb des Timeouts abgeschlossen sein muss, das zweite Zitat sagt ja nur, dass das Signal innerhalb des Timeouts beginnen muss.

Ich hoffe ihr versteht die Frage und könnt mir helfen. Danke schonmal im Vorraus!

Mahimus:
... frohes Neues!

Danke, gleichfalls!

Mahimus:
Ich hoffe ihr versteht die Frage und könnt mir helfen.

Ein Timeout ist ein Timeout. Wenn der rum ist, während der Puls noch läuft, würde ich mit Rückgabe einer Null rechnen. Es wurde ja kein vollständiger Puls festgestellt.

Warum probierst Du's nicht einfach?

Gruß

Gregor

Ich hoffe ihr versteht die Frage …

Aber klar doch!

Es gibt 3 Abbruchbedingungen!

  1. Der vorherige Puls ist noch nicht beendet
  2. Der zu messende Impuls kommt nicht
  3. Der zu messende Puls ist noch nicht beendet.

Zusammen:
Der zu messende Impuls MUSS vollständig, in das mit TimeOut bezeichnete, Zeitfenster passen sonst hagelt es eine Null.

Kann man auch schön im Quellcode erkennen.

combie:
Der zu messende Impuls MUSS vollständig, in das mit TimeOut bezeichnete, Zeitfenster passen sonst hagelt es eine Null.

Kann man auch schön im Quellcode erkennen.

Super, vielen Dank!

Wisst ihr auch was passiert, wenn während der Pulsmessung mit PulsIn ein Interrupt dazwischenfährt? Kann die Messung dann im schlimmsten Fall nicht abgeschlossen werden weil der Flankenwechsel verpasst wird oder ist der worst case, dass die gemessene Zeit etwas ungenau wird?