#defines in Schleifen verwenden (mit laufender Variable)

Gast #3948309
Lesenswert?

Hallo,

zur Übung möchte ich mehrere Portpins meines MC (ATMEGA328) als Eingang 
mit aktivierten Pull Up Widerständen setzen.

In der .h File definiere ich die einzelnen Pins/Ports:
1
//Eingang 1
2
#define BM_1_DDR    DDRD
3
#define BM_1_PORT    PORTD
4
#define BM_1_PIN    PIND
5
#define BM_1_BIT    3
6

7
//Eingang 2
8
#define BM_2_DDR    DDRD
9
#define BM_2_PORT    PORTD
10
#define BM_2_PIN    PIND
11
#define BM_2_BIT    2
12

13
//Eingang 3
14
#define BM_3_DDR    DDRB
15
#define BM_3_PORT    PORTB
16
#define BM_3_PIN    PINB
17
#define BM_3_BIT    1
18

19
//Eingang 4
20
#define BM_4_DDR    DDRC
21
#define BM_4_PORT    PORTC
22
#define BM_4_PIN    PINC
23
#define BM_4_BIT    1
in der .c file möchte ich die Eingänge setzen:
z.B Eingang 1:
1
BM_1_DDR &= ~(1 << BM_1_BIT);
2
BM_1_PORT |= (1<<BM_1_BIT);
Jetzt zu meiner Frage, gibt es eine Möglichkeit, die Eingänge in einer 
Schleife (z.B for Schleife i=1..4) zu setzen?
(Ich würde die Zahl in "BM_1_DDR" durch 2,3 bzw 4 ersetzen)


Danke für eure Hilfe,
Grüße,
Josef
Gast #3948400
Lesenswert?

Hallo,

danke für deine Antwort,

ich habe befürchtet, dass es so ist wie du schreibst.
Ich habe jedoch gehofft, dass es einen Trick bzw. Kniff gibt, das 
Problem trotzdem lösen zu können.

Grüße
#3948410
Lesenswert?

Gustav schrieb:

> zur Übung möchte ich mehrere Portpins meines MC (ATMEGA328) als Eingang
> mit aktivierten Pull Up Widerständen setzen.
>
> In der .h File definiere ich die einzelnen Pins/Ports:
[...]
> //Eingang 4
> #define BM_4_DDR    DDRC
> #define BM_4_PORT    PORTC
> #define BM_4_PIN    PINC
> #define BM_4_BIT    1
>
> in der .c file möchte ich die Eingänge setzen:
> z.B Eingang 1:
>
> BM_1_DDR &= ~(1 << BM_1_BIT);
> BM_1_PORT |= (1<<BM_1_BIT);
>
> Jetzt zu meiner Frage, gibt es eine Möglichkeit, die Eingänge in einer
> Schleife (z.B for Schleife i=1..4) zu setzen?
> (Ich würde die Zahl in "BM_1_DDR" durch 2,3 bzw 4 ersetzen)

Das geht natuerlich nicht, weil ein #define schon vom preprocessor 
"substituiert" wird (der eigentliche compiler sieht diesen schon gar 
nicht mehr). Du musst fuer die dynamischen Anteile Variablen benutzen.

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