Gast
#4427074
Keine Variablen in _delay_us mehr erlaubt? Seit welcher AVR-GCC Version ist das so?
1 | |
|
Anzeige
|
Frage: AVR-GCC
Gast
#4427074
Keine Variablen in _delay_us mehr erlaubt? Seit welcher AVR-GCC Version ist das so?
Gast
#4427077
Bernd schrieb: > Keine Variablen in _delay_us mehr erlaubt? Seit welcher AVR-GCC Version > ist das so? M.W.n. war das schon immer so. D.h., erlaubt sind sie schon, aber es kommt nicht das dabei heraus, was du erwartest mangels Gleitkomma-Optimierung... Mach ne Schleife und warte in 1us-Schritten oder so. AVR-gcc kennt kein delay. Das kommt mit der avrlibc. Ansonsten wage ich mal die Gegenfrage, wann das denn deiner Meinung nach nicht so war? Oliver
Gast
#4427096
Seit wann? Das ging noch nie. Wenn man sich anschaut wie das funktioniert wird auch klar warum. Der macht ja nichts anderes als ein Makro aufzublättern und berechnet aus dem Systemtakt und der (als Konstante übergebenen) Wartezeit eine Schleife nop's.
Gast
#4427148
Das ging ca. 2010 mit WINAVR.
Gast
#4427158
Hi, ich glaube ich hatte da anfangs Probleme dass die Funktion keine Variablen akzeptiert hat. Habe dann alles bei mir auf Timer umgestellt. Die Fehlermeldung war auch entsprechend. Was sagt die bei Dir. //hufnala Bernd schrieb: > Das ging ca. 2010 mit WINAVR. Das ging auch damit nicht. Oliver Bernd schrieb: > Das ging ca. 2010 mit WINAVR. Nein. Wie test schon schrieb: Das ist ein Makro. Und das wird zur Compilezeit in eine NOP-Schleife umgerechnet. Wie soll das mit Variablen, deren Inhalt zur Compilezeit gar nicht bekannt sind, gehen? Benutze den unbequemeren, aber richtigeren Weg und benutze einen Timer. Dafür sind sie schließlich da. Oliver S. schrieb: > AVR-gcc kennt kein delay. Doch, schon. Heißt da allerdings __builtin_avr_delay_cycles, und das schon ab 4.7 (aktuell ist v5). Im Gegensatz zu einer Implementierung per Inline-Assembler wirft obiges Builtin einen Fehler, wenn das Argument nicht zur Compilezeit bekannt ist.
Gast
#4427282
Johan kannst du nicht wirklich mal den 5er GCC mit allem nötigen Kram bauen und online stellen???
Gast
#4427285
Johann meinte ich Bernd schrieb: > Das ging ca. 2010 mit WINAVR. Das ging noch nie. Bei Variablen wurde die float-Lib eingebunden, d.h. das Delay wurde viiiiiiieeeeel länger. µs kannste vergessen. Nur weil der Compiler durchläuft, ist etwas lange noch nicht korrekt. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|