Forum: Mikrocontroller und Digitale Elektronik Benötigte Leistung für das Auslesen von Sensoren


von Manuel K. (manuel_k978)


Lesenswert?

Hallo Zusammen,

da ich leider nicht fündig wurde und auch nicht so tief in der Materie 
stecke, möchte ich gerne eine Frage stellen. Ich habe ein digitales 
Signal das in einen Raspberry Pi Pico übertragen und dort zu einer 
Drehzahl umgewandelt wird. Nun zu meiner Frage: Woher weiß ich denn das 
die Leistung meines Mikroprozessors ausreichend für diese Aufgabe ist.
Zwar ist mir klar, DAS die Leistung ausreicht aber mich interessiert wie 
ich das Ganze in Zahlen fassen kann.

Der Pico bietet bis zu 133 MhZ aber wie viel davon wird benötigt sobald 
ein Signal ankommt? Wovon ist das abhängig?
Die Frage bezieht sich darauf, das ich gerne nachweisen würde, das bis 
zu einer gewissen Drehzahl x die Leistungsreserven ausreichend sind.

Vielen Dank

von Sebastian R. (sebastian_r569)


Lesenswert?

Wenn man es richtig macht, braucht das Messen der Drehzahl praktisch 
keine Rechenleistung (Hardware-Timer).

Ansonsten: Man kann berechnen, wie viele Zyklen jeder Befehl benötigt 
und wie viele Zyklen und wieviel Prozessorzeit damit für eine gewisse 
Aufgabe draufgeht.

Wenn man es schon umgesetzt hat, kann man auch wirklich messen, wie viel 
Prozessorzeit auf eine Aufgabe geht.

von c-hater (Gast)


Lesenswert?

Manuel K. schrieb:

> da ich leider nicht fündig wurde und auch nicht so tief in der Materie
> stecke

Ja, leider nicht mal tief genug, um halbwegs kompetente Fragen zu 
stellen.

> Ich habe ein digitales
> Signal das in einen Raspberry Pi Pico übertragen

Was für ein "digitales Signal"? Wie genau gelangt es in den Pico?

> und dort zu einer
> Drehzahl umgewandelt wird.

Wie genau wird es "in eine Drehzahl umgewandelt"? Was genau passiert 
dann mit dieser "Drehzahl"?

> Nun zu meiner Frage: Woher weiß ich denn das
> die Leistung meines Mikroprozessors ausreichend für diese Aufgabe ist.

Nun, indem du erstmal genau das klärst, was ich dich gefragt habe. Und 
dann ermittelst, wie lange der Pico dafür jeweils genau braucht.

von Wolfgang (Gast)


Lesenswert?

Manuel K. schrieb:
> Der Pico bietet bis zu 133 MhZ aber wie viel davon wird benötigt sobald
> ein Signal ankommt?

Es wird bei jedem Signal die volle Leistung des Prozessors genutzt, 
allerdings nur für kurze Zeit. Danach verbringt der Prozessor seine Zeit 
mit anderen Dingen, ggf. einfach in einer Warteschleife - auch mit volle 
Leistung, jedenfalls sofern er nicht schlafen geschickt wird - bis das 
nächste Signal kommt.
Du kannst am Anfang deiner Signalverarbeitung auf einem Pin ein Signal 
ausgeben und am Ende wieder. Dann kannst du dir mit einem Oszi angucken, 
wie stark der Prozessor mit der Signalverarbeitung ausgelastet ist.

von N. M. (mani)


Lesenswert?

Wie bereits gesagt ist die Effektivität von einigen Faktoren abhängig.

Nutzt du geschickt die Peripherie des verwendeten uC aus? Dann kannst du 
vielleicht viel Prozessorlast einsparen (da es ja in der vorgelagerten 
Hardware abgehandelt wird). Ein Beispiel: du nutzt einen DMA um Daten zu 
Schaufeln. Prozessorlast == 0%.
Machst du das gleiche mit dem Prozessor direkt, hast du vielleicht 100%.

Schreibst du Code der zu deinem uC passen (z.B. Verzicht auf 
Fließkommaarithmetik wenn keine FPU vorhanden ist)? Dann kannst du 
deutlich Takte einsparen.

Sind deine Algorithmen gut?
Keine Iteration über 12 verschachtelte for Schleifen?
Vermeidung von delay?
Und so viel mehr dass man es nicht aufzählen kann...

Alleine in den 3 Abschnitten kann man einen Faktor 1000 vergraben.
Du siehst also dass so eine allgemeine Frage wenig Sinn macht.

Aber im allgemeinen kann man sagen, dass man mit etwas Erfahrung 
abschätzen kann ob eine Aufgabe für einen uC umsetzbar ist.
Und glaub mir, ein Raspi Pico ist trotz des Namens jetzt nicht so klein 
wie er scheint.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Vergleichbare Frage: Passt mein Krimskram in einen Schuhkarton.

Es hängt davon ab, was für einen Krimskram Du hast und wieviel davon.

Da gibt es 2 Herangehensweisen:

a) Du kennst den Krimskrams, nimmst den sperrigsten und rechnest den 
aus. Sind es 2 Integer-Operationen je Signal oder eine vollständige FFT 
der letzten 1000? Und wenn die Leistung des uC dann 10x höher ist, 
reicht das vorerst

b) Du wirfst den Krimskrams in die Box (in den uC) schaust nach der 
maximalen Zykluszeit und erhöhst die Signalrate solange, bis nur noch 
50% Reserve bleiben.

In beiden Fällen wird Dir das um die Ohren fliegen, irgendwann. Dann 
nimmst Du 10fache Rechenleistung oder sortierst den Krimskrams um 
(optimierst Deinen Code). Baue als gleich zu Beginn entsprechende 
Metriken mit ein (minimale Reserve der Zykluszeiten)

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.