Wo finde ich eine genaue Zuordnung, welche Rd bzw. Rr Register in den jeweiligen Adressierungsmodi erlaubt sind? Ich raufe mir seit einer Stunde an einer kleinen Programmpassage die Haare und bin mir nicht sicher, ob ich die richtigen Register benutze. Das AVR Handbuch von ATMEL schweigt sich da aus. Es sagt z.B. im LD Rd,Y+ ist Rd Zielregister. (S. 4-7) Auf Seite 4-9 steht dann: "Rd: R0-R31 or R16-R31, (depending on instruction)" ldi YL,low(2*data) ldi YH,high(2*data) loop: ld r0,Y+ tst r0 breq l1 .... rjmp loop l1: ret Obiger Code funktioniert nicht. ldi ZL,low(2*data) ldi ZH,high(2*data) loop: lpm tst r0 breq l1 .... adiw ZL,1 rjmp loop l1: ret Letztere Passage funktioniert.
LD und LPM heißen nicht nur anders, die machen auch was anderes. Schau es Dir nochmal gründlich in der Befehlsbeschreibung an. Peter
LD Rd,Y : Rd<-(Y) LPM : R0<-(Z) Ich sehe da keinen Unterschied, lediglich, daß im LPM Falle fest R0 als Ziel genommen wird, im ersteren Fall ein beliebiges Rd. Liegt der Unterschied vielleicht im Wort "Program memory". Kann ich damit nicht vom SRAM laden?
ld Load indirect rom data space lpm Load indirect from program memory >Liegt der Unterschied vielleicht im Wort "Program memory". Kann >ich damit nicht vom SRAM laden? Könnte sein ;-) Aus dem Flash (=program memory) bekommt Du Daten NUR mit lpm. Der AVR ist eine Havard-Architektur, d.h. Daten- und Programmspeicher sind komplett voneinander getrennt. Flash und RAM unterscheiden sich also nicht nur durch ihre Adresse, sondern grundlegend durch die Art des Zugriffs. Stefan
Stefan, Du schreibst: > ld > Load indirect rom data space ^^^ > lpm > Load indirect from program memory rom? ram? Havard? Harvard? Etwas genauer bitte. Im ersten Falle ist ein a oder o sicher wichtig. Im zweiten ein fehlendes 'r' vielleicht nicht so.
Oh sorry, gleich 2 Rechtschreibfehler. Load indirect rom data space sollte natürlich Load indirect from data space heissen. Ist übrigens ein Zitat aus der Befehlsliste. Macht richtig Spass, Dir Tips zu geben. Stefan
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.