Wait - Funktion

#713196
Lesenswert?

Martin wrote:
> Hy Leute,
>
> gibts für die Atmega Serie so etwas wie eine Wait - Funktion
> z.B wait(1000)      //Warte 1000ms
>
> Wenn ja könnte mir jemand den C Synthax sagen

Das hängt davon ab, welchen Compiler du benutzt.
In C selbst gibt es keine derartige Funktion. Wenn ein
Compiler sie mitbringt, dann ist das eine compilerspezifische
Ergänzung. Bei verschiedenen Compilern heist die Funktion
daher anders.

PS: Meist will man so eine Funktion nicht benutzen, weil der
Mega in dieser Wartezeit nur Däumchen dreht. Das ist aber
fatal, wenn er in dieser Wartezeit nicht auf andere, wichtige
Ereignisse reagieren kann.
#713198
Lesenswert?

@ Martin (Gast)

>gibts für die Atmega Serie so etwas wie eine Wait - Funktion
>z.B wait(1000)      //Warte 1000ms

Jain. Aber du weisst schon, dass owas im allgemeinen schlechter 
Programmierstil ist.

>Wenn ja könnte mir jemand den C Synthax sagen

Im WINAVR gibt es die Funktinen _delay_ms() und _delay_us(), die können 
aber nur begrenze Verzögerungen erzeugen. Für so lange Zeiten muss man 
was stricken

1
#define F_CPU 8000000
2
#include <avr/delay.h>
3

4
void long_delay(uint16_t ms) {
5
  for (; ms>0, ms--) _delay_ms(1);
6
}

MfG
Falk
Gast #713202
Lesenswert?

Danke für die schnellen Antworten. Bin mir schon im Klaren dass solche 
Wartezeiten sinnvoll genützt werden sollten, aber in meiner Anwendung 
brauche ich sie unbedingt.

Grüße aus Salzburg
Martin
#713204
Lesenswert?

Hallo !

Falls DU WinAVR verwendest, gibt es dort sowas und auch in anderen C 
Compilern sicherlich auch.
Bei WinAVR mußt DU erst:
#include <util/delay.h>

und dann kannst DU zwei sachen nutzen !
_delay_us(1.5); //Warte 1.5 Mikrosekunden
_delay_ms(12);  //Warte 12 Millisekunden

Grenzen für _delay_us      768us    / F_Takt(in MHz)
            _delay_ms      262.14ms / F_CPU (in MHz)

LG Thorsten

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren