Forum: Mikrocontroller und Digitale Elektronik Delay in Mainschleife auf einmal langsam


von bushobbyentwickler (Gast)


Lesenswert?

Hallo,

in meinem Programm habe ich in der while(1)-Schleife in der 
main-Funktion lediglich ein _delay_ms(1000) und danach das Toggeln eines 
Pins. Außerdem kann der MC in der Anwendung Daten über UART empfangen.
Empfängt er nun ein einzelnes Zeichen über UART, dann toggelt der Pin, 
der in der Main umgestellt wird nicht mehr.
Meine Frage: Kann das mit dem _delay_ms(1000) zusammenhängen? Ich habe 
schon öfters gehört, dass diese Delay-Funktionen Problemem mit sich 
bringen.

gruß bushobbyentwickler

p.s.: Den Code werde ich später reinstellen.

von Fred S. (Gast)


Lesenswert?

Hallo,

1. Schreib doch erst einmal, um welchen Prozessor bei welcher 
Taktfrequenz es geht. Hast Du die Dokumentation zur Delay-Funktion 
gelesen (s.u.)?

2. Damit die Delay-Funktion korrekt arbeitet, muss die 
Compiler-Optimierung aktiviert sein!

Zitat aus dem AVR LIBC Reference Manual 1.4.3:

5.22.2.3 void _delay_ms (double __ms)
Perform a delay of __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.

Gruß

Fred

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.