Hallo, wo im AVR Menü kann ich bitte die CPU Geschwindigkeit festlegen? dies direkt in der IDe zu tun soll eine gute Möglichkeit sein, eine weitere ist wohl dies ganz zu allererst am Afang der Main Datei zu tun, noch bevor irgendwelche anderen #includes aufgerufen werden Unter Project--> Properties.. (Toolchain vielleicht?? und dann?) ich habe die Einstellung nicht gefunden. IM AVR STudio4 gab es eine Stelle, nur wo ist die bitte hier. Vielen Dank für den Tipp im voraus. Viele Grüße, Matthias.
Habe ich kürzlich auch gesucht. Habe grade nicht die Möglichkeit im Studio5 nach zu sehen, aber unter "properties" gibt es irgendwo die Möglichkeit "symbols" festzulegen. Da dann einfach einen neuen Eintrag mit z.B. "F_CPU = 8000000" erstellen.
Hallo, Wie währe mit
1 | #ifndef F_CPU
|
2 | #define F_CPU xxxxxxxxxxxUL
|
3 | #endif
|
Im Code? Mache ich immer so. Gruß Jannis
Jannis C. schrieb: > Hallo, > Wie währe mit#ifndef F_CPU > #define F_CPU xxxxxxxxxxxUL > #endif > Im Code? Mache ich immer so. > Gruß Jannis Hi, ja, so geht es auch. Ich wollte auch noch herausfinden wo man es in der Umgebung einstellen kann. Bei dem Studio 4 ging es ja auch sehr einfach. Weiß sonst noch jemand bescheid und würde es mir mitteilen? Viele Grüße, Matthias.
Projekteigenschaften -> AVR/GNU C Compiler -> Symbols auf das Plus klicken F_CPU=xxx eingeben und fertig. Aufpassen, dass das auch für die jeweilige Konfiguration definiert ist ( Debug oder Release )
Und die Endung nicht vergessen also z.B. 16000000UL (unsigned long)
Matthias schrieb: >> Im Code? Mache ich immer so. > ja, so geht es auch. Aber dann muß man es in jeder Datei, in der delay.h eingebunden wird oder F_CPU gebraucht wird extra einfügen. Und wehe, man vergisst dann mal eine von 13 Dateien... :-o Cecky schrieb: > Da dann einfach einen neuen Eintrag mit z.B. "F_CPU = 8000000" > erstellen. Aber ohne Leerzeichen und mit dem bereits erwähnten UL...
Lothar Miller schrieb: > Matthias schrieb: >>> Im Code? Mache ich immer so. >> ja, so geht es auch. > Aber dann muß man es in jeder Datei, in der delay.h eingebunden wird > oder F_CPU gebraucht wird extra einfügen. Und wehe, man vergisst dann > mal eine von 13 Dateien... :-o > > Cecky schrieb: >> Da dann einfach einen neuen Eintrag mit z.B. "F_CPU = 8000000" >> erstellen. > Aber ohne Leerzeichen und mit dem bereits erwähnten UL... Hallo zusammen, Euch allen vielen Dank für die Hilfe F_CPU zu definieren. Woher wißt ihr das alles? Ich habe in der AVR Hilfe nichts gefunden und auch Google bot auf Anhieb nichts. Ich habe keine Schritt für Schritt Anleitung für AVR Studio5. anbei ein Bild wie ich es definiert habe- Habe die Wirkung auf All Configuration gesetzt. Werde es aber im nächsten Projekt nochmal prüfen, ob es dann auhc tatsächlich aktiviert ist. F_CPU=4 MHZ. Im Code habe ihc extra einen FEhler provoziert, um mir die WArnungen angezeigt zu bekommen. Könnt ihr mir bitte sagen aus welchem Grund ist die delay Fehlermeldung habe??? Herzlichsten Dank im voraus, Matthias. hier der Code #ifndef F_CPU //angelegt zum Test, ob die Symboldefinition auch arbeitet, es kam keine Warnung, siehe Bild, also akzeptiert, zusätzlich mit dem Oszi ausgemessen, 100ms=LED an, aber 10ms abweichung #warning "F_CPU not defined" #endif #include <util/delay.h> #include <avr/io.h> int main(void) { DDRD =0b11111111; // PB0 an PORTB als Ausgang setzen // PORTD=0b11111111; high while(1) { PORTD ^= ( 1 << PD 7 ); // Toggle PB0 z.B. angeschlossene LED //extra Fehler PD 7 eingebaut, um die Warnungen angezeigt zu bekommen _delay_ms(100); // Eine Sekunde +/-1/10000 Sekunde warten... } }
habe den fEhler für die delayfunktion gefunden. Optimization level stand auf none habe diesen jetzt auf size gestellt und die Hinweismeldung mit dem Delay ist verschwunden. Muss man die optimierung denn unbedingt für delay einschalten? Soll ich die Optimierung standardmäßig auf size stellen? Viele GRüße, Matthias.
die Delayfunktion arbeitet nach dem verschwinden der im Bild gezeigten Hinweisfunktion auhc genauer. ich habe jetzt eine Flanke von genau 100ms am PORTausgang gemessen. vorher waren es 111ms. Aber warum muss der Compiler auf optimierung stehen, damit die Funktion genauer arbeitet? Viele GRüße, Matthias.
Matthias H. schrieb: > Muss man die optimierung denn unbedingt für delay einschalten? Darum steht in der delay.h "\note In order for these functions to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application."
Michael schrieb: > Matthias H. schrieb: >> Muss man die optimierung denn unbedingt für delay einschalten? > > Darum steht in der delay.h > "\note In order for these functions to work as intended, compiler > optimizations must be enabled, and the delay time must be an > expression that is a known constant at compile-time. If these > requirements are not met, the resulting delay will be much longer (and > basically unpredictable), and applications that otherwise do not use > floating-point calculations will experience severe code bloat by the > floating-point library routines linked into the application." Hi, dake für die Info. Ich habe daraus gelernt mir die Infos in den Funktionen(z.B. delay.h) durchzulesen, denn da steht ja einiges wichtiges drin. Viele Grüße und noch einen schönen Abend wünscht Matthias.
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.