Ausführungszeit/Anzahl Takte einer Funktion/eines Programme

Gast #274576
Lesenswert?

Hallo,

gibt es die Möglchkeit (ausser im Disassembler die Befehle zu zählen)
die Anzahl der Takte die für eine Funktin benötigt werden zu
bestimmen?
Evt ein schickes Programm das die Anzahl benötigter Takte angiebt?
Konnte irgendwie nix finden (bzw hab nur nach dem falschem gesucht).

Bin gerade am überlegen ob ich eine etwas umfangreichere Auswertung von
Daten die über die serielle Schnittstelle reinkommen direckt in der ISR
mache um Speicherplatz zu sparen.
Dazu würd ich gerne wissen welcher Zeitaufwand dahinter steckt, da ja
die Daten mit fester geschwindigkeit reinkommen und die ISR fertig sein
muss bevor das nächste Byte da ist.

Vielen Dank schon mal
Philipp
Gast #274577
Lesenswert?

Hallo Philipp,

ich weiß ja nicht, ob Du C oder Assembler programmierst. Ich habe mit
Erfolg im Simulator des AVR-Studios den Zykluszähler bei verschiedenen
Breakpoints genommen und mir die Ausführungszeiten des dazwischen
ausgeführten Codes berechnet. Geht prima. Allerdings geht das nicht so
recht, wenn Du externe Daten auswertest.

Gruss
Hans-Christian
Gast #274578
Lesenswert?

Hallo Hans-Christian,

ja, hatte ich vergessen zu sagen. Programiere in C, könnte das ganze
natürlich auch ins AVR Studio exportieren und da laufen lassen aber am
liebsten währe mir ein Programm das einfach nur die ASM Befehle zählt
(evt noch weiß welche 2 Zyklen brauchen) und mir dann einfach nur die
Anzahl ASM Befehel/Takte ausgiebt.
Werd Deine Idee aber gleich mal testen.
Achso, ja, verwende derzeit den IAR Compiler, werde aber bald auf
WinAVR umsteigen.

Gruss
Philipp
Gast #274580
Lesenswert?

Hmm, das mit dem Oszi ist auch eine gute Idee. Hab nur leider keins, und
so "genau" brauch ichs auch nicht. Mir wird einfach ein Prog reichen
das  die ASM Befehle zählt.
Aber trotzdem ne tolle Sache, werd ich im Hinterkopf behalten, Danke.
#274581
Lesenswert?

Hi,
du musst bedenken, dass je nach Eingabewerten eine Funktion mal laenger
und mal kuerzer dauern kann und es mit einer plumpen Zaehlung der
Befehle nciht einfach getaeen ist, wenn Spreunge oder Schleifen
vorhanden sind.

Da hilf nur geschicktes Siumulieren oder messen an der realen
Hardware.

Gruss Tobias
Gast #274582
Lesenswert?

Hi Tobias,

ja ich weiß, es geht im Endeffeckt auch nur darum in welcher
Größenordnung sich die Funktion ungefähr befindet. Halt eine worst case
Betrachtung. Mir geht es darum, ob ich eingehende Daten über die
serielle Schnittstelle auswerten/verarbeiten kann bevor die Übertragung
für das nächste Byte komplett ist oder ob ich einen Buffer brauche.

Aber Danke für den Hinweis, hätte ich anfangs etwas genauer beschreiben
müssen.

Philipp
Gast #274584
Lesenswert?

Hallo noch mal,

vielen Dank für Eure hilfe. Habs inzwischen so gelöst das ich mir im
Simulator den Programmspeicher mit den ASM Befehlen angeschaut habe.
Und dann musst ich ja nur noch
Endspeicheradresse-Anfangspeicheradresse=Anzahl Befehel in HEX rechnen
und war Glücklich.

Danke noch mal
Philipp

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