www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ausführungszeit/Anzahl Takte einer Funktion/eines Programme


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans-Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: T. Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du noch einen Ausgabe-Port-Pin frei hast, beim Eintritt in Funktion
auf High beim Austritt auf Low und dann mit dem Oszi messen.

Gruss

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tobias Schneider (tobias)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fritz Ganter (fritzg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim avr-gcc gäbe es ein lst-File mit dem Assemblercode. Am Ende jeder
Funktion steht die Codegrösse, dann hast mal einen Anhaltspunkt.
Vielleicht gibts sowas beim IAR auch.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.