AVR Studio Reihenfolge beim Compilieren ?

Gast #2901814
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
#2901905
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.
Gast #2902279
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... ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren