mikrocontroller.net

Forum: Compiler & IDEs ARM Assembler: ein Bit setzen


Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...


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?

Autor: romanua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, es muesste heissen:

 Also wenn ich Bit 15 besreiben will, muss ich auch das Bit 11 auch
beschreiben, obwohl es "read-only" ist.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.