Delay

Gast #182351
Lesenswert?
• ▲
▼
Hallo,
ich habe einen ATmega8 in einer Schaltung mit einem externen 4 MHz
Oszillator aufgebaut und die Fuse Bits entsprechend gesetzt. Jetzt
meine Frage zur  _delay_ms(..);  Funktion. Welchen  Wert muss ich
übergeben, damit ich eine Sekunde oder eine halbe Sekunde Wartezeit
habe?
Gast #182353
Lesenswert?
• ▲
▼
Hi,
nein tut sie leider nicht. Wegen der Doku bin ich ja überhaupt erst auf
die Frage gekommen. Was bedeutet das ...   "The maximal possible delay
is 262.14 ms / F_CPU in MHz."
Bedeutet das, dass bei 4MHz die maximale Wartezeit bei einem 4MHz-Takt
ist 65,535 ms (262,14 / 4)?
Falls ja, kann ich die Zeit steigern, indem ich die Funktion mehrmals
aufrufe?
Gast #182354
Lesenswert?
• ▲
▼
Ja!

Bedenke aber, daß Du Compile-Zeit-Konstanten benötigst, damit das Delay
auch stimmt! Besser Lösung: benutze Timer und Timeouts für's
'warten', dann wird nur ein Bruchteil der Rechenzeit verschwendet.
Gast #182358
Lesenswert?
• ▲
▼
@Maddin:

Nein, '#define F_CPU 4.00' ist bei weitem nicht das Gleiche wie
'#define F_CPU 4000000UL'! Das eine ist "4,0" in float, das Andere
4.000.000 in unsigned long. Aber ja: das wären
Compile-Zeit-Konstanten.

#define TIM_DELAY 200

[..]
  _delay_ms(TIM_DELAY);
[..]
Gast #182360
Lesenswert?
• ▲
▼
Ok gut. Aber zu folgendem:

"Bedeutet das, dass bei 4MHz die maximale Wartezeit bei einem
4MHz-Takt
ist 65,535 ms (262,14 / 4)?"

In der Doku steht für die Funktion _delay_ms(..) , dass die maximale
Wartezeit 262.14 / F_CPU in MHz ist. Stimmt dann obige Berechnung?
Gast #182361
Lesenswert?
• ▲
▼
Danke, Oldbug. Genau das Thema meinte ich.

Dasselbe ist heute vormittag auch in mindestens einem anderen Thread
aufgetaucht; offensichtlich hat da jemand wirklich massive
Persönlichkeitsprobleme.
Gast #182362
Lesenswert?
• ▲
▼
#define F_CPU 4.00E6 wäre allerdings in diesem Kontext zulässig.
Die Gleitkommaoperationen werden vom Compiler abgedrückt, solange
alles zur Compilezeit bekannt ist.

Persönlich bevorzuge ich aber 4000000UL, da man das einfacher auch
an anderen Stellen (Baudratenberechnung etc.) benutzen kann.
Gast #182364
Lesenswert?
• ▲
▼
@ RTF : Hat die Diskussion um Namensdiebstähle eigentlich was im
GCC-Forum zu suchen ?

Ich finde es auch schade, wenn Sarkasmus durch Idiotie ersetzt wird,
aber warum hier diskutieren ? ;-) Bringt IMHO eh nix.

MfG, Daniel.

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