Forum: Compiler & IDEs hilfe beim präprozessor


von jack (Gast)


Lesenswert?

hallo,
versuche gerade in meinem programm zwischen atmega8 und atmega16 den 
port für meine anzeige zu wechseln.
#if defined(atmega8)
  #include <avr\iom8.h>
  #define Portdisplay     PORTC
#elif defined(atmega16)
  #include <avr\iom16.h>
  #define Portdisplay     PORTA
#endif
leider bekomme ich eine fehlermeldung, dass mein portdisplay nicht 
bekannt ist.
könnte mir jemand helfen

  besten dank
    jack

von Uwe .. (uwegw)


Lesenswert?

Aber atmega8 ist irgendwo definiert?
Wenn keine der beiden Bedingungen wahr ist, wird auch nichts für 
Portdisplay      definiert. Ich würde da noch einen else-Teil einfügen, 
der in diesem Fall nen #error ausgibt.

Falls du diese Konstanten gar nicht selbst definierst, sondern diese 
Information aus dem Makefile (MCU=...) kommen soll: Diese Angabe im 
makefile legt die Konstanten
1
__AVR_ATmega8__
 bzw.
1
__AVR_ATmega16__ an.

Und die ioxxx.h sollte man auch nie direkt includen, sondern nur die 
io.h. Die wählt dann auch über so eine Precompiler-Weiche die richtige 
Datei aus.

von jack (Gast)


Lesenswert?

danke Uwe,
dachte das ich die schreibweise wie im makefile
verwenden muss oder kann.

   jack

von Gast (Gast)


Lesenswert?

so ist es ganz hübsch...

[c]
#if defined (_AVR_ATmega8_)
   #define PORTDISPLAY PORTA
#elif defined (_AVR_ATmega16_)
   #define PORTDISPLAY PORTB
#else
   #error Nur ATMega8 und 16 werden unterstützt
#endif

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.