mikrocontroller.net

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


Autor: Thorsten (Gast)
Datum:

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

Autor: Alex (Gast)
Datum:

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

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LOL!

Autor: Thorsten (Gast)
Datum:

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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer auch nicht bös' gemeint :-)

Autor: Sepp (Gast)
Datum:

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

Ob die Funktion vernünftig ist...

Autor: peter dannegger (Gast)
Datum:

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

Autor: Marcel (Gast)
Datum:

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

Autor: Christian L. (lorio)
Datum:

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

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.