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]
Lesezeichen