Verzögerung mittels einer Schleife

Gast #531886
Lesenswert?
• ▲
▼
hallo allerseits,

bin gerade in der Einarbeitungsphase und konnte nicht verstehen warum in 
diesem Code für UART (aus einem Buch) eine verzögerung eingebaut ist:

void main(void)
{
   .....
   for( ;; )
    {
       if(ReceiveData(&UartData))
          TransmitData(&UartData)
    }

   Delay();
}
 die Funktion delay ist:

void Delay(void)
{
    unsigned int i = 0x7FFF;
    while(--i);
}

ich vermute die Verzögerung damit nicht die gleichen Daten abgefragt 
werden bin mir nicht sicher.

mich interessiert ausserdem wie lange diese erzögerung dauert??
0x7FFF * Clock vielleicht ???

welcher Zusammenhang besteht zwischen die Verzögerung und die Baudrate 
??


ich habe noch nie mit MCU gearbeitet und hoffe ihr könnt mir helfen.

LG
Gast #532030
Lesenswert?
• ▲
▼
...und selbst wenn Delay() aufgerufen werden würde, wäre da eigentlich 
auch keine Verzögerung zu holen, weil so'n Compiler das wegoptimiert 
(stumpfes rauf- oder runterzählen von Var. nur um Zeit zu schinden).
Gast #532335
Lesenswert?
• ▲
▼
> Diese ist allerdings von der Größe des Programms und der Rechenintensität
> abhängig...
Wieso das? Die Durchlaufzeit einer solchen Schleife hängt davon ab, was 
der Compiler aus dieser Schleife macht und ob irgendwelche Interrupts 
während des Schleifendurchlaufs auftreten können. Wenn man weiß, was der 
Compiler draus macht (sofern er bei eingeschalteter Optimierung 
überhaupt was draus macht) und wenn sichergestellt ist, dass keine 
Interrupts auftreten können, dann kann man die Zeit, die eine solche 
Schleife benötigt, durchaus genau angeben.

Mit der "Rechenintensität" an sich hat das überhaupt nichts zu tun, weil 
außer evtl. auftretenden Interrupts ja während der Schleife nichts 
anderes gemacht werden kann. Und was soll die Programmgröße damit zu tun 
haben?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren