Hi! Ich hab folgende routine geschrieben: void sleep() { for (int i = 0;i < 6400;i++) asm volatile("nop"); } Die lass ich aufm ATMega16 laufen mit interner frequenz (1Mhz) wie lange dauert es nun bis diese routine abgearbeitet ist ? weil die vergleiche und das inkrementieren verbrauchen ja auch zeit. MfG Axos
Im Zweifel hilft ein Blick in den erzeugten Assembler code (lss-Datei). Dort steht, was der Compiler aus der Schleife gemacht hat. Zusammen mit der AVR-Befehlsreferenz, in der fuer jeden Assembler-Befehl die Zahl der benoetigten Zyklen angegeben ist, kann man sich dann selbst ausrechnen, wie viele Zyklen ein Schleifendurchlauf braucht. Zusammen mit dem Systemtakt erhaelt man dann die "Laufzeit". (Und der "uebliche Ratschlag": wenn's genau sein soll, lieber einen AVR-Timer nutzen oder "im Notfall" inline-Assembler bei abgeschalteten Interrupts. Zu Letzterem vgl. avr/delay.h und die - noch spaerlichen - Informationen im wiki/avr-gcc-Tutorial.)
Hi ! Danke Schonmal ! ich hab mal ein bisschen im internet rumgeschaut und wenn ich das richtig verstanden habe kann man mit dem avr-studio messungen machen. kann mir jemand sagen wie ich das machen ? MfG Axos
Hallo, im AVR Studio links im Workspace unter Processor gibts die "Stop Watch", Doppelklick darauf setzt sie auf Null. Aber nicht vergessen vorher in den AVR Simulator Options die richtige Taktfrequenz einzustellen, sonst stimmen logischerweise die angezeigten Zeiten nicht. Thorsten
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.