Gast
#920978
Hallo zusammen, kennt jemand ein Tool, mit dem die benötigte Zeit für z.B. einen Funktionsdurchlauf berechnet werden kann? Ich arbeite mit IAR. Ist da vllcht. sowas schon enthalten? Gruß Bruno
|
Anzeige
|
Tool zur Messung der Codedauer
Gast
#920978
Hallo zusammen, kennt jemand ein Tool, mit dem die benötigte Zeit für z.B. einen Funktionsdurchlauf berechnet werden kann? Ich arbeite mit IAR. Ist da vllcht. sowas schon enthalten? Gruß Bruno
Gast
#920984
Wenn du beim Linker als Ausgabeformat UBROF8 (?) einstellst, kannst du die Datei direkt ins AVR Studio laden und somit die Stoppuhr laufen lassen. MW
Gast
#920990
Ich hab's noch nie ausprobiert... ...aber schau mal im IAR User Guide nach "Profiling"
Gast
#920999
Da ich IAR benutze werde ich das mal mit dem Profiling versuchen. Danke für die Ratschläge.
Gast
#921053
Etwas unkonventionell, aber am einfachsten ist es, bei Geginn und zu Ende der jeweiligen Funktion einen Portpin zu toggeln und auf dem (Speicher-)Oszilloskop dann die Ausführungsdauer bestimmen. Das klappt bei mir wunderbar!
Gast
#921088
Wenn man ein (Speicher-) Oszi hat!
Gast
#921096
Nö, du kannst die Routine in einer Endlosschleife aufrufen und immer auf das erste Pin-Toggle mit dem Oszi triggern. Wenn das schnell genug ist (was es eigentlich sein sollte, außer man hat Routinen, die in der Abarbeitung ein paar Sekunden dauern), kann man auch ohne Speicheroszi die Zeit bestimmen.
Gast
#921129
...und wenn man gar kein Oszi hat ...? Jetzt komm bitte nicht mit Vorschlag, ich soll mit 'ner Stopp-Uhr da sitzen!!!
Gast
#921143
Status Pin von de RS232 benutzen und auffem PC ne Software schreiben! ;)
Gast
#921172
>Jetzt komm bitte nicht mit Vorschlag, ich soll mit 'ner Stopp-Uhr da
sitzen!!!
Es war doch nur ein sehr einfach umsusetzender Vorschlag!!! Reg dich
doch darüber nicht so auf! Du kannst das ja so lösen, wie du möchtest.
Gast
#921335
Benutz doch nen Timer, ich weiß ja jetzt nicht welche CPU du einsetzt, aber prinzipiell gehst du folgendermaßen vor: 1. Timer so initialisieren, das du z.B. einen 1 msec Interrupt bekommst, dabei ist der Reloadvalue 1000 und die Frequenz des Timers 1 MHz. 2. In der Timer Interrupt Routine wird eine globale Variable, z.B. Time, inkrementiert. 3. In einem einfachen Fall zählt dein Timer hoch. Dann kannst du jetzt Zeiten in usec messen, also Time*1000 + aktueller Zählwert im Timer Eigentlich ganz easy, so vom Prinzip her mach ich das auch. > Jetzt komm bitte nicht mit Vorschlag, ich soll mit 'ner Stopp-Uhr da > sitzen!!! Hey, das ist gar keine so dumme Idee :D Unter der Voraussetzung, dass du die Stoppuhr etwas 'modifizieren' kannst weil du dafür sonst keine Verwendung hast und das Teil eh nur im Regal verstaubt: Ersetz doch die Start- und Stop-Tasten mit jeweils einem Transistor. Oder versuch sie direkt an die Pins deines Microcontrollers zu hängen. Sollte doch funktionieren? Das nur so als theoretische Überlegung am Rande.... ;) Tz. Einfach Pin auf 1 setzen, Funktion mehr oder weniger oft aufrufen, Pin auf 0 setzen und mit einer Stoppuhr messen. Anschließend die gemessene Zeit durch die Anzahl der Funktionsaufrufe teilen und fertig. Je länger der gemessene Zeitraum ist, desto genauer (Also kann ruhig 10 Sekunden lang die Funktion in einer Schleife aufgerufen werden). Und wenn du das öfter wiederholst und den Mittelwert bildest, wirds auch genauer. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|