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
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.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.