Forum: Mikrocontroller und Digitale Elektronik Pointer SRAM?


von Thomas O. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe ein kleines Problem und hoffe das mir jemand helfen kann. Ich habe
im SRAM einige Bitfolgen abgelegt die ich für die Ansteuerung eines
Schrittmotors benötige. Ich möchte nun dem AVR mittels 4 Eingänge
Steuersignale zuführen z.b. Links/Rechts(Vollschritt)
Links/Rechts(Halbschritt).

Deswegen wäre es nötig mich im SRAM vor und zurück zu bewegen. Habe in
der Hilfe folgende Lösung gefunden aber es ist ja so das ich nicht im
Vorraus weiß ob ich hoch oder runterzählen muss. Ich müsste also erst
den Pointer erhöhen bzw. verringern und dann den Wert einlesen.

ldi r28,$60     ;Setze Pointer auf SRAM-Anfang
ld r0,Y+        ;Lade SRAM-Wert in Register0 und erhöhe Y-Pointer um 1

von TravelRec. (Gast)


Lesenswert?

Nimm einen Pointer, X Y oder Z. Nimm ein zusätzliches Register. In
dieses Register schreibst Du den "Offset" und addierst diesen auf den
Pointer, etwa so:

clr Null         ;Hilfsregister


clr XH
ldi XL, $60
add XL, Offset
adc XH, Null     ;bei überlauf von XL auch XH um 1 erhöhen
ld  Temp, X

Mittels des Offsets kannst Du Dich 255 Bytes von der Basisadresse
wegbewegen, in den entsprechenden Routinen stellst Du die Werte für
den Offset ein. Die Namen "Offset", "Null" und "Temp" müssen
zuvor freilich definiert werden. Das Ganze funktiniert auch mit dem
Flash und mit dem Z-Pointer und der Anweisung LPM.

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
Noch kein Account? Hier anmelden.