Forum: Mikrocontroller und Digitale Elektronik Laufzeit eines Programms bestimmen


von Poseidonius (Gast)


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

von Mathi (Gast)


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.

von AVRFan (Gast)


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.

von AVRFan (Gast)


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.

von Mathi (Gast)


Lesenswert?

Ja, eine Minute :)

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

von Gisbert (Gast)


Lesenswert?

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

Grüße,

Gisbert

von Der Dude (Gast)


Lesenswert?

Setze beim Scheifeneintritt einen Portpin auf H. Beim Verlassen der 
Schleife auf L.

Mit dem Oszi kannst Du die Zeit bestimmen.

von Der Dude (Gast)


Lesenswert?

Hey Gisbert, Du warst schneller als ich!

von Mathi (Gast)


Lesenswert?

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

von Gisbert (Gast)


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

von AVRFan (Gast)


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?).

von Poseidonius (Gast)


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.

von Michael Wilhelm (Gast)


Lesenswert?

Im AVR-Studio gibt es doch eine Stoppuhr.

MW

von Poseidonius (Gast)


Lesenswert?

Wo finde ich die?

von Jojo S. (Gast)


Lesenswert?

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

von Michael G. (linuxgeek) Benutzerseite


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.

von Jojo S. (Gast)


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.

von Lutz (Gast)


Lesenswert?

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

von Erwin E. (erwinendres)


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.

von Sven L. (friemler)


Angehängte Dateien:

Lesenswert?

Wie wäre es damit?

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.