verständnisproblem: delay-funktion

Gast #40802
Lesenswert?
• ▲
▼
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 #40804
Lesenswert?
• ▲
▼
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 #40805
Lesenswert?
• ▲
▼
...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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.