Arduino: pulseIn(.)

OP (Firma: Q3) #7751509
Lesenswert?

Die Funktion aus dem Arduino-Framework wartet (grob vereinfacht) z.B. auf einen H-Impuls an einem Pin und gibt nach dessen Ende (Pin geht auf L) die Länge in Mikrosekunden oder - bei Überschreiten des Timeout - eine Null zurück.

Was mir unklar ist: Darf der Wechsel von L zu H (Beginn des Impulses) erst passieren, nachdem die Funktion aufgerufen wurde, oder darf sie auch in einen bereits vohandenen H-Pegel "hineinlaufen" (und liefert dann quasi den Restwert)?

#7751516
Lesenswert?

Steht eigentlich unmissverständlich in der Doku:

»Reads a pulse (either HIGH or LOW) on a pin. For example, if value is HIGH, pulseIn():

waits for the pin to go from LOW to HIGH, starts timing, then waits for the pin to go LOW and stops timing.

Returns the length of the pulse in microseconds or gives up and returns 0 if no complete pulse was received within the timeout.«

Moderator (Firma: Titel) Persönliche Seite #7751522
Lesenswert?

Walter T. schrieb:

Norbert schrieb:

Steht eigentlich unmissverständlich in der Doku

Die Doku ist da tatsächlich uneindeutig.

Deshalb einfach den Code anschauen:

1
  // wait for any previous pulse to end
2
  while ((*portInputRegister(port) & bit) == stateMask)
3
    if (numloops++ == maxloops)
4
      return 0;
5
  
6
  // wait for the pulse to start
7
  while ((*portInputRegister(port) & bit) != stateMask)
8
    if (numloops++ == maxloops)
9
      return 0;
10
  
11
  // wait for the pulse to stop
12
  while ((*portInputRegister(port) & bit) == stateMask) {
13
    if (numloops++ == maxloops)
14
      return 0;
15
    width++;
16
  }

Mein Tipp: traue nie einer Funktion, deren Code du nicht hast oder nicht verstehst.

#7751535
Lesenswert?

J. S. schrieb:

Den Quelltext hat man auch mit installierter IDE nicht weil der Core als Archivefile gelinkt wird.

Dann muss sich das aber bei neueren Versionen signifikant geändert haben. Damals™ als ich mal hinein schaute – 1.8.13 – wurde das Archiv beim jeweils ersten Erstellungsprozess aus den lokalen Sources automatisch gebaut und sofort hinzu gebunden.

Beitrag #7751644 wurde von einem Moderator gelöscht.

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