F_Cpu "nur" im Makefile reicht aus?

Moderator #3324401
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.
Gast #3324990
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
#3325015
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.
Gast #3325034
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
#3326281
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.

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