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 Danke
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.
@ 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
Die Geschichte mit den Däumchen drehen ist mir bekannt^^ (Danke) Ich verwende einen WINAVR Compiler. Kennt jemand den Befehl dafür! Danke
Ein Beispiel.... [C] #include <avr/io.h> #include <util/delay.h> void wait(unsigned short MyWaitTime); void wait(unsigned short MyWaitTime) { while(MyWaitTime--) _delay_ms(1); } [/C)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.