Forum: Compiler & IDEs F_Cpu "nur" im Makefile reicht aus?


von IchWarsNicht (Gast)


Lesenswert?

kurz und knapp möchte ich fragen ob es ausreicht wenn ich meinen Takt 
nur im Makefile angebe? Gilt das dann global für alles? Kann dann ein 
Warning das im delay_h kein Takt angegeben ist ignoriert werden?


Danke und Gruß
IWN

von Peter II (Gast)


Lesenswert?

IchWarsNicht schrieb:
> Kann dann ein
> Warning das im delay_h kein Takt angegeben ist ignoriert werden?

nein, dann diese sollte dann überhaupt nicht kommen. Wenn sie kommt, 
dann stimmt etwas nicht.

von katastrophenheinz (Gast)


Lesenswert?

>Kann dann ein Warning das im delay_h kein Takt angegeben ist ignoriert werden?

NEIN!

Zeig mal Makefile

von Yalu X. (yalu) (Moderator)


Lesenswert?

IchWarsNicht schrieb:
> kurz und knapp möchte ich fragen ob es ausreicht wenn ich meinen Takt
> nur im Makefile angebe?

Ja, wenn der Wert mit der Option -D an den Compiler übergeben wird.

> Gilt das dann global für alles?

Ja, wenn der Wert mit der Option -D bei jedem Compileraufruf übergeben
wird.

> Kann dann ein Warning das im delay_h kein Takt angegeben ist ignoriert
> werden?

Ja, aber dann wird das Programm mit hoher Wahrschinlichkeit nicht wie
erwartet funktionieren.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Es muß heißen F_CPU, nicht F_Cpu.

von IchWarsNicht (Gast)


Angehängte Dateien:

Lesenswert?

katastrophenheinz schrieb:
>>Kann dann ein Warning das im delay_h kein Takt angegeben ist ignoriert werden?
>
> NEIN!
>
> Zeig mal Makefile

MakeFile wie gewünscht im Anhang...

von Yalu X. (yalu) (Moderator)


Lesenswert?

IchWarsNicht schrieb:
> MakeFile wie gewünscht im Anhang...

Da heißt das Ding aber F_OSC und nicht, wie von _delay* erwartet, F_CPU.

von katastrophenheinz (Gast)


Lesenswert?

... wie oben schon gesagt, die Präprozessor-Konstante heißt F_CPU, also 
in deinem Makefile anzupassen:

CFLAGS += -DF_CPU=$(F_OSC)

Danach sollte auch die Warning auch weg sein

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

katastrophenheinz schrieb:
> ... wie oben schon gesagt, die Präprozessor-Konstante heißt F_CPU, also
> in deinem Makefile anzupassen:
>
> CFLAGS += -DF_CPU=$(F_OSC)
>
> Danach sollte auch die Warning auch weg sein

Und wenn du die Variable auch gleich F_CPU nennst, kennt sich auch 
gleich jeder aus...

von IchWarsNicht (Gast)


Lesenswert?

Michael Reinelt schrieb:
> katastrophenheinz schrieb:
>> ... wie oben schon gesagt, die Präprozessor-Konstante heißt F_CPU, also
>> in deinem Makefile anzupassen:
>>
>> CFLAGS += -DF_CPU=$(F_OSC)
>>
>> Danach sollte auch die Warning auch weg sein
>
> Und wenn du die Variable auch gleich F_CPU nennst, kennt sich auch
> gleich jeder aus...

so jetzt muss ich wieder was fragen..
ich habe einen 20mhz "gefused". Heißt das ich muss in meinem makefile 
F_OSC benutzen? sprich F_OSC bei externem quarz und F_CPU für die clock 
über den µc??


merci
IWN

von Karl H. (kbuchegg)


Lesenswert?

nein,
es heisst immer F_CPU

... weil dieser Name dann auch im Programm benutzt wird, um diverse 
Berechnungen damit zu machen


Was du an dieser Stelle im Makefile erreichst ist, dass du ein
1
#define F_CPU  deine_Taktfrequenz

definierst. Nur eben nicht, indem es direkt in den Code geschrieben 
wird, sondern indem man es dem Compiler mitgibt, wenn er eine *.c Datei 
compiliert. Aber der Effekt ist der gleiche.
Fast der gleiche: denn einen Unterschied gibt es.
WIrd die Angabe im Makefile gemacht, dann ist somit garantiert, dass 
alle *.c Dateien mit diesem Wert für F_CPU compiliert werden. Hat jedes 
*.c File sein eigenes #define, dann ist das nicht garantiert.

von IchWarsNicht (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> WIrd die Angabe im Makefile gemacht, dann ist somit garantiert, dass
> alle *.c Dateien mit diesem Wert für F_CPU compiliert werden. Hat jedes
> *.c File sein eigenes #define, dann ist das nicht garantiert.

das hats auf den Punkt gebracht! werd also mal F_CPU im makefile 
übergeben und ausschau nach allen eingebundenen projektdateien halten 
die nicht das ifdef. haben.


vielen dank nochmal an alle!!

gruß
IchWarsWirklichNicht

von Thomas E. (thomase)


Lesenswert?

IchWarsNicht schrieb:
> so jetzt muss ich wieder was fragen..
> ich habe einen 20mhz "gefused". Heißt das ich muss in meinem makefile
> F_OSC benutzen? sprich F_OSC bei externem quarz und F_CPU für die clock
> über den µc??
Nein.
Das interessiert den Compiler doch nicht, wie der Takt gemacht wird. Ob 
das von intern oder extern kommt oder ob da einer trommelt, ist ihm 
völlig egal. Er will nur wissen wie schnell.

Ausserdem sind das 20MHz und nicht 20 millihertz.

mfg.

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.