mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Register R0 - R31 bitweise adressierbar?


Autor: Patrick K. (unknown_artist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!


Trotz Google, SuFu und Handbuch finde ich keine Antwort auf meine Frage:
(Aus einem Uni-Int. Fragenkatalog zur Prüfungsvorbereitung, deswegen 
denke ich, dass diese Frage auf einen im Praktikum verwendeten ATmega16 
bezogen ist)

Welche der Folgenden register sind Bit-Adressierbar?

R0 - R31
PORTA - PORTD
SREG

...

PORTA- PORTD ist klar - Da kann ich ja sbic oder ähnliche Befehle direkt 
auf ein bestimmtes Bit anwenden.

SREG ist auch klar, ich kann ja das Carry bit etc, einzeln setzen,

Aber R0-R31 ?
Vermutlich nicht, sbic oder ähnliches lässt sich ja nicht drauf 
anwenden. Ist das dann das entscheidende Kriterium?

In einem 2007er Beitrag hat Falk Brunner geschrieben:

>Ihr irrt, eure Eminenz. Der AVR HAT bitadressierbare Register, nämlich
>die SFRs 0..31, auf welche die Befehle sbi, cbi, sbis, sbic anwendbar
>sind.

Das sind ja die Special Function Register, aber ich dachte, dass davon 
auch nicht alle Bitadressierbar sind?

Und die R0-R31 liegen ja im Lower-Ram mit der Byte Adressierung 00-7F, 
wovon laut meinem Skript mindestens mal Byte-Addr. 20 - 2F 
Bitadressierbar sind. Dazu gehören aber die R0-R7 nicht, die haben 
Adresse 00-07, darüber kommen noch drei "Bänke", die nicht genauer 
definiert sind, aber zufällig bis Adresse 1F gehen. Sind das meine 
Gesuchten R8-R31?
Demnach wären diese nicht bitadressierbar.

Im AVR Tutorial unter "BITMANIPULATION" gibts einen beispielcode :


>andi r16, 0b11110000    ; löscht Bits 0-3 in r16, andi ist identisch mit
>                        ; cbr funktioniert nur für die Arbeitsregister >r16-r31

Das würde ja aber bedeuten, dass sie hier doch bitadressierbar wären!?


Hoffe mir kann hier jemand weiterhelfen?

Vielen Dank und Grüße,

Patrick

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt drauf an wie man "Adressierbarkeit" definiert. Für GPRs gibt es 
jau die SBRC, SBRS Befehle, während es selbst für die SFRs, die im 
bitadressierbaren Bereich liegen, nicht möglich ist, zB Bit 0 von R0 zu 
speichern. Es kann lediglich eine 1 oder eine 0 gespeichert werden, 
nicht ein Variabler Wert.

Letztendlcih hängt die Frage auch daran, ob ein 1-Bit breiter Zugriff 
(im Sinne eines 1 Bit breiten Speicherinterfaces) in AVR überhaupt 
vorhanden ist, oder ob die Bit-Befehle lediglich eine API darstellen, um 
Bitzugriffe zu vereinfachen.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und die R0-R31 liegen ja im Lower-Ram mit der Byte Adressierung 00-7F,
> wovon laut meinem Skript mindestens mal Byte-Addr. 20 - 2F
> Bitadressierbar sind. Dazu gehören aber die R0-R7 nicht, die haben
> Adresse 00-07, darüber kommen noch drei "Bänke", die nicht genauer
> definiert sind, aber zufällig bis Adresse 1F gehen. Sind das meine
> Gesuchten R8-R31?
Die AVRs kenne ich nicht (gut), aber dafür den 8051/52 und dessen 
Derivate. Dort gibt es vier Bänke á acht Registern R7-R0, aber beim 
AVR gibt es "nur" eine Bank, dafür mit R31-R0.
Und die laut deinem Skript bitadressierbaren Bytes von 0x20-0x2F sind 
exakt diejenigen, die ein 805x bit-addressieren kann.
Daher werfe ich mal die Frage in den Raum: Kann es sein, dass du einen 
Skript-Wirrwarr hast?

Ralf

Autor: Patrick K. (unknown_artist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tatsächlich, wenn man im Bildverzeichnis (ganz hinten im Skript!) 
nachsieht, bezieht sich das Modell auf einen ATmel 89Cx51, das Kapitel 
heißt "Der ATmega8" und im Praktikum haben wir einen ATmega16 verwendet.

Nicht besonders gut gelungen ..

Ok. . . jetzt weiß ich gar nichts mehr.

Kan man also nicht pauschal sagen?
Definition gabs bei uns keine "Offizielle". Ich bin auch nicht der 
Einzige, der diese Frage nicht beantworten kann ...
Möglicherweise hat der Fragensteller selbst keine Ahnung.


Nur mal nebenbei - kann ich einen 89Cx51 oder eine 805x eigentlich auch 
mit der gleichen Assemblersprache wie beim AVR programmieren?

Autor: Einer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Konstantin K. (mikrokonst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist eigentlich an den R0-R15 anders als an R16-R31? Und warum werden 
im Assembler meistens (oder nur?) R16-R31 verwedet? Kennt jemand eine 
Antwort, ich finde irgendwie nichts.

Autor: Ferkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewig nichts mehr in Assembler gemacht, aber versuche doch einmal ADD 
r5,#10.
Oder sieh Dir LPM oder MUL an.

Autor: Mikki Merten (mmerten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht eigentlich alles im Handbuch ;)
R16-R31 erlauben zusätzliche Bitmanipulation und direkte Adressierung.
bei den Registerpaaren R25:R24 R27:R26 R29:R28 R31:R30 gibt`s noch 
zusätzliche 16Bit Befehle

Autor: AVRnixblicker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Konstantin K.
hier:
http://www.atmel.com/dyn/resources/prod_documents/...

Weiß jemand, in welchen AVR-CPUs die neuen Befehle
LAC, LAS, LAT und XCH zur Anwendung kommen?
Xmega-CPUs?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Weiß jemand, in welchen AVR-CPUs die neuen Befehle
>LAC, LAS, LAT und XCH zur Anwendung kommen?

Habe ich mich auch schon gefragt.

>Xmega-CPUs?

Die Befehle tauchen weder im A- noch im D-Manual auf.

Wer weiss, was ATML da vorhat?

MfG Spess

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.