Bitmaske berechnen

Gast #3072731
Lesenswert?

Hi,

ich würde gerne mit Hilfe des Präprozessors eine Bitmaske berechnen. Und 
zwar lege ich in einem Makro fest wie viele Pins ich benötige, z.B.:
1
#define DIMENSION 5

In einem weiteren Makro lege ich nun fest, ab welchen Pin begonnen wird 
z.B.
1
#define START 2

Konkret würde das jetzt bedeuten, dass ich Pins 2, 3, 4, 5 und 6 
"benötige". Der Port spielt hier jetzt mal keine Rolle und wird in einem 
weiteren Makro festgelegt.

Jetzt bräuchte ich ein Makro, welches mir eine dazu passende Bitmaske 
erstellt, um z.B. die DDR Register zu setzen. Für das o.g. Beispiel 
würde das jetzt lauten: 0b01111100.

Die mathematische "Formel" hierfür lautet:
1
#define BIT_PATTERN ((2 ^ DIMENSION) - 1) << START

Leider ist allerdings der "^" Operator als XOR und nicht als Potenz 
definiert. Ich bräuchte jetzt praktisch ein Potenzmakro für den 
Präprozessor. Könnt ihr mir da weiterhelfen?

Vielen Dank!

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