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
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.
>Kann dann ein Warning das im delay_h kein Takt angegeben ist ignoriert werden?
NEIN!
Zeig mal Makefile
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.
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...
IchWarsNicht schrieb: > MakeFile wie gewünscht im Anhang... Da heißt das Ding aber F_OSC und nicht, wie von _delay* erwartet, F_CPU.
... 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
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...
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.