ARM Assembler: ein Bit setzen

Gast #285346
Lesenswert?
• ▲
▼
Hallo,

ich lerne ARM assembler am AT91SAM7S64 und stehe jetzt vor einem
Problem.

Die Peripherie wird ueber "memory mapped" Registers gesteuert. Also,
in meinem Fall, will ich den USB Port ansteuern. Dafuer muss ich in
einer Speicherzelle Bits setzen oder zuruecksetzen.

Bis jetzt habe ich nur auf folgendes zum Setzen des Bits 1 gekommen:

Die Zelle in R1 einlesen
OR R2, R1,0x1
R2 zurueck in die Zelle schreiben.

Das Problem, das ich dabei habe, ist, dass USB port auch einige BITs
inzwischen aendern koente und ich die Veraenderungen verliere.

Gibt es wie bei AVR einen Befehl, mit dem man ein Bit in einem Zug
aendern kann?

Danke,

Roman
Gast #285347
Lesenswert?
• ▲
▼
Nein.

Wenn das betreffende Register keine set/clr-Adressen hat, wie bei den
Ports, dann müssen dafür die Interrupts abgeschaltet werden.

Ist übrigens bei AVRs nicht anders, wenn man mal die ersten 32 Bytes
verlassen hat.
Gast #285348
Lesenswert?
• ▲
▼
Hallo, danke fuer die Antowrt.

Ich bin jetzt aber verwirrt. z.B. Seite 468 UDP_CSRx register.


http://www.atmel.com/dyn/resources/prod_documents/doc6175.pdf


Das zweite Byte des Registers (Bits 8-15) hat Bit 11 als "read-only"
und Bit 15 "read/write". Also wenn ich Bit 15 besreiben will, muss
ich auch das Bit 15 auch beschreiben, obwohl es "read-only" ist.

Was passiert, wenn man ein "read-only" Bit beschreibt? nichts?
Gast #285350
Lesenswert?
• ▲
▼
Was immer du in read-only reinschreibst, es ändert sich nichts. Das
heisst nicht, dass die Kiste explodiert wenn du das machst.

Übrigens ist das bei den Bitbefehlen von AVR oder 8051 auch nicht
anders. Obzwar diese Prozessoren eigens Befehle für Bitmanipulation
haben, lesen und schreiben auch die immer nur ganze Bytes, per
"laden", "setzen/löschen", schreiben". Nur in einem Befehl.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.