hilfe beim präprozessor

Gast #826288
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
#826294
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.
Gast #826386
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren