Forum: Mikrocontroller und Digitale Elektronik Taktgenauigkeit RaspberryPi


von Eis-x (Gast)


Lesenswert?

Hey zusammen,

ich möchte Messwerte über SPI am Raspberry Pi einlesen. Da diese 
Zeitabhängig sind, würde ich gern wissen in wie fern diese tatsächlich 
äquidistant sind. Ich hatte mir dazu überlegt ein EYE-Diagram des 
SPI-Taktsignals anzulegen, bei 150 Mhz maximaltakt wird das Ganze aber 
schon recht sportlich. Warum findet man da eigentlich nichts im Internet 
zu ? Ich hätte gedacht, dass das schon mal Menschen vor mir untersuchen 
wollten. Oder habe ich da irgendwo ein Fehler in meinem Ansatz ?

von Wolfgang (Gast)


Lesenswert?

Eis-x schrieb:
> Oder habe ich da irgendwo ein Fehler in meinem Ansatz ?

Was für ein Betriebssystem hast du denn auf deinem Raspberry Pi am 
laufen, um ausreichend echtzeitfähig zu sein?

von georg (Gast)


Lesenswert?

Eis-x schrieb:
> Oder habe ich da irgendwo ein Fehler in meinem Ansatz ?

Ja. Der Raspi mit Linux ist kein Echtzeitsystem. Man könnte zwar messen, 
ob Taktsignale quarzgenau sind, nur sagt das über die Äquidistanz von 
Ereignissen praktisch nichts aus.

Googel einfach mal mit Raspberry Echtzeit. Du bist nicht allein.

Georg

von Eis-x (Gast)


Lesenswert?

Also mein AD-Wandler sameplt mit 500 kSps, meine Auflösung liegt bei 12 
Bit. Bei 2 Byte pro Messwert komme ich also auf 16 MHz. also etwa einem 
zehntel der max. Taktrate.

Die fehlende Echtzeitfähigkeit versuche ich durch DMA zu umgehen. Das 
macht das hier verwednete Raspbian (mit bcm835 treiber) ab einer 
Abfragengröße >96 Byte automatisch.

von Eis-x (Gast)


Lesenswert?

Korrektur: *der AD-Wandler samplet mit 1 MSps, daher auch die 16 Mhz 
Taktrate

von M. Н. (Gast)


Lesenswert?

Wie von anderen bereits angemerkt:
Die Taktrate des SPIs leitet sich vom Systemtakt ab und ist recht genau.
Anmerkung: Abhängig von deiner Anwendung kann es selbst bei Quarz 
getakteten Prozessoren zu messbaren Mischprodukten den Clock-Jitters in 
deinem ADC-Datenstrom kommen. Selbst in der Audiotechnik kann das ein 
massives Problem darstellen.

Wenn du nun in deinem Linux einen SPI-Transfer startest läuft dieser 
wohl geordnet ab, im Rahmen der Taktpräzision des Raspis. Das Problem 
sind die Zeiten dazwischen, in denen dein Linux auch mal für einige 
Millisekunden sagen kann: "Ne. Ich mach jetzt was anderes." Da fehlt in 
diesem Fall die Echtzeitfähigkeit.

Wenn du wirklich Echtzeitfähig sein willst, kannst du versuchen das auf 
dem Raspi mit Realtime Kernel etc hinzukriegen. Da liegen bei mir jetzt 
keine Erfahrungen vor. Ich würde eventuell einen zweiten 
Puffer-Controller zwischen Raspberry Pi und ADC hängen. Dieser wird dann 
low-level programmiert sodass er den AD-Wandler echtzeitfähig bedienen 
kann. Über ein weiteres SPI Interface kann dann das Raspberry Pi die 
Daten auslesen, ohne dass es an dieser Stelle zu größeren 
Echtzeitproblemen kommt. Man muss natürlich im externen uC soviel 
Speicher haben, dass nichts überläuft. Das sollte aber im Zeitalter des 
billigen Speichers kein Problem sein, zumahl der uC sonst ja nichts 
anderes tut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.