www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Delay Schleife im AVR Studio


Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennt jemand eine Delay Schleifen Routine die nicht so eingeschränkt ist 
wie jene im AVR Studio? Denn die geht ja nur bis maximal 262.18ms (oder 
so) durch die F_CPU in MHz also bei meine 8MHz nur bis 32ms.. und ich 
brauche in meinem Programm Delay Schleifen von 200us (_delay_us) bis 
hinauf auf 2 sec.. kennt jemand so etwas was große Bereiche abdeckt? mfg

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Berni wrote:
> Kennt jemand eine Delay Schleifen Routine die nicht so eingeschränkt ist
> wie jene im AVR Studio?
Welche?

> kennt jemand so etwas was große Bereiche abdeckt? mfg
_delay_us oder _delay_ms.

Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ich meinte die beiden _delay_us und _delay_ms (#include 
<util/delay.h>)

 doch hier hab ich bei der 2 Sekunden Delay Schleife das Problem, dass 
ich eine for-Schleife mit ca. 63 _delay_ms(255) machen müsste da diese 
ja bei 8Mhz bis maximal 32ms läuft

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann würd ich aber nochmal ganz genau nachlesen.

Autor: Berni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/**
   \ingroup util_delay

   Perform a delay of \c __ms milliseconds, using _delay_loop_2().

   The macro F_CPU is supposed to be defined to a
   constant defining the CPU clock frequency (in Hertz).

   The maximal possible delay is 262.14 ms / F_CPU in MHz.
 */
void
_delay_ms(double __ms)
{


also vll überseh ich da ja was aber für mich sieht das ganz so aus :S

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/**
   \ingroup util_delay

   Perform a delay of \c __us microseconds, using _delay_loop_1().

   The macro F_CPU is supposed to be defined to a
   constant defining the CPU clock frequency (in Hertz).

   The maximal possible delay is 768 us / F_CPU in MHz.

   If the user requests a delay greater than the maximal possible one,
   _delay_us() will automatically call _delay_ms() instead.  The user
   will not be informed about this case.
 */

Ich würd dann mal die C-Bibliothek aktualisieren.

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> doch hier hab ich bei der 2 Sekunden Delay Schleife das Problem,

Ist das Dein Ernst?
Du willst den AVR wirklich 2 Sekunden lang Takte zählen lassen?

Ist Dir eigentlich bewusst, dass Du beim Kauf von AVRs dessen Timer 
mitbezahlt hast? Delays für einige zehn bis hundert Mikrosekunden sind 
ja ok, aber ab Millisekunden nutzt man besser einen der vorhandenen 
Timer.

...

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.