Hallo Andreas,

mein selbstgezimmertes waitms() läuft ziemlich sauber eine Sekunde !wenn kein Interrupt stört! - wird allerdings in meinem interruptdurchseuchten controller nicht immer genau sein. Die Zahl 4000 ist natürlich sehr vom Controllertakt abhängig - ich habe fast immer 20 MHz. Dabei kann ich auch eine - dann aber doch eher fehlerhafte - Mikrosekunde warten.

Hier der waitms() - Code, der ist aus dem Demoprogramm der RN-Control (klick mal) :
Code:
/* ============================================================================== */
/* ============================================================================== */
/*### Programm pausieren lassen  !! Der Pausenwert ist nur experimentell !*/ 
void waitms(uint16_t ms) 
{ 
   for(; ms>0; ms--) 
   { 
      uint16_t __c = 4000; 
      __asm__ volatile ( 
         "1: sbiw %0,1" "\n\t" 
         "brne 1b" 
         : "=w" (__c) 
         : "0" (__c) 
      ); 
   } 
} 
/* ============================================================================== */
[OT]Uuuuuups - nun ist der Fünftausender voll . . .[/OT]