Forum: Mikrocontroller und Digitale Elektronik Kann man bei den Präprozessor ifs den verwendeten AVR-Typ erfragen?


von Max (Gast)


Lesenswert?

Wenn eine C-Datei kompiliert wird, dann liest ja erst mal der 
Präprozessor alles durch und führt die im zugewiesenen Befehle aus...
Aber: kann man z.B. #if MMCU == mega128 ... #endif benutzen oder kriegt 
der den Typ nicht von make übergeben (des kriegts ja per Commandline 
mitgeteilt)?
Und wie stehts mit der Quarzfrequenz und dem Stacktop (besonders bei 
Teilen mit xmem interessant)...

von Wayne (Gast)


Lesenswert?

Guckst du in die device specifischen Header-Files, z.B. iom32.h, da wird 
AVR_IOM32_H definiert. Evtl. reicht das für deine Zewcke.

von Max (Gast)


Lesenswert?

OK, danke das ist schonmal eine gute Nachricht (wenigstens das geht), 
aber wie stehts mit der Taktfrequenz (die steht soweit ich weiss im 
makefile), der stack is jetz nich so wichtig (wär aber halt perfekt).

von Hans M. (Firma: mayer) (oe1smc) Benutzerseite


Lesenswert?

#ifndef F_CPU
#define F_CPU 15999550
#endif

haengt wohl von der programmierumgebung ab, ob's definiert ist oder 
nicht.

von Karl H. (kbuchegg)


Lesenswert?

Hans Mayer schrieb:
> #ifndef F_CPU
> #define F_CPU 15999550
> #endif
>
> haengt wohl von der programmierumgebung ab, ob's definiert ist oder
> nicht.

Wobei ich ehrlich gesagt immer mehr dazu tendiere, ein nicht vorhandenes 
F_CPU als Fehler anzusehen und keinen Defaultwert dafür vorzusehen. Wenn 
man erst mal oft genug mit diesem Default auf die Schnauze gefallen ist, 
zieht man eine Fehlermeldung vor.

von Karl H. (kbuchegg)


Lesenswert?

Max schrieb:
> OK, danke das ist schonmal eine gute Nachricht (wenigstens das geht),
> aber wie stehts mit der Taktfrequenz (die steht soweit ich weiss im
> makefile)

sieh dir bitte den Compileraufruf an.
Alles was dort in der Commandline (beim gcc) mittels -D übergeben wird, 
steht dir im Code als vordefinierts Makro zur Verfügung.

Bei anderen Compilern heißt das Commandline Argument anders, aber einen 
derartigen Mechanismus kennt jeder Compiler.

Dann brauchst du hier nicht mehr lange fragen, was von der Commandline 
kommt und was nicht.

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.