Forum: Mikrocontroller und Digitale Elektronik Delay Schleife im AVR Studio


von Berni (Gast)


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

von Sven P. (Gast)


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.

von Berni (Gast)


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

von Sven P. (Gast)


Lesenswert?

Dann würd ich aber nochmal ganz genau nachlesen.

von Berni (Gast)


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

von Sven P. (Gast)


Lesenswert?

1
/**
2
   \ingroup util_delay
3
4
   Perform a delay of \c __us microseconds, using _delay_loop_1().
5
6
   The macro F_CPU is supposed to be defined to a
7
   constant defining the CPU clock frequency (in Hertz).
8
9
   The maximal possible delay is 768 us / F_CPU in MHz.
10
11
   If the user requests a delay greater than the maximal possible one,
12
   _delay_us() will automatically call _delay_ms() instead.  The user
13
   will not be informed about this case.
14
 */

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

von Hannes Lux (Gast)


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.

...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.