Hallo all zusammen,
da ich nach langem googlen nichts gefunden habe was mir weiterhelfen kann und ich selber auch keine Ideen mehr habe frage ich mal hier - vielleicht hat jemand eine Idee zu meinem Problem.
Also der Grundaufbau:
Ich benutze den Raspberry 3 und einen Beschleunigungssensor, auf den der Chip LSM6DS3 integriert ist.
-> https://www.seeedstudio.com/Gr…p%3BGyroscope-p-2606.html
Ich möchte mit dem Raspberry die Beschleunigungswerte in x,y und z - Richtung auslesen. Programmiert habe ich das Programm in der Sprache C++. Innerhalb des Programms habe ich zwei Threads am laufen (erzeugt mithilfe der pthread-Bibliothek). In einem Thread läuft ein kleines GUI zum starten und stoppen der Messung. In dem anderen Thread läuft lediglich die Aufnahme und Auslesen der Sensordaten.
Die Sample Rate des Sensors ist auf 13kHz eingestellt und die Baudrate des Raspberry Pi I2C-Busses ist in der ensprechenenden DT Datei auf 400k gesetzt. Da der Sensor im I2C-FastMode mit 400kHz angegeben ist, nehme ich an dass es mit dem Raspi auf jedenfall möglich sein sollte die Sensordaten mit ca. 20kHz oder mehr auszulesen.
Zum Auslesen habe ich bereits verschiedene Methoden verwendet: Einerseits mithilfe der "wiringPiI2C"-Bibliothek und andererseits mit dem Internen SMbus, mit dem ich durch einen leseaufruf direkt den gesamten Block an Daten auslesen kann (-> hier die genannten Funktionen zum SMbus http://www.netzmafia.de/skript…ware/RasPi/RasPi_I2C.html // um genau zu sein diese: i2c_smbus_read_i2c_block_data)
Durch letzere Methode ist es ein wenig schneller möglich als mit der wiringPi Bibliothek.
Insgesamt läuft ein Schleifendurchlauf (einmal x,y,z-Richtung auslesen) mit ca. 2400 Hz.
Da die Daten vom Sensor allerdings mit 13kHz aufgenommen werden, ist dies für eine anschließende Frequenzanalyse nicht genug, ich würde gerne mind. 20kHz erreichen.
Hat jemand noch eine Idee woran es liegen kann, dass das Auslesen so lange dauert? Und wie man es evtl. schneller bekommen kann?
Ich freue mich über jede Idee und Hilfe - Danke schonmal im Voraus