Forum: Compiler & IDEs Auswahl der Hardware durch Präprozessor


von jack (Gast)


Lesenswert?

Hallo,
benötige etwas hilfe.
Ich möchte gerne für die Initialiesierung verschiedener Hardware
die Auswahl durch den Präprozessor durchführen. Ist dies in der
Form möglich?

void init_port(void)
{
  #if defined(_AVR_ATmega88pa_)
  DDRB = 0x00;
  PORTB = 0xFF;
  DDRC = 0x03;
  PORTC = 0x4F;
  DDRD = 0x00;
  PORTD = 0xFF;
  #else      //Atmega644/644pa
  DDRA = 0x07;
  PORTA = 0xF8;
  DDRB = 0x01;
  PORTB = 0xFF;
  DDRD = 0x00;
  PORTD = 0xFF;
  PORTC = 0x03;
  #endif
}

bekomme beim Compilieren die Meldung
DDRA undeclared

Ich danke für eure Hilfe
  jack

von Floh (Gast)


Lesenswert?

#include <avr/io.h> vergessen?

von Hmm (Gast)


Lesenswert?

>...etwas hilfe.

Na mal sehen.

Was machst Du denn im Normalfall, also ohne die Absicht die Du nun hast,
wenn diese Fehlermeldung kommt?

von jack (Gast)


Lesenswert?

io.h ist eingebunden, dies ist nur ein Auszug  und wenn ich den
unteren Teil für den Atmega644 lösche, läuft es korrekt durch.
Ich wollte  eine Hardware-Auswahl die durch Prozessor-Auswahl im 
Makefile
den jeweiligen Textteil compiliert.

von Karl H. (kbuchegg)


Lesenswert?

jack schrieb:
> io.h ist eingebunden, dies ist nur ein Auszug  und wenn ich den
> unteren Teil für den Atmega644 lösche, läuft es korrekt durch.
> Ich wollte  eine Hardware-Auswahl die durch Prozessor-Auswahl im
> Makefile
> den jeweiligen Textteil compiliert.

Ja, schön. Das wissen wir schon.

Aber dein Ausschnitt reicht einfach nicht, um auszutüfteln was da vor 
sich geht und warum in diesem Fall io.h dann doch nicht eingebunden 
wurde.

von jack (Gast)


Lesenswert?

danke, werde morgen ein Beispiel anhängen.

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Wird sowas gesucht?
1
#if defined (__AVR_ATtiny2313__) || defined (__AVR_ATmega168__) || defined (__AVR_ATmega8__) || defined (__AVR_ATmega32__)
2
...
3
#elif defined (__AVR_ATtiny24__) || defined (__AVR_ATtiny84__)
4
...
5
#endif

mfg

von jack (Gast)


Lesenswert?

ja, das ist die Lösung von pappnase.
Ich danke allen für die Hilfe.
  mfg

von jack (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
war leider zu schnell.
Habe nun ein Beispiel und wie man
hier sieht wird der Teil für port_init
nicht compiliert. Im Makefile habe ich
den atmega88pa ausgewählt.

von jack (Gast)


Angehängte Dateien:

Lesenswert?

hier sieht man es besser.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

jack schrieb:
> Habe nun ein Beispiel und wie man
> hier sieht wird der Teil für port_init
> nicht compiliert. Im Makefile habe ich
> den atmega88pa ausgewählt.

Glaubst Du, dass das kleingeschriebene pa in _AVR_ATmega88pa_ korrekt 
ist?

von jack (Gast)


Lesenswert?

Danke Frank.
wie heist das Sprichwort
"man sieht den Wald vor lauter Bäumen nicht".

  mfg
  jack

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.