mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ein unklarer Befehl


Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi, ich verstehe den folgenden Befehl nicht so ganz

ldi r16, RAMEND
out SPL, r16

da wird das Register mit ramend geladen und dann soll es das niedrige 
byte vom RAM ausgeben.

aber was ist dieses RAMEND??

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andi wrote:
> aber was ist dieses RAMEND??

Die Adresse an dem das RAM fertig ist, also die höchste Adresse die vom 
RAM belegt ist.

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
RAMEND wird in der Include-Datei gesetzt, die zum verwendeten AVR 
gehört.
Mit diesen Zeilen wird der Stackpointer gesetzt, der üblicherweise nach 
unten wächst, deshalb fängt er am Ende an ;-)

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also der befehl bewirkt quasi nur, dass ich ab nun unterprogramme 
aufrufen kann, versteh ich das richtig?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Und Interrupts.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na gut. danke euch allen

Autor: Martin ... (xeox) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte das bei 8-bit prozessoren nicht so eingegeben werden..?

ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16

lg
xeox

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin ... wrote:
> sollte das bei 8-bit prozessoren nicht so eingegeben werden..?

Kommt drauf an, ob der Controller mehr oder weniger 256Bytes RAM hat 
(bzw. ob der Stackpointer 8 oder 16bit groß ist, denn bei neueren AVRs 
ist der Stackpointer auch bei Controllern mir <128Bytes RAM teilweise 
16bit groß, denn viele AVRs gibt es je nach Typ z.B. mit 128/256/512 
Bytes RAM und bei denen ist der Pointer dann immer 16bit groß).

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>sollte das bei 8-bit prozessoren nicht so eingegeben werden..?

Nur wenn der RAM > 256 Bytes ist.

MfG Spess

Autor: Martin ... (xeox) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur wenn der RAM > 256 Bytes ist.
eher >= 256 bytes (256=0x0100), was bei 90% der cpu' der fall ist.. ;)

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin ... wrote:
>> Nur wenn der RAM > 256 Bytes ist.
> eher >= 256 bytes (256=0x0100), was bei 90% der cpu' der fall ist.. ;)

Stimmt auch nicht ganz, siehe was ich geschrieben habe. Dazu kommt auch 
noch, dass der RAM nicht bei 0 beginnt.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

OK. Dann ersetzt 'RAM' mit 'Data Memory'.

MfG Spess

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Ich muss mich auch selbst noch korrigieren:
SPH existiert anscheinend doch nur, wenn er gebraucht ist:
Note that the data space in some implementations of the AVR architecture 
is so small that only SPL is needed. In this case, the SPH Register will 
not be present.
Es stört aber nicht, SPH immer zu beschreiben, das macht auch der GCC 
so. Dann ist man wenigstens auf der sicheren Seite, und man muss weniger 
beachten, wenn man die Software auf einem anderen AVR verwendet.

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.