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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.