Forum: Compiler & IDEs GPIORx Register im ATmega88


von Ganymed (Gast)


Lesenswert?

Im ATmega88 gibt es die drei Mehrzweck-
Register GPIOR2:0.

Welche Vor- oder Nachteile hat der
Einsatz dieser Register im Vergleich
mit Variablen die man selbst deklariert ?

von Nico E. (masta79)


Lesenswert?

Die Register liegen im IO-Space, das heisst du kannst da z.B. mit den 
Bit-Befehlen drauf zugreifen, also SBI/CBI. Damit sind die für Flags 
sehr gut zu gebrauchen.

Direkt lesen/schreiben des ganzen Registers geht dafür nur via IN/OUT.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nico Erfurth schrieb:
> Die Register liegen im IO-Space, das heisst du kannst da z.B. mit den
> Bit-Befehlen drauf zugreifen, also SBI/CBI.

CBI/SBI gehen leider nur für GPIOR0, GPIOR1/2 liegen dafür bereits
zu weit oben.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:

> CBI/SBI gehen leider nur für GPIOR0, GPIOR1/2 liegen dafür bereits
> zu weit oben.

Dito für SBIS/SBIC und IN/OUT das geht nur bit GRIOR0. LD*, ST* gehen 
auf allen SFRs.

GPIOR0 ist insbesondere interessant für globale Flags. CBI und SBI 
arbeiten atomar, man kann also problemlos Zustände mit ISRs austauschen.

Johann

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:

> Dito für SBIS/SBIC und IN/OUT das geht nur bit GRIOR0.

Nö, IN und OUT gehen auch auf GPIOR1/2, die sind immer noch im IO
address space, nur eben nicht in der unteren Hälfte, die mittels
CBI/SBI/SBIS/SBIC erreichbar ist.

von Ganymed (Gast)


Lesenswert?

Schon mal schönen Dank an alle.
Das mit den globalen Flags
werde ich mal testen.

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.