Forum: Mikrocontroller und Digitale Elektronik Atmega2560 ASM Pins im oberen Speicherbereich adressieren


von Heini (Gast)


Lesenswert?

Hallo, es handelt sich um einen Atmega 2560 und Assembler. Ich möchte 
einzelne Pins im PortL in Assembler steuern. Der PortL liegt im oberen 
Speicherbereich, daher geht das mit SBI und CBI leider nicht. Gibt es im 
oberen Speicherbereich auch eine Möglichkeit einzelne Pins direkt 
anzusprechen oder muss ich zwingend mit LDS das gesamte Register 
einlesen, den entsprechenden Pin setzen bzw. löschen und wieder mit STS 
ins PortL-Register speichern?

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


Lesenswert?

Letzteres

von c-hater (Gast)


Lesenswert?

Heini schrieb:

> Gibt es im
> oberen Speicherbereich auch eine Möglichkeit einzelne Pins direkt
> anzusprechen oder muss ich zwingend mit LDS das gesamte Register
> einlesen, den entsprechenden Pin setzen bzw. löschen und wieder mit STS
> ins PortL-Register speichern?

Zwingend einlesen musst du nicht, jedenfalls nicht bei jedem Pinwackeln, 
schreiben allerdings schon.

Das Einlesen kann man umgehen, indem man den letzten Zustand des Ports 
in einem Register hält. Ob das sinnvoll ist, hängt natürlich davon ab, 
wie häufig sich was ändern soll/muss.

von Heini (Gast)


Lesenswert?

c-hater schrieb:
> Zwingend einlesen musst du nicht, jedenfalls nicht bei jedem Pinwackeln,
> schreiben allerdings schon.
>
> Das Einlesen kann man umgehen, indem man den letzten Zustand des Ports
> in einem Register hält. Ob das sinnvoll ist, hängt natürlich davon ab,
> wie häufig sich was ändern soll/muss.

Ja, das war jetzt nur beispielhaft mit dem immer Einlesen. Okay, das 
habe ich mir schon fast gedacht dass ich das nur mit einer 
Bit-Maskierung machen kann.
Danke für die Antwort

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.