Zitat Zitat von masasibe
Wie genau funktioniert eigentlich die Funktion _delay_ms()?
Die Quelle findest du in deiner Installation von avr-gcc in
./avr/include/avr/delay.h

Beachte auch, daß dort weitere Header includet werden. Also einfach an die Fersen heften...

Die Funktionen arbeiten nur gscheit mit optimierendem Compiler zusammen, da ansonsten Divisionen überbleiben, die erst zur Laufzeit berechnet werden und das ganze Delay-Zeug unbrauchbar machen.

BTW: Verzögerungsschleifen braucht man nur für
1) Einfachste Beispielprogramme
2) Kurze (!) Wartezeiten für lahme Hardware

ANsonsten sind Timer/IRQs dein Freund. Schreib einfach mal ein Programm, daß eine LED mit 1 Hz blinken lässt und gleichzeitig eine zweite mit 0.9 Hz. Da ist mit Rumtrödelschleifen schon Ende Gelände.