www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Laufzeit eines Programms bestimmen


Autor: Poseidonius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es ein Tool mit dem ich die Laufzeit einer Schleife bestimmen kann 
ohne 2 Stunden lang Assembler Befehle zu zählen. Ich möchte die Periode 
einer Regelschleife verringern und wissen was der Berechnungsaufwand des 
Algorithmus im Programm minimal zulässt.

Eine Lösung die ich bisher genutzt habe war mit jedem neuen 
Schleifendurchlauf ein PIN zu toggeln und mir das dann am Oszilloskop 
anzuschauen.

Danke für Eure Tipps

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es wenn Du bei eintritt in die Schleife einen Timer startest 
und bei austritt stoppst. Er zeigt Dir dann die Zeit. Nur sollte der 
Timer breit genug sein das kein Überlauf entsteht.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du noch einen Timer freihast, kannst Du ihn wunderbar zur Messung 
der Zeit einsetzen:  Am Beginn der Schleife resetten und starten, am 
Ende stoppen, Wert auslesen, per SPI o. ä. auf ein LC-Display o. ä. 
ausgeben.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur eine Minute... lach :-)

>Nur sollte der Timer breit genug sein das kein Überlauf entsteht.

Dem kann man durch passende Wahl des Prescalers entgegenwirken.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eine Minute :)

Genau, Prescaler... Das muss man dann nur bei der Betrachtung des Wertes 
berücksichtigen...

Autor: Gisbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder am Ende der Schleife einen Portpin kippen - dann reicht ein Oszi 
(oder Stopuhr - je nach Zeit)

Grüße,

Gisbert

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Setze beim Scheifeneintritt einen Portpin auf H. Beim Verlassen der 
Schleife auf L.

Mit dem Oszi kannst Du die Zeit bestimmen.

Autor: Der Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Gisbert, Du warst schneller als ich!

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Macht er doch schon :-)
Hier sind alle Antworten aber recht knapp... Schade das nicht auch die 
Sekunden angezeigt werden :-P

Autor: Gisbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hätte den Beitrag des OP wohl bis zu Ende lesen sollen...

Aber was ist an dieser Lösung schlecht? Alles andere ist wesentlich 
aufwändiger (da es ja wohl um die Minimierung der Programmierung geht)

Grüße,

Gisbert

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Schade das nicht auch die Sekunden angezeigt werden :-P

Wenn er das will, könnte er sich einfach ein Impulsdauermessgerät bauen. 
Dann reicht im Messobjekt simples Pin-Toggeln bei Ein-/Austritt in/aus 
dem interessierenden Codeabschnitt.  Das Messgerät kann im einfachsten 
Fall nur aus einem quarzgetakteten µC bestehen, wenn man sich die 
Messwerte von ihm über die serielle Schnittstelle zum PC schicken läßt. 
Der riesige Bereich möglicher sinnvoller Messzeiten (wenige µs bis 
etliche s) ist zu bewältigen, indem man mehrere, unterschiedlich schnell 
tickende Zähler laufen lässt (reichen evtl. zwei aus?).

Autor: Poseidonius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich hatte gedacht, es gibt in Simulavr, avrStudio usw. eine 
Möglichkeit ohne irgendwelchen Programmieraufwand (nicht gleich hauen 
:-) ) die Sache eins zwei drei zu bekommen.

Dann bleib ich bei der Oszi Methode, der Timer ginge natürlich auch, 
müsste man nur ein bisschen drüber nachdenken, dass er nicht überläuft.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im AVR-Studio gibt es doch eine Stoppuhr.

MW

Autor: Poseidonius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo finde ich die?

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
View  Toolbars  Processor aktivieren. Mit Rechtsklick auf 'Stopwatch' 
kriegt man die Option die Stopuhr zurückzusetzen.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRFan wrote:
> Nur eine Minute... lach :-)
>
>>Nur sollte der Timer breit genug sein das kein Überlauf entsteht.
>
> Dem kann man durch passende Wahl des Prescalers entgegenwirken.

Was allerdings auch die Aufloesung verringert. Wenn Du es genau wissen 
willst zaehle die Befehle, schau im Datenblatt nach wieviel Takte sie 
brauchen. Bei nem AVR kann man sowas noch machen. Unterbrechungen durch 
Interrupts und andere Ereignisse sind dann natuerlich nicht mit 
beruecksichtigt, also "Netto"Laufzeit.

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau das macht die Stoppuhr im AVRStudio Simulator ja, die Takte 
zählen. Und wenn der CPU Takt richtig eingestellt ist kriegt man die 
Zeit auch gleich in ms angezeigt.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRStudio wie von Johannes beschrieben. Fleißige können auch die 
Prozessorzeiten aufschreiben und subtrahieren.

Autor: Erwin Endres (erwinendres)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du einen RS232 Verbindung zum PC hast, kannst du HTerm (Forensuche) 
als 'Stoppuhr' verwenden.
Einfach beim Betreten und beim Verlassen der Schleife jeweils ein 
Zeichen über den UART schicken, dann kannst du im Terminal die Zeit 
zwischen dem Empfang der Zeichen ablesen.

Autor: Sven L. (friemler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es damit?

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.