Gut, das ganze mal ausführlicher:
Mal angenommen, wir haben einen Takt von 8 MHz. Dann könnte mit der Funktion _delay_ms() bei einem Aufruf eine maximale Wartezeit von ~32ms erreicht werden. Wenn wir nun eine ganze Sekunde warten wollen, müssten wir _delay_ms() mehrmals hintereinander aufrufen.
Genau das macht die Funktion sleep_ms() mit einer Schleife. Damit das ganze verständlich bleibt, wird in der Schleife genau 1ms gewartet und das ganze n-mal widerholt. Somit erreichen wir durch den Befehl sleep_ms(1000) eine Wartezeit von ziemlich genau 1000ms, also eine Sekunde.
An welcher Stelle im Programm die eigentliche Funktion steht, ist egal und bleibt dem Stil des Programmierers überlassen. Sie kann also vor oder hinter der Stelle stehen, an der sie aufgerufen wird.
Wichtig ist nur, dass die Deklaration, also der Prototyp der Funktion vor dem Aufruf steht.
[edit]Das war mir auch neu...interessant!When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency)
Danke für die Info.,
[/edit]
Gruß,
askazo
Lesezeichen