Forum: Mikrocontroller und Digitale Elektronik XMega Arbeitsweise richtig verstehen


von Michael_SS (Gast)


Lesenswert?

Hallo.

Ich arbeite mich gerade in die XMega Familie von Atmel ein.
Ich hardere im Moment noch mit der Arbeitsweise dieser Controller.
Habe ich das richtig verstanden, dass für das Setzen eines einzelnen 
Bits immer das ganze Byte maskiert werden muss?

Ist es nicht möglich einzelne Bits zu adressieren?

Wo ist denn hier der Vorteil. Für eine Maskierung brauche ich doch mehr 
Maschinenzyklen als für eine Bitadressierung, oder nicht?

Kann mir jemand weiterhelfen?

Danke

von spess53 (Gast)


Lesenswert?

Hi

>Habe ich das richtig verstanden, dass für das Setzen eines einzelnen
>Bits immer das ganze Byte maskiert werden muss?

Was must du da maskieren? Einfach die Bits im OUTSET-Register des Ports 
setzen.

MfG Spess

von Michael_SS (Gast)


Lesenswert?

spess53 schrieb:
> Was must du da maskieren? Einfach die Bits im OUTSET-Register des Ports
> setzen.

So etwa: LEDPORT.OUTSET = 0xff?

von spess53 (Gast)


Lesenswert?

Hi

>So etwa: LEDPORT.OUTSET = 0xff?

Ich habe noch nicht mit XMegas gearbeitet. Aber genau so verstehe ich 
die Beschreibung im A-Manual.

MfG Spess

von Michael_SS (Gast)


Lesenswert?

unter BIT Adressierung verstehe ich sowas wie:

PORTC.5=1;

wenn ich mache PORTC=0x20; ist das keine BIT Adressierung mehr. Wenn ich 
nun ein anderen PORT PIN setzen will und den Zusatnd der anderen nicht 
kenne und unverändert lassen möchte, muss ich eine Maskierung 
durchführen. Und so scheint das auch bei dem XMegas der Fall zu sein.

von Se. Sk. (Gast)


Lesenswert?

Du kannst entsprechend die Bit-Maske verwenden. z.B.

PORTA.OUTSET = PIN2_bp;

usw ...

von Se. Sk. (Gast)


Lesenswert?

Pull-Up usw. geht mit dem Pin-Control-Register.

PORTA.PIN6CTRL = PORT_OPC_PULLUP_gc;

etc.

von Se. Sk. (Gast)


Lesenswert?

Se. Sk. schrieb:
> Du kannst entsprechend die Bit-Maske verwenden. z.B.
>
> PORTA.OUTSET = PIN2_bp;
>
> usw ...

Entschuldige, es muss heissen PINX_bm für die Maske, _bp ist die 
Bitposition. Diese kann man wie mans von den Atmegas kennt im Sinne von 
(1<<PINX_bp) verwenden.

Gruß

von spess53 (Gast)


Lesenswert?

Hi

>Wenn ich
>nun ein anderen PORT PIN setzen will und den Zusatnd der anderen nicht
>kenne und unverändert lassen möchte, muss ich eine Maskierung
>durchführen. Und so scheint das auch bei dem XMegas der Fall zu sein.

Stimmt nicht. Die XMegas haben dafür 3 Register:

OUTSET - Data Output Value Set Register
OUTCLR - Data Output Value Clear Register
OUTTGL - Data Output Value Toggle Register

Das Schreiben einer 1 an eine Bitposition dieser Register Setzt, Löscht 
oder Toggled das entsprechende Ausgangspin ohne die anderen Pins zu 
beeinflussen.

MfG Spess

von Peter D. (peda)


Lesenswert?

Auch der XMega kann die Bitbefehle SBI, CBI, SBIS, SBIC.
Dazu muß man die Ports nur in den IO-Space bis 0x1F mappen.


Peter

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.