Forum: Compiler & IDEs AVR Studio Reihenfolge beim Compilieren ?


von Oli (Gast)


Lesenswert?

Ich habe nun mal endlich angefangen mit AVR Studio zu arbeiten (hier 
V5.1)
Bitte entschuldigt diese blöde Frage, aber ich komme einfach nicht 
weiter:
Mein Projekt enthält div. einzubindenden .c sowie .h, die wieder andere 
.h einbinden. Das Haptprogramm ist Main.c

Nun ist es so, dass
in Main.c die allerersten Zeilen sind:
#ifndef F_CPU
#define F_CPU 16000000UL
#endif

danach folgt #include <util/delay.h>

AVR Studio meckert trotzdem beim Compilieren dass F_CPU nicht defined 
wäre, da trotzdem als allererstes anscheinend TWI_Masters.h compiliert 
wird (wo auch noch mal delay.h includiert wird, obwohl das erst viel 
später dran käme.

Anscheinend, weiß AVR Studio nicht, dass er bitteschön mit Main.c 
beginnen soll. Kann ich das irgendwo festlegen ?

Danke - und bitte entschuldigt die vermutlich ziemlich dumme Frage.

Oli

von Karl H. (kbuchegg)


Lesenswert?

Oli schrieb:

> AVR Studio meckert trotzdem beim Compilieren dass F_CPU nicht defined
> wäre, da trotzdem als allererstes anscheinend TWI_Masters.h compiliert
> wird (wo auch noch mal delay.h includiert wird, obwohl das erst viel
> später dran käme.

Ein *.h File wird überhaupt nicht compiliert.
Wenn doch, dann hast du es an falscher Stelle in den Projektbaum vom 
AVR-Studio eingebunden.

In die Project-Sektion "Source Files" kommen nur die C-Files rein (bzw. 
die Files, die zu kompilieren sind)

> Anscheinend, weiß AVR Studio nicht, dass er bitteschön mit Main.c
> beginnen soll.

Braucht es auch nicht wissen.
Da C-Files unabhängig voneinander compiliert werden, spielt es keine 
Rolle, in welcher Reihenfolge diese compiliert werden.


Edit:
Sehe grade: du benutzt die 5-er Version vom AVR-Studio.
Von der weiß ich nicht, wie der Projektbaum organisiert ist.
Im 4-er gab es noch unterschiedliche 'Kategorien' für C und Header 
Files. Im 6-er gibts das auch nicht mehr. Da wirft man einfach alles ins 
Projekt rein, und AVR-Studio weiß selber, dass H-Files nicht zu 
komplilieren sind.

von Oliver S. (oliverso)


Lesenswert?

Ist beim 5er genau wie beim 6er.

Oliver

von Josef D. (jogedua)


Lesenswert?

Oli schrieb:
> #ifndef F_CPU
> #define F_CPU 16000000UL
> #endif

dazu,
und die richtige Stelle, F_CPU zu definieren, s.

Beitrag "F_CPU, wo steht die Definition"

von Jasch (Gast)


Lesenswert?

Oli schrieb:
[...]
> Nun ist es so, dass
> in Main.c die allerersten Zeilen sind:
> #ifndef F_CPU
> #define F_CPU 16000000UL
> #endif
[...]

Das ist sowieso falsch.

Es sagt nämlich: wenn F_CPU noch nicht definiert ist definiere es als 
16Mio.

Wenn Dein µC mit 16MHz läuft möchtest Du aber F_CPU ohne wenn und aber 
als 16Mio (=16MHz) definieren.

Man kann nicht alles einfach aus einem Header abschreiben... ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:

> Ein *.h File wird überhaupt nicht compiliert.

...es sei denn, man will Precompiled Header nutzen. Die Ausgabe ist in 
diesem Falle eine gch-Datei:

http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html

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.