Forum: Mikrocontroller und Digitale Elektronik Bitmaske berechnen


von K. B. (Gast)


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!

von Fallobst (Gast)


Lesenswert?

Du benötigst den Schiebeoperator.

von troll (Gast)


Lesenswert?

> #define BIT_PATTERN ((1<<DIMENSION) - 1) << START

von Michael S. (mikel_x)


Lesenswert?

ich würde es mal so versuchen:

a = 2^(Dimension+Start)- 2^start

;-)

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.