mikrocontroller.net

Forum: Compiler & IDEs Delay


Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest zuerst einmal die Doku zu _delay_ms lesen.

Ich kann dir versprechen, dass sich deine Frage damit erledigt.

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese CompileZeit Konstanten wären dann z.B. das?
#define F_CPU 4000000UL
für 4 MHz?

Geht auch?
#define F_CPU 4.00

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das feige Arschloch ist wieder unterwegs.
Der Beitrag von 9:00 ist nicht von mir -> Thread
"Identitätsdiebstahl" im Bereich "Webseite".

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was war denn das?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
[..]

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, und mit dem Link ist der hier gemeint:

  http://www.mikrocontroller.net/forum/read-5-174767.html

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke euch.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.