Hallo, ich habe eine Frage... wie lange dauert ein For-Schleifen Durchlauf? Also von x=1 bis x=2. for(x=1; x<=25; x=x+1) { if (GetResult()==1) doNext(); } Die Frequenz ist 16MHz. Danke für Hilfe!
Woher sollen wir denn wissen, wie lange die Funktion GetResult (und ggf. auch noch doNext) brauchen?
Das hängt von dem Maschinencode ab, den der Compiler daraus macht. Das wiederum ist im allgemeinen u.a. abhängig von der eingestellten Optimierungsstufe. Im Beispiel werden noch Funktionen (oder Macros) verwendet, deren Laufzeit mit eingeht. Wenn das echte Funktionen sind und die etwas sinnvolles machen, haben diese sogar den größten Anteil an der Laufzeit. Also, ohne Kenntnis dieser Funktionen ist gar keine Aussage möglich. Man kann es entweder Messen (z.B. Portpin am Schleifenanfang Toggeln und die Ausführungszeit dieser Instrumentierung herausrechnen) oder Zählen (alle Instruktionen, die der Compiler ausspuckt, mit der jeweiligen Zyklenzahl werten) für letztere Methode muß noch die CPU-Clk bekannt sein (könnte ja heruntergeteilt sein...). Gruß Martin
Martin hat Recht, wenn du kein Oszi besitzt, dann ist es wohl am einfachsten, wenn du dir das beim kompilieren erstellte Listing (listfile) ansiehst. Dort solltest du mehr oder weniger den "Assembler"-Code sehen, den der GCC erzeugt. Dann noch die Maschinencode Taktzyklen raussuchen und manuell addieren. Andere Methode wäre noch (weiß jedoch nicht wie genau), das Projekt im AVR Studio zu simulieren. Der Simulator kann dir die Zeit anzeigen, die seit Beginn vergangen ist (zu jedem Zeitpunkt). Wenn du vor deiner Schleife einen Breakpoint setzt, die Zeit notierst und danach wieder einen Breakpoint setzt, dann siehst du ca. die benötigte Durchlaufzeit. Das ganze siehst du beim AVR Studio Simulator (links) mit dem Begriff "Stop Watch". Wichtig ist, dass du die Frequenz anpasst. Roman p.s. Mehr Tipps gibt's in meinem Buch: www.avrbuch.de
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.