verständnisproblem: delay-funktion

Gast #40802
hallo
ich habe mir das buch c für mikrocontroller ausgeliehen und bin auf ff.
quelltext gestoßen, den ich mir nicht erklären kann. der autor
verwendet einen 4Mhz-AVR. und nun der quellcode in c:

void delay(unsigned int time_us)
{
     time_us/=17;
     time_us*10;
     while(--time_us);
}

time_us soll als zeit in us der funktion übergeben werden.
nun meine frage: wieso wird zurerst durch 1,7 geteilt? hat das
irgendwie mit der zeitumrechnung zu tun?
kann man nicht einfach sagen, dass bei einem 4Mhz-quarz, eine periode
2,5*10^-7 us dauert und dann die gewünschte zeit (in mikrosekunden)
durch 2,5*10^-7 us dividiert und dann erhält man die anzahl der takte,
die der controller warten muss?

danke pierre
Gast
void delay(unsigned int time_us)
{
     time_us/=17;
     time_us*=10;
     while(--time_us);
}

wenn du 1us und 4Mhz und den Faktor 1,7 miteinander verrechnest,
dann kommt raus, daß der Buchauthor davon ausgegangen ist, daß der
Controller für while(--time_us) 6,8 Takte ;-) benötigt.

Alles klar?

mfg
werner
PS: die Annahme von 6,8 Takten ;-) hat der Author des Buches sicherlich
dem ASM-Listing entnommen, oder er hat solange probiert bis es gepaßt
hat.
Gast
...wobei die Berechtigung dieser Annahme im Einzelfall nachzuweisen
wäre.  In aller Regel wird die Wahrscheinlichkeit, daß das so
funktioniert, nahe 0 liegen.

Besser die Macros aus <avr/delay.h> benutzen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.