Forum: Mikrocontroller und Digitale Elektronik Offset bei Pins / avr gcc


von Pumba (Gast)


Lesenswert?

Hallo,

ich habe derzeit 3 Leds an PORTA0-3 angeschlossen.

Beschrieben haben ich diese mit
PORTA = i; // i= 0...7

Nun muss ich Leds auf die letzten 3 Pins verschieben, da ich die 
Funktionen der anderen Pins benötige.

Wie geht es nun am einfachsten, dass ich mit den Wert 0-7 nur die 
letzten 3 Pins anspreche?

von Oldie (Gast)


Lesenswert?

Mit linksschieben.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

oder rechtsschieben durch carry.

von isidor (Gast)


Lesenswert?

Pumba schrieb:
> ich habe derzeit 3 Leds an PORTA0-3 angeschlossen.

Das dürfte schwierig gewesen sein, drei LEDs an vier Ports ....

von Pumba (Gast)


Lesenswert?

So

LED_PORT = i<<5;

`?

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

PORTA |= (i<<5);

von Oldie (Gast)


Lesenswert?

Könnte hinhauen.
Wie hast du vorher PORTA-3..7 vor Veränderung bei der LED-
Ausgabe geschützt?
Das musst du jetzt natürlich für PORTA-0..4 veranstalten.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Pumba schrieb:
> LED_PORT = i<<5;

Wenn Du es so machst kannst Du die anderen PortBits kaum für was anderes 
verwenden, da Du sie alle immer auf Null setzt.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

LED_PORT = (LED_PORT & 0x1f) | newdata << 5;

sonst führt ein normales OR früher oder später zu Dauerleuchten der 
LED's.

von Oldie (Gast)


Lesenswert?

Besser: PORTA = (PORTA & 0x1F) | (i<<5);

Sonst lässt sich eine 1 an PORTA-5..7 nicht mehr zurücksetzen.

von Oldie (Gast)


Lesenswert?

Dennis Heynlein war 1 Minute schneller... ;-)

von Pumba (Gast)


Lesenswert?

Würde behaupten, so reicht es leider nicht aus. Muss ich doch wohl eine 
eigene Logik einbauen?, wann welche Led leuchtet?

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.