Forum

Einloggen | Registrieren | RSS  

hubert

15.02.2018,
09:55
 

Zeitmessung mit Raspberry (Computertechnik)

Hallo,

ich möchte mit dem Raspberry die Länge von mehreren aufeinender folgenden Impulsen messen
das Ganze dauert maximal 100ms
die Impulslänge liegt bei 0,5ms
das klappt auch weilweise, allerdings kommt anscheinend manchmal das System dazwischen
kennt da jemand eine Lösung?

el-haber

15.02.2018,
10:30

@ hubert

Zeitmessung mit Raspberry

Hast du die Uhr mit einem Interrupt vom Counter gebaut oder misst du die Zeit mit einer Reihe von NOP-Anweisungen zur kalibrierung auf den Systemtakt?

Wie machst du die Abfrage des Impulses (polling am Port oder Interrupt über Port oder Timer)?

Ints können hier die Erebnisse beeinflussen.

cu
St

bastelix(R)

15.02.2018,
23:27

@ hubert

Zeitmessung mit Raspberry

» Hallo,
»
» ich möchte mit dem Raspberry die Länge von mehreren aufeinender folgenden
» Impulsen messen
» das Ganze dauert maximal 100ms
» die Impulslänge liegt bei 0,5ms
» das klappt auch weilweise, allerdings kommt anscheinend manchmal das System
» dazwischen
» kennt da jemand eine Lösung?
Falls dir el-habers Tipps nicht weiterhelfen musst du deinen Code posten, die Kristallkugeln sind grad alle beim Kundendienst.

el-haber

16.02.2018,
14:39

@ el-haber

Zeitmessung mit Raspberry

Hi,

» Hast du die Uhr mit einem Interrupt vom Counter gebaut oder misst du die
» Zeit mit einer Reihe von NOP-Anweisungen zur kalibrierung auf den
» Systemtakt?
»
» Wie machst du die Abfrage des Impulses (polling am Port oder Interrupt über
» Port oder Timer)?
»
» Ints können hier die Erebnisse beeinflussen.
»

hab noch was vergessen - du brauchst auf jeden Fall ein "echtzeitfähiges Programm" auf dem Raspbian.
Das ist compiliert und läuft mit hoher Priorität, damit es nicht von der Int-Steuerung / Sheduler unterbrochen wird.
Mit Shell und Short-Timer-Abfrage kommst du nicht in dieses Zeitraster und wirst zudem vom Sheduler unterbrochen.

» cu
» St

hubert

19.02.2018,
16:44

@ bastelix

Zeitmessung mit Raspberry

hier mein Testcode in Python

ctr=0
if GPIO.input(12)==1:
ctr=ctr+1
print(ctr)

ctr=0
if GPIO.input(12)==0:
ctr=ctr+1
print(ctr)

Diesen Code habe ich mehrfach mit einer Frequenz von 500Hz nacheinender laufen lassen und die Anzahl der Einlesevorgänge zählen lassen.
Da kamen sehr unterschiedliche Ergebnisse raus
30 bis 500




» » Hallo,
» »
» » ich möchte mit dem Raspberry die Länge von mehreren aufeinender
» folgenden
» » Impulsen messen
» » das Ganze dauert maximal 100ms
» » die Impulslänge liegt bei 0,5ms
» » das klappt auch weilweise, allerdings kommt anscheinend manchmal das
» System
» » dazwischen
» » kennt da jemand eine Lösung?
» Falls dir el-habers Tipps nicht weiterhelfen musst du deinen Code posten,
» die Kristallkugeln sind grad alle beim Kundendienst.

el-haber

19.02.2018,
17:11

@ hubert

Zeitmessung mit Raspberry

» hier mein Testcode in Python
»
» ctr=0
» if GPIO.input(12)==1:
» ctr=ctr+1
» print(ctr)
»
» ctr=0
» if GPIO.input(12)==0:
» ctr=ctr+1
» print(ctr)
»
» Diesen Code habe ich mehrfach mit einer Frequenz von 500Hz nacheinender
» laufen lassen und die Anzahl der Einlesevorgänge zählen lassen.
» Da kamen sehr unterschiedliche Ergebnisse raus
» 30 bis 500
»
---- da kann der Print(cr) schon eine Störungsquelle sein.

Trenne die 3 Bereiche:
- Initialisierung: cr = 0; zaehle = 1;
- Funktion als schleife : while(zaehle) {while GPIO.input(12) == 0 ; while GPIO.input(12) == 1; cr++; zaehle = GPIO.input(10) }
- Ausgabe: Print (cr) ; nur 1x im Programm, da eigener Interrupt im Sheduler ausgelöst wird, der das Zählen deaktiviert.

Programmlauf wird dann mit Input (10) unterbrochen (0=Masse).

»
»
»
» » » Hallo,
» » »
» » » ich möchte mit dem Raspberry die Länge von mehreren aufeinender
» » folgenden
» » » Impulsen messen
» » » das Ganze dauert maximal 100ms
» » » die Impulslänge liegt bei 0,5ms
» » » das klappt auch weilweise, allerdings kommt anscheinend manchmal das
» » System
» » » dazwischen
» » » kennt da jemand eine Lösung?
» » Falls dir el-habers Tipps nicht weiterhelfen musst du deinen Code
» posten,
» » die Kristallkugeln sind grad alle beim Kundendienst.