Hallo, ich habe folgendes Problem. Ich habe bislang immer mit WinAVR programmiert. Jetzt habe ich ein Programm mal mit AVRStudio compiliert und festgestellt das die delay_ms() funktion nicht mehr funktionieren. Woran liegt das? MfG Andreas
Gast
#2839949
Andreas S. schrieb: > festgestellt das die delay_ms() funktion nicht mehr funktionieren. und was heist das genau?
Hi, beispiel delay_ms(1000); War vorher eine Wartezeit von 1000ms an der stelle. (WinAVR) Jetzt Wartezeit 0ms(AVRStudio6)
Gast
#2839971
Andreas S. schrieb: > beispiel > delay_ms(1000); > War vorher eine Wartezeit von 1000ms an der stelle. (WinAVR) > Jetzt Wartezeit 0ms(AVRStudio6) kann eigentlich nicht sein, wenn es länger ist dann würde die Optimierung ausgeschaltet sein. Sicher das du die offizielle delay funktion verwendest und nicht selber geschriebenes?
- Optimierung auf -Os stellen - Nur konstante Werte als Parameter für _delay_ms() verwenden - Korrekten Wert für F_CPU einstellen
Gast
#2839976
Frank M. schrieb: > - Optimierung auf -Os stellen > - Nur konstante Werte als Parameter für _delay_ms() verwenden all das würde aber nicht dazu führen des es kürzer dauert, sonder es würde immer länger dauern.
Peter II schrieb: > all das würde aber nicht dazu führen des es kürzer dauert, sonder es > würde immer länger dauern. Ich hatte nachträglich noch einen Punkt hinzugefügt: - Korrekten Wert für F_CPU einstellen Desweiteren soll der TO mal schauen, ob und welche Warnungen der Compiler ausgibt.
Hallo, alles klar !! *ICHDOOF es stand zuvor im Makefile !! AVRStudio verwendet kein Makefile !!! Und da ich folgendes in meinem Code stehen habe #ifndef F_CPU #define F_CPU 2000000UL #endif kam es dazu, das die falsche frequenz genommen wurde und keine Fehlermeldung ausgegeben wurde. Vielen Dank für Eure Bemühungen.
Andreas S. schrieb: > #ifndef F_CPU > #define F_CPU 2000000UL > #endif Diese "Lösungen" sieht man öfters und sind leider - wie auch in Deinem Fall - der größte Mist. Besser ist: #ifndef F_CPU #error F_CPU not defined. #endif Dann weiß man auch direkt, was hier fehlt.
Gast
#2840313
Moin, Im AVR-Studio heißt es: _delay_ms(1000); und nicht vergessen die util.h zu includen. MfG
Gast
#2840321
Sorry, kleine Korrektur: <util/delay.h> muss inkludiert werden. Der Rest meiner vorschnellen Antwort sollte stimmen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.