Abschätzung Rasp 4 zur Messdatenaufnahme

OP #6490220
Lesenswert?

Hallo liebes Forum,

ich hätte eine Frage zum Abschätzen in Bezug auf den Raspberry Pi 4 und 
der Datenaufnahme. Also ob man das was ich vor habe versuchen könnte 
oder es von vorne rein aussichtslos ist.

Ein 8Ch-ADC (ADS8344) soll über eine SPI-Schnittstelle seine Messdaten 
(Abstastrate pro Kanal: ~10ksps) zum Rasp schicken und abspeichern. Das 
heißt man wäre bei ca. 1,9MBit/s Datenrate (24Bit*8Kanäle*10ksps).

Ein Messzyklus besteht in meinen Wunschvorstellungen aus der Abtastung 
von 600 Punkten pro Kanal, d.h. 600Punkte*10ksps = 60ms Messzeit.
Dieser Zyklus soll alle 100ms wiederholte werden, sprich es gibt 40ms 
Pause.

Wäre so etwas grundlegend machbar?
Beitrag #6490470 wurde von einem Moderator gelöscht.
Gast #6490532
Lesenswert?

ElecEddy R. schrieb:
> Dieser Zyklus soll alle 100ms wiederholte werden

Wie genau muss das sein? Der Pi ist nicht Echtzeit fähig, wenn dem OS 
irgendwas anderes einfällt startet deine nächste Messung halt später.
Ich würde das ganze zeitkritische Zeug auf einem eigenen Controller 
machen z.B. STM32
Die Messdaten schiebt der dann mit Zeitstempel versehen z.B. per 
Ethernet rüber.
OP #6490805
Lesenswert?

Ok, erstmal danke für die ganzen Abschätzungen. Das hilft mir sehr.

Ich denke demnach auch, dass es eine gute Idee ist einen Mikrocontroller 
zwischen ADC und Rasp für die zeitkritischen Dinge zu bauen.
Der Rasp dient dann nur zum Starten der Messung und zur Anzeige der 
Daten, welche er über USB oder Ethernet mit Zeitstempel bekommt.
Zumal im System auch noch ein DAC (AD5761) angesteuert werden müsste, 
welcher im 10ksps Takt Spannungswerte einstellt.


Also wäre dann der Ablauf:

--> Messzyklus starten auf Rasp 4
--> µC wird initialisiert
--> µC startet Messprogramm
--> Spannung wird von DAC(AD5761) mit 10ksps eingestellt
--> Spannung wird auf 8 Kanäle aufgeteilt
--> 8 Kanäle werden von ADC(ADS8344) mit 10ksps digitalisiert
--> Daten kommen über SPI zu µC und bekommen Zeitstempel
--> Messdaten über USB/Ethernet zu Rasp
--> Messzyklus beenden und Daten anzeigen auf Rasp


Bei der Datenmenge von wenigen Mbit/s (2... 3... 4 Mbit/s) sollte USB 
doch eigentlich reichen, oder würde Ethernet einen wichtigen Vorteil 
haben?

Zwecks µC, ich hab hier noch ein MSP-EXP430F5529LP und ein 
LAUNCHXL-F28379D liegen. Eines von beiden sollte das doch schaffen 
können.
Ich bin nur noch nicht ganz draus schlau geworden, ob diese genug 
SPI-Interfaces (2) haben um sowohl den DAC als auch den ADC mit 
bespielen zu können (bspw. über CS).
#6492208
Lesenswert?

MaWin schrieb:
> ElecEddy R. schrieb:
>> Wäre so etwas grundlegend machbar?
>
> Nein.
>
> Ein rPi ist genau so wenig echtzeitfähig wie dein Windows-PC.

Ja, nein, ... vielleicht doch.

Mit so einem Linux kann man ein paar ziemlich lustige Sachen tun.

Es gibt da ja so Realtime-Patches, außerdem RTAI und Xenomai. Womöglich 
kann man seine Software auch als Kernelthread bauen...

Außerdem kann man den Scheduler des Linux-Kernels mit dem Bootparameter 
isolcpus anweisen, einen oder mehrere CPU-Cores nicht zu benutzen. Diese 
sind dann (bis auf die zwingend notwendigen Interrupts) frei für 
Echtzeitprozesse, an die sie per taskset(1) gebunden werden können... 
YMMV.

> Und falls du ihn ohne Linux programmieren wolltest: er ist weitgehend
> undokumentiert.

Das gilt lediglich für den VideoCore, aber nicht für die CPU.

Das Lustige ist, daß die meisten Menschen mit dem Begriff "Echtzeit" 
etwas ganz anderes verbinden als Leute, die sich damit auskennen. 
Nachzulesen hier [1].

[1] https://de.wikipedia.org/wiki/Echtzeit

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