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