mikrocontroller.net

Forum: Compiler & IDEs Präprozessor - MCU-Typ


Autor: CAnfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute, ich hab mal eine Frage zum präprozessor in Zusammenhang mit 
AVR-Studio. Ich würde gerne bestimmte #define-Anweisungen 
Prozessorabhängig setzen, also z.B.

#if MCU_Typ = "mega8"
   #define MeinPin 5
#else
   #define MeinPin 3
#endif

Nun stellt man ja im AVR-Studio einen Prozessortypen ein, aber wie heißt 
das passende #define dazu (damit ich den porzessor nciht nochmal extra 
in meinem Quelltext definieren muß), und muß ich mega8 in 
Anführungszeichen setzen?

Wahrscheinlich bin ich nur wieder zu blind.. :-)

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CAnfänger wrote:

> #if MCU_Typ = "mega8"
>    #define MeinPin 5
> #else
>    #define MeinPin 3
> #endif
>
> Nun stellt man ja im AVR-Studio einen Prozessortypen ein, aber wie heißt
> das passende #define dazu (damit ich den porzessor nciht nochmal extra
> in meinem Quelltext definieren muß), und muß ich mega8 in
> Anführungszeichen setzen?

mit #if kannst du nur integer vergleichen, z.B.:
#if  MAX < 1000  
   #define  MIN  100
#else
   #define  MIN  200
#endif

In deinem Fall brauchst du sowas:
#ifdef MCU_TYP_MEGA8
   #define MeinPin 5
#else
   #define MeinPin 3
#endif

oder so
#define TYP_MEGA8 8
#define TYP_MEGA16 16

#define MCU_TYP TYP_MEGA8

...

#if MCU_TYP == MEGA8
   #define MeinPin 5
#else
   #define MeinPin 3
#endif


MFG :-)

Autor: CAnfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, soweit hab ich es erstmal verstanden.. Ich meinte eben, ob man auf 
die Einstellung im AVR-Studio zugreifen kann, also ob es schon ein 
fertiges #define für den Prozessortyp gibt - denn beim compilieren steht 
ja da auch eine Option "-mmcu=atmega8", weil man das in der Umgebung so 
eingestellt hat..

Also anders gefragt - muß ich MCU_TYP_MEGA8 aus dem o.g. Beispiel selbst 
definieren oder ist das immer definiert, d.h kann ich auf etwas 
prozessorspezifisch vordefiniertes zurückgreifen, wie z.B. auf die 
Registernamen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#ifdef __AVR__ATmega8__
...
#elif defined(__AVR__ATmega88__)
...
#else
#  error "Unknown MCU type."
#endif

Autor: CAnfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sowas meinte ich.. Und wo sehe ich, welcher Controller welches 
define hat? gibt es da ein Liste irgendwo?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: CAnfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, genau das meinte ich.

Autor: CAnfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg Wunsch

:-) Mit dem einen Unterstrich mehr wolltest Du mich wohl aufs Glatteis 
führen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber nach dem dritten AVR ist das Schema sowieso klar, und du musst
nicht mehr nachgucken.

Die Liste aller Präprozessor-Makros erhält man übrigens mit:
touch foo.c
avr-gcc -mmcu=atmega8 -dM -E foo.c | sort
rm -f foo.c

> Mit dem einen Unterstrich mehr wolltest Du mich wohl aufs Glatteis
> führen?

Sorry, Flüchtigkeitsfehler.

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.