Forum: Mikrocontroller und Digitale Elektronik fertige delay_ms(int ms)


von Thorsten (Gast)


Lesenswert?

Hi Leutz,

Für alle, die noch suchen:

nach einigem rumdoktorn und ausprobieren hier eine Möglichkeit, das
delay_ms() aus CVAVR auch im WinAVR verwenden zu können:

!! Ab Version WinAVR-20050214 !!

#define F_CPU 8000000UL  // 8 MHz
#include <avr/delay.h>

void delay_ms(int ms)
{
  int t;
  for(t=0; t<=ms; t++)
  _delay_ms(1);
}

Ein paar mehr Ticks gehen hier zwar für Aufruf, Variable anlegen und
das Ausführen der for-schleife verloren, das sollte aber nicht so
problematisch sein ;-)

Möglich sind hier dann auch ohne Probleme Aufrufe wie delay_ms(1000);
usw...


Greetz,
thorsten

von Alex (Gast)


Lesenswert?

Fakt ist, eigentlich benötigen tut solcherlei Routinen nur ein Anfänger,
der LEDs blinken lassen will.

von Joachim (Gast)


Lesenswert?

LOL!

von Thorsten (Gast)


Lesenswert?

Naja,

aber es sind doch gerade Anfänger, die nachher zu Profis werden ?

Ausserdem wird hier oft nach einer vernünftigen delay - Funktion
gefragt ;-)

von Alex (Gast)


Lesenswert?

Wer auch nicht bös' gemeint :-)

von Sepp (Gast)


Lesenswert?

"Ausserdem wird hier oft nach einer vernünftigen delay - Funktion
gefragt ;-)"

Ob die Funktion vernünftig ist...

von peter dannegger (Gast)


Lesenswert?

"Ob die Funktion vernünftig ist..."


delay_ms(1000);

ist es jedenfalls nicht, denn es bedeutet im Klartext 16.000.000
absolut nutzlos vergeudete CPU-Zyklen.

Wenn ich z.B. eine 1s-Blink-LED baue, dann will ich definitv nicht eine
Sekunde lang einen Taster drücken müssen, bis die CPU endlich so gnädig
ist, es entgegen zu nehmen.


Jede CPU kann viele Dinge gleichzeitig tun, wenn man sie denn läßt.


Peter

von Marcel (Gast)


Lesenswert?

Ich habe diese Funktion (delay_ms(1000)) ausprobiert. Mein Programm hat 
mit dieser Funktion ca. 1.5 kByte mehr Speicher gebraucht. Weis jemand 
warum so
eine einfache Funktion gleich so viel Speicher braucht?

von Christian L. (lorio)


Lesenswert?

Marcel wrote:
> Ich habe diese Funktion (delay_ms(1000)) ausprobiert. Mein Programm hat
> mit dieser Funktion ca. 1.5 kByte mehr Speicher gebraucht. Weis jemand
> warum so
> eine einfache Funktion gleich so viel Speicher braucht?

Optimierung beim Compilieren anschalten!

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.