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 ?
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.