www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ab Register r26 kein Benutzerzugriff?


Autor: Haar Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
habe leider sehr viele Register zu belegen, siehe unten
Aber bei r26 bis r37 meckert der Compiler
"Register already defined by the .DEF directive."

.def temp = r16
.def tempA = r17
.def tempB = r21
.def temp2 = r22
.def temp3 = r23
.def aaa = r24
.def bbb = r25
.def links = r26
.def rechts = r27
.def null = r28
.def eins = r29
.def zwei = r30
.def drei = r31
.def vier = r32
.def fuenf = r33
.def sechs = r34
.def sieben = r35
.def acht = r36
.def neun = r37

welche soll ich denn sonst nehmen?

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

seit wann hat nen Avr soviele Register?


Gruß,
Dirk

Autor: SiO2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
siehe <prozessor>.inc

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
was ist den das für ein avr.Hätt ich auch gern mit so vielen
Registern.
bei mir ist bei r31 schluss.
gruss
Andy

Autor: HerrMueller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Register 26/ 27 28/29 30/31   sind als X Y und Z Register in der
Include Datei vereinbart. Man kann sie trotzdem benutzen. Die
Compilermeldung ist nur eine Warnung.   Die höheren Register sind mir
auch nicht bekannt ( bei AVR)

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Register ab r32 aufwärts dürften nur sehr wenige Controller haben.
Ansonsten ist das nur eine Warnung, dass das Register schon mit einem
anderen Namen belegt ist. Brauchst du im Prinzip nicht zu beachten,
solange du nicht die Register mit beiden Namen ansprichst und so
Durcheinander schaffst.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du so viele "Variablen" brauchst, warum versuchst du es nicht mit
SRAM? Viele AVRs (aber nicht alle) verfügen über SRAM. Das Datenblatt
des jeweiligen AVRs gibt dir sicherlich Auskunft darüber.

...

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi. Du hast ja auch noch Register 0-15. Die kannst auch nehmen. Man muß
halt schaun, da bei denen nicht alle Befehle funktionieren.

Ab r26 sind die Register für die Pointer (xl,xh; yl,yh; zl,zh)schon
vordefiniert. Und deshalb sollte man sie auch nicht für andere Zwecke
nehmen.

Warum speicherst du die Register nicht ins Sram ab und liest sie dann
mit einem temp register aus?

Das würde dann so aussehn:



.def temp   = r16
.def tempA  = r17
.def tempB  = r21
.def temp2  = r22
.def temp3  = r23
.def aaa    = r24
.def bbb    = r25

.equ links  = 0x0060
.equ rechts = 0x0061
.equ null   = 0x0062
.equ eins   = 0x0063
.equ zwei   = 0x0064
.equ drei   = 0x0065
.equ vier   = 0x0066
.equ fuenf  = 0x0067
.equ sechs  = 0x0068
.equ sieben = 0x0069
.equ acht   = 0x006A
.equ neun   = 0x006B


Dann kannst du es so machen:

lds temp2,0x0060  ;aus dem Register laden
;irgenetwas berechnen mit temp2
sts 0x0060,temp2  ; und den Wert wieder speichern


Wäre vielleicht sinnvoller

Gruß Florian

Autor: Haar Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach es gibt nur 31 ?? was ist denn das für ein schrott? na werd wohl den
plan ändern.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wieso "nur" 31 Register? Auf welchen Prozessoren programmierst du denn
sonst so und wie viele haben die denn?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ach es gibt nur 31 ??

Nein, es gibt 32. Ziemlich viel, nicht?

> was ist denn das für ein schrott?

Hm? Die x86er im PC haben 4 (7, wenn man die Offset-Register
mitzählt).

Dir ist schon klar, daß Register nur da sind, um Operanden und mal kurz
ein Zwischenergebnis abzuspeichern und nicht als RAM-Ersatz für Dutzende
von Variablen?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ach es gibt nur 31 ?? was ist denn das für ein schrott? na werd
> wohl den plan ändern.

Hmmm... Da hast du wohl "die Rechnung ohne den Wirt gemacht"...

Vielleicht solltest du doch erstmal das Datenblatt lesen...

Wenn man erstmal verstanden hat, dass der Adressbereich

- 16 "dumme" Register (kein immidiate)
- 16 "bessere" Register (incl. Doppelregister/Pointer)
- 32 "hochwertige" (und "schnelle") I/Os (Bit-Zugriff möglich)
- 32 "schnelle" I/Os (Byte-Zugriff mit IN/OUT)
- bis zu 160 "blöde" I/Os (Extendet-I/O im SRAM-Bereich)
- internes SRAM
- externes SRAM via Speicherinterface

hat, dann sollte man damit auch klarkommen.

Welchen AVR benutzt du eigentlich?

...

Autor: Erkan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was ist denn das für ein schrott?
Wenn, dann hast Du Schrott in der Birne!
Mach Dich erst mal mit Lektüre vertraut und lerne die Grundlagen bevor
Du irgend wie bescheuert los legts.

Autor: Haar Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tschulduigung, ist natürlich kein schrott, ist mir mal eben
rausgerutscht :)

aber in der tat braucht man wohl extra sram. nun gut, die vielen
register kann ich mir ersparen, wenn ich den queltext ausweite und ein
bissl mehr "denke".

danke für die infos

Autor: Haar Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nutze den 90s8515 ohne sram

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: jornbyte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Haar Schneider
Wir haben alle mal angefangen. Nur das Datenblatt sollte man schon vor
dem Posten mal gelesen haben.

Autor: Haar Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber atmel ist schon was feines, ne?
hab vorher nur mit PIC zutun gehabt. Wahr sehr viel umständlicher
alles.
Wenn ich da an die Bank-wechsel denke und sie 1:4 Teilung des Taktes.
Da lob ich mir den AVR

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.