So ist es. Und dann wundert man sich, daß nix mehr geht...Zitat von Besserwessi
Wenn man wiklich Warteschleifen braucht, dann gibt's das Zeug aus util/delay.h (Doku siehe Doku zur avr-libc, ist bei WinAVR anbei) oder sowas
http://www.mikrocontroller.net/topic/120146
Falls es unbedingt handgeklöppelt sein soll, muss man dem Compiler sagen, daß er die Schleife nicht wegwerfen darf. Das geht zB so:
Aber selbst dann muss es nicht eine Schleife sein, der Compiler könnte die Schleife aufrollen in 1000 leere Inline-ASM-Zeilen...Code:for (i=0; i < 1000; i++) asm volatile (""::);
Mir fällt wirklick keine Möglichkeit ohne Inline-Assembler ein, die /garantiert/ zu einer Schleife wird. Weder for noch goto-Konstrukte.
Wenns um Verzögerung geht, wohl sowas:
Aber auch das kann (teilweise) aufgerollt werden; selbst wenn die Anzahl der Durchläufe nicht zur Compilezeit bekannt ist.Code:for (i=0; i < 1000; i++) asm volatile (" ":"=r"(i):"0"(i));
Lesezeichen