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
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.
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?
Sorry, es muesste heissen: Also wenn ich Bit 15 besreiben will, muss ich auch das Bit 11 auch beschreiben, obwohl es "read-only" ist.
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.
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.