Zeitliche Genauigkeit/Auflösung bei GPIO Interrupts ?

  • Hallo zusammen,


    für eine Laufzeitmessung möchte ich mehrere GPIO Inputs an einem Raspberry benutzen.
    Die zeitliche Genauigkeit bzw. Auflösung für meine Messung sollte dabei unter 10us, besser bei 1us liegen (Mikrosekunden...).
    Die absolute Genauigkeit ist dabei nicht wichtig, sondern die relative Genauigkeit der GPIO Änderungen zueinander.
    Dafür würde ich gerne GPIO Interrupts benutzen.
    Mir scheint, die meisten benutzen dafür eher die pigpio Library?
    Ist eine Genauigkeit von 1us mit den GPIO Interrupts machbar?
    Oder würde das zu sehr jittern, weil da andere Events (OS, GUI...) dazwischenfunken?
    Hat da jemand Erfahrung mit?
    Danke für alle Tipps!

  • Hi,


    also wie genau das mit einem Raspi geht kann ich leider nicht sagen aber Linux ist kein real time OS. Für so was ist ein Arduino vielleicht die bessere Wahl. Da passieren Sachen sehr vorhersehbar, da da kein OS sondern der Code direkt läuft. Nur ob deine Auflösung erreichbar ist kann ich leider auch nicht sagen.


    Wenn die Daten dann noch weiterverarbeitet werden sollen kann mann ja noch einen Raspi nehmen.


    Viele Grüße
    Thomas

  • Ohne da jetzt genaue Zahlen vorweisen zu können: 10us Genauigkeit ist beim Raspi mit normalem Linux nicht drin.
    Da läuft ein normales Linus, welches ständig von Interrupts unterbrochen wird, "parallel" viele Prozesse abarbeitet...
    Zeitliche Konstanz wie du sie benötigst, ist da nicht drin.


    Verwende einen Arduino oder einen ESP8266 (der ist schneller) oder etwas ähnliches: Der übernimmt die Messung an seinen GPIOs und sendet die Daten per serieller SS an den RasPi zur Weiterverarbeitung.

  • Danke für die Links!
    Das das OS nicht echtzeitfähig ist in diesem Zeitraster ist mir schon klar...
    Aber ich dachte eigentlich, dass die pigpio Library mit Interrupts und Zeitstempeln (Ticks) arbeitet?
    Mittels gpioCfgClock könnte man die Abtastrate bis auf 1MHz hochdrehen und dann mit gpioSetAlertFunc eine Callback Funktion registrieren.
    Allerdings werde ich aus der Doku nicht schlau, mit welchen Latenzen ich da rechnen muss.


    Wenn es nicht geht, muss ich eben einen Arduino oder ESP8266 nehmen, fliegen hier noch ein paar rum...



    Automatisch zusammengefügt:
    [hr]


    Das hier ist hochinteressant zum Thema "High Speed Detection" mit der pigpio Library - bin ich gerade noch drüber gestolpert:
    https://www.raspberrypi.org/forums/viewtopic.php?p=1015264

    Edited once, last by Franky1 ().