mikrocontroller.net

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


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)...

Autor: Wayne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Hans Mayer (Firma: mayer) (oe1smc) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#ifndef F_CPU
#define F_CPU 15999550
#endif

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.