johnjoe wrote:
> wie kann man eigentlich in C die Zeit ermitteln, die man pro
> Befehlabarbeitung braucht.
Wenn man Assembler kann, kann man in das Assemblerlisting schauen.
Mit den entsprechenden Einstellungen (compilerabhängig) kann man die
C-Zeilen als Kommentar mit einfügen lassen.
> Konkretes Bsp. ist eine Verzögerung mit z.B. einer For-Schleife.
Das ist nun genau ein Fehler, den man immer wieder bei Anfängern sieht
und der unter Fortgeschrittenen verpönt ist.
Grund ist, daß solche Delays nie stabil arbeiten (compilerabhängig,
werteabhängig, optimierungsabhängig).
Man nimmt entweder Delayfunktionen aus der Bibliothek oder macht sie mit
Hilfe eines Timers.
Wenn der Complier keine passende Delayfunktion bereitstellt, schreibt
man eine, ermittelt deren Laufzeit und ruft sie dann an den benötigten
Stellen in einer Schleife auf.
Beim AVR-GCC 4.1.1 muß man diese aber in ein separates Objekt packen,
sonst kann sie seinem Optimierungswahn zum Opfer fallen (unerwünschtes
Inlining, Reordering).
Peter