Zusammenfassen von Bits in IAR für AVR

Gast #2137895
Lesenswert?

Hallo,

folgendes Problem:

Es sind an einem AVR über mehrere Ports verteilt LEDs angeschlossen. Die 
LEDs bilden jedoch physikalisch eine Balkenanzeige. Um den Code auf 
verschiedenen Hardware'en an denen die LEDs der Balkenanzeige an 
unterschiedlichen Portpins angeschlossen sind leichter anpassen zu 
können, hab ich mir folgendes gedacht.

Setzen mehrere LEDs mit einem Befehl:
1
Balkenanzeige = 0x83;

Setzen der äußerst rechten LED (wobei die anderen unberührt bleiben):
1
Balkenanzeige.LED0 = 1;
oder der 5ten LED:
1
Balkenanzeige.LED4 = 1;

In einem Headerfile sollen die einzelnen LEDs bestimmten Ports 
zugewiesen werden, so das beim Portieren nur die Portpin Zuordung 
geändert werden muss.
Portbits werden im IAR std.mäßig z.B. so gesetzt
1
PORTE.Bit0 = 1;

Was ich nun bräuchte wäre eben eine struct, union, oder sowas welche 
eben die oben genannten Bedingungen erfüllt...

Danke.
Gast #2137952
Lesenswert?

Ja, das hab ich auch so getan. ABER das hat zur Folge das das Setzen der 
LED Nr.8 eben 8 Takte braucht, das der LED Nr.1 nur 2... Aufgrund 
dessen, daß der Compiler eben erst die 1 um soundsoviel (je nach Stelle 
im Register) schiebt.

Switch Case wäre noch ne Möglichkeit... finde ich aber auch etwas 
unelegant.

Kann man nicht irgendwie ein Pointerarray erstellen, welches auf die 
einzelnen Bits definiert wird?

in der Art:
1
*Bit0 = PORTC.BIT0;

???

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