Ich gehe mal davon aus, dass Du AVRStudio zusammem mit WINAVR benutzt. Dann steht Dir die Bibliotheksfunktion
zur Verfügung. Erläuterungen z.B. hier (klick). Die Bibliothek befindent sich (abhängig von Betriebssystem und Installation) z.B. in: C:\WinAVR-20100110\avr\include\util\delay.h AUF DEINEM Computer.
Sieht schon etwas komplexer aus als Deine Funktion :
Code:
void
_delay_ms(double __ms)
{
uint16_t __ticks;
double __tmp = ((F_CPU) / 4e3) * __ms;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
{
// wait 1/10 ms
_delay_loop_2(((F_CPU) / 4e3) / 10);
__ticks --;
}
return;
}
else
__ticks = (uint16_t)__tmp;
_delay_loop_2(__ticks);
}
Sie funktioniert eine begrenzte Anzahl Millisekunden. Einschränkungen sind in der Funktionsbeschreibung im oben genannten Link zu nongnu.org und im Quelltext der _delay_ms ausführlich genannt. Lies das mal durch und - vielleicht Probierst Du mal das ? !
Lesezeichen