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?
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
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)
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.
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. ...
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
ach es gibt nur 31 ?? was ist denn das für ein schrott? na werd wohl den plan ändern.
wieso "nur" 31 Register? Auf welchen Prozessoren programmierst du denn sonst so und wie viele haben die denn?
> 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?
> 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? ...
> 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.
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
@ Haar Schneider Wir haben alle mal angefangen. Nur das Datenblatt sollte man schon vor dem Posten mal gelesen haben.
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
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.