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) :
[OT]Uuuuuups - nun ist der Fünftausender voll . . .[/OT]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) ); } } /* ============================================================================== */







Zitieren

Lesezeichen